diff --git a/R/panel.cbH.R b/R/panel.cbH.R new file mode 100644 index 0000000000000000000000000000000000000000..cc0052342d2dd435ddd2275739adf72c375211c4 --- /dev/null +++ b/R/panel.cbH.R @@ -0,0 +1,138 @@ +#' @name panel.cbH +#' @aliases panel.cbH +#' @export +#' @author Walmes Zeviani baseado na lista de discussão R-help. +#' @title Função para Intervalos e Bandas de Confiança com a Lattice +#' +#' @description Essa função permite representar intervalos de confiança +#' e bandas de confiança em gráficos do pacote lattice. +#' +#' @param y Valor central ou estimativa pontual. +#' +#' @param ly Limite inferior do intervalo/banda de confiança. +#' +#' @param uy Limite superior do intervalo/banda de confiança. +#' +#' @param cty Uma string que indica o tipo de representação. Atualmente +#' são aceitos os valores \code{"bars"} para intervalos de confiança +#' e \code{"bands"} para bandas de confiança. +#' +#' @param desloc Um vetor númerico nos quais os valores representam +#' quantidades a somar/subtrair dos valores de \code{x} para não +#' sobrepor intervalos. Com esse argumento pode-se representar mais +#' de um intervalor por valor de \code{x}. Não é usado quando +#' \code{cty = "bands"} +#' +#' @param fill Uma representação de cor para preencher o interior das +#' bandas de confiança. Não é usado quando \code{cty = "bars"}. +#' +#' @param alpha Nível de transparência na cor de preenchimento das +#' bandas de confiança para permitir sobrepor bandas. O valor +#' default é 0.1. Não é usado quando \code{cty = "bars"}. +#' +#' @param length Comprimento para as extremidades dos intervalos que +#' formam o "T". O valor default é 0.05. Não é usado quando +#' \code{cty = "bands"}. +#' +#' @param x,subscripts,col.line,lwd,... Argumentos passados para a +#' função \code{\link[lattice]{xyplot}}. +#' +#' @return São usadas dentro de funções do pacote \pkg{lattice}. +#' +#' @seealso \code{\link{prepanel.cbH}}. +#' @import lattice latticeExtra +#' @examples +#' +#' library(lattice) +#' library(latticeExtra) +#' +#' m0 <- lm(sqrt(dist) ~ speed, data = cars) +#' pred <- with(cars, data.frame(speed = seq(min(speed), +#' max(speed), +#' length.out = 20))) +#' aux <- predict(m0, newdata = pred, interval = "confidence") +#' pred <- cbind(pred, aux) +#' +#' xyplot(sqrt(dist) ~ speed, data = cars) + +#' as.layer(xyplot(fit ~ speed, data = pred, type = "l", +#' ly = pred$lwr, uy = pred$upr, cty = "bands", +#' fill = "blue", alpha = 0.3, +#' prepanel = prepanel.cbH, +#' panel = panel.cbH)) +#' +#' m1 <- lm(weight ~ feed, data = chickwts) +#' pred <- with(chickwts, data.frame(feed = levels(feed))) +#' aux <- predict(m1, newdata = pred, interval = "confidence") +#' pred <- cbind(pred, aux) +#' +#' xyplot(weight~feed, data=chickwts)+ +#' as.layer(xyplot(fit ~ feed, data = pred, +#' ly = pred$lwr, uy = pred$upr, +#' cty = "bars", +#' prepanel = prepanel.cbH, +#' desloc = rep(0.15, length(pred$fit)), +#' panel = panel.cbH)) +#' +#' da <- expand.grid(trt = gl(2, 1), x = 1:7) +#' da$y <- with(da, as.integer(trt) + 0.5 * x + rnorm(x, 0, 0.4)) +#' xyplot(y ~ x, groups = trt, data = da) +#' +#' m2 <- lm(y ~ trt + x, data = da) +#' +#' pred <- with(da, expand.grid(trt = levels(trt), +#' x = seq(min(x), max(x), length.out = 20))) +#' aux <- predict(m2, newdata = pred, interval = "confidence") +#' pred <- cbind(pred, aux) +#' +#' xyplot(y ~ x, groups = trt, data = da) + +#' as.layer(xyplot(fit ~ x, groups = trt, data = pred, type = "l", +#' ly = pred$lwr, uy = pred$upr, +#' cty = "bands", alpha = 0.25, +#' prepanel = prepanel.cbH, +#' panel = panel.superpose, +#' panel.groups = panel.cbH)) +#' +panel.cbH <- function(x, y, ly, uy, + subscripts, cty, + col.line = plot.line$col, + lwd = plot.line$lwd, + desloc = NULL, + fill = 1, alpha = 0.1, length = 0.05, ...) { + plot.line <- trellis.par.get("plot.line") + if (is.null(desloc)) + desloc <- rep(0, length(uy)) + y <- as.numeric(y) + x <- as.numeric(x) + or <- order(x) + ly <- as.numeric(ly[subscripts]) + uy <- as.numeric(uy[subscripts]) + xo <- x[or] + yo <- y[or] + lyo <- ly[or] + uyo <- uy[or] + desl <- desloc[subscripts] + if (cty == "bands") { + panel.polygon(c(xo, rev(xo)), c(lyo, rev(uyo)), col = fill, + alpha = alpha, border = NA) + panel.lines(xo, lyo, lty = 3, lwd = 0.5, col = col.line) + panel.lines(xo, uyo, lty = 3, lwd = 0.5, col = col.line) + } + if (cty == "bars") { + panel.arrows(xo + desl, lyo, xo + desl, uyo, length = length, + code = 3, angle = 90, col = col.line, lwd = lwd) + } + panel.xyplot(x + desl, y, subscripts = subscripts, + col.line = col.line, lwd = lwd, ...) +} + +#' @name prepanel.cbH +#' @rdname panel.cbH +#' @author Walmes Zeviani baseado na lista de discussão R-help. +#' @import lattice latticeExtra +#' @export +prepanel.cbH <- function(y, ly, uy, subscripts){ + ly <- as.numeric(ly[subscripts]) + uy <- as.numeric(uy[subscripts]) + y <- as.numeric(y[subscripts]) + list(ylim=range(y, uy, ly, finite=TRUE)) +} diff --git a/man/panel.cbH.Rd b/man/panel.cbH.Rd new file mode 100644 index 0000000000000000000000000000000000000000..c4eeece8dfa1d9aedd610e6e5e86b217e1d8ebda --- /dev/null +++ b/man/panel.cbH.Rd @@ -0,0 +1,112 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/panel.cbH.R +\name{panel.cbH} +\alias{panel.cbH} +\alias{prepanel.cbH} +\title{Função para Intervalos e Bandas de Confiança com a Lattice} +\usage{ +panel.cbH(x, y, ly, uy, subscripts, cty, col.line = plot.line$col, + lwd = plot.line$lwd, desloc = NULL, fill = 1, alpha = 0.1, + length = 0.05, ...) + +prepanel.cbH(y, ly, uy, subscripts) +} +\arguments{ +\item{x, subscripts, col.line, lwd, ...}{Argumentos passados para a +função \code{\link[lattice]{xyplot}}.} + +\item{y}{Valor central ou estimativa pontual.} + +\item{ly}{Limite inferior do intervalo/banda de confiança.} + +\item{uy}{Limite superior do intervalo/banda de confiança.} + +\item{cty}{Uma string que indica o tipo de representação. Atualmente +são aceitos os valores \code{"bars"} para intervalos de confiança +e \code{"bands"} para bandas de confiança.} + +\item{desloc}{Um vetor númerico nos quais os valores representam +quantidades a somar/subtrair dos valores de \code{x} para não +sobrepor intervalos. Com esse argumento pode-se representar mais +de um intervalor por valor de \code{x}. Não é usado quando +\code{cty = "bands"}} + +\item{fill}{Uma representação de cor para preencher o interior das +bandas de confiança. Não é usado quando \code{cty = "bars"}.} + +\item{alpha}{Nível de transparência na cor de preenchimento das +bandas de confiança para permitir sobrepor bandas. O valor +default é 0.1. Não é usado quando \code{cty = "bars"}.} + +\item{length}{Comprimento para as extremidades dos intervalos que +formam o "T". O valor default é 0.05. Não é usado quando +\code{cty = "bands"}.} +} +\value{ +São usadas dentro de funções do pacote \pkg{lattice}. +} +\description{ +Essa função permite representar intervalos de confiança + e bandas de confiança em gráficos do pacote lattice. +} +\examples{ + +library(lattice) +library(latticeExtra) + +m0 <- lm(sqrt(dist) ~ speed, data = cars) +pred <- with(cars, data.frame(speed = seq(min(speed), + max(speed), + length.out = 20))) +aux <- predict(m0, newdata = pred, interval = "confidence") +pred <- cbind(pred, aux) + +xyplot(sqrt(dist) ~ speed, data = cars) + + as.layer(xyplot(fit ~ speed, data = pred, type = "l", + ly = pred$lwr, uy = pred$upr, cty = "bands", + fill = "blue", alpha = 0.3, + prepanel = prepanel.cbH, + panel = panel.cbH)) + +m1 <- lm(weight ~ feed, data = chickwts) +pred <- with(chickwts, data.frame(feed = levels(feed))) +aux <- predict(m1, newdata = pred, interval = "confidence") +pred <- cbind(pred, aux) + +xyplot(weight~feed, data=chickwts)+ + as.layer(xyplot(fit ~ feed, data = pred, + ly = pred$lwr, uy = pred$upr, + cty = "bars", + prepanel = prepanel.cbH, + desloc = rep(0.15, length(pred$fit)), + panel = panel.cbH)) + +da <- expand.grid(trt = gl(2, 1), x = 1:7) +da$y <- with(da, as.integer(trt) + 0.5 * x + rnorm(x, 0, 0.4)) +xyplot(y ~ x, groups = trt, data = da) + +m2 <- lm(y ~ trt + x, data = da) + +pred <- with(da, expand.grid(trt = levels(trt), + x = seq(min(x), max(x), length.out = 20))) +aux <- predict(m2, newdata = pred, interval = "confidence") +pred <- cbind(pred, aux) + +xyplot(y ~ x, groups = trt, data = da) + + as.layer(xyplot(fit ~ x, groups = trt, data = pred, type = "l", + ly = pred$lwr, uy = pred$upr, + cty = "bands", alpha = 0.25, + prepanel = prepanel.cbH, + panel = panel.superpose, + panel.groups = panel.cbH)) + +} +\author{ +Walmes Zeviani baseado na lista de discussão R-help. + +Walmes Zeviani baseado na lista de discussão R-help. +} +\seealso{ +\code{\link{prepanel.cbH}}. +} +