1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93
|
library(lattice)
## prepanel and panel function for displaying confidence intervals
prepanel.ci <- function(x, y, lx, ux, subscripts, ...)
{
x <- as.numeric(x)
lx <- as.numeric(lx[subscripts])
ux <- as.numeric(ux[subscripts])
list(xlim = range(x, ux, lx, finite = TRUE))
}
panel.ci <- function(x, y, lx, ux, subscripts, pch = 16, ...)
{
x <- as.numeric(x)
y <- as.numeric(y)
lx <- as.numeric(lx[subscripts])
ux <- as.numeric(ux[subscripts])
panel.abline(h = unique(y), col = "grey")
panel.arrows(lx, y, ux, y, col = 'black',
length = 0.25, unit = "native",
angle = 90, code = 3)
panel.xyplot(x, y, pch = pch, ...)
}
## constructing an example for confidence intervals for medians (see
## ?boxplot.stats for a discussion of what the intervals mean)
singer.split <-
with(singer,
split(height, voice.part))
singer.ucl <-
sapply(singer.split,
function(x) {
st <- boxplot.stats(x)
c(st$stats[3], st$conf)
})
singer.ucl <- as.data.frame(t(singer.ucl))
names(singer.ucl) <- c("median", "lower", "upper")
singer.ucl$voice.part <-
factor(rownames(singer.ucl),
levels = rownames(singer.ucl))
singer.ucl
with(singer.ucl,
dotplot(voice.part ~ median,
lx = lower, ux = upper,
prepanel = prepanel.ci,
panel = panel.ci))
singer.split <-
with(singer,
split(height, voice.part))
singer.ucl <-
sapply(singer.split,
function(x) {
st <- boxplot.stats(x)
c(st$stats[3], st$conf)
})
singer.ucl <- as.data.frame(t(singer.ucl))
names(singer.ucl) <- c("median", "lower", "upper")
singer.ucl$voice.part <-
factor(rownames(singer.ucl),
levels = rownames(singer.ucl))
singer.ucl
with(singer.ucl,
xyplot(voice.part ~ median,
lx = lower, ux = upper,
prepanel = prepanel.ci,
panel = panel.ci))
|