Plot sampling distribution of mean or other sample statistic.
The function sampvals
generates the data. A density plot
of a normal probability plot is provided, for one or mare sample
sizes. For a density plot, the density estimate for the population
is superimposed in gray. For the normal probability plot, the
population plot is a dashed gray line. Default arguments give the
sampling distribution of the mean, for a distribution that is
mildly positively skewed.
sampdist(sampsize = c(3, 9, 30), seed = NULL, nsamp = 1000, FUN = mean, sampvals = function(n) exp(rnorm(n, mean = 0.5, sd = 0.3)), tck = NULL, plot.type = c("density", "qq"), layout = c(3, 1))
sampvals |
Function that generates the data. For sampling from existing data values, this might be function that generates bootstrap samples. |
sampsize |
One or more sample sizes. A plot will be provided for each different sample size. |
seed |
Specify a seed if it is required to make the exact set(s) of sample values reproducible. |
nsamp |
Number of samples. |
FUN |
Function that calculates the sample statistic. |
plot.type |
Specify |
tck |
Tick size on lattice plots, by default 1, but 0.5 may be suitable for plots that are, for example, 50% of the default dimensions in each direction. |
layout |
Layout on page, e.g. |
Data frame
John Maindonald.
sampdist(plot.type="density") sampdist(plot.type="qq") ## The function is currently defined as function (sampsize = c(3, 9, 30), seed = NULL, nsamp = 1000, FUN = mean, sampvals = function(n) exp(rnorm(n, mean = 0.5, sd = 0.3)), tck = NULL, plot.type = c("density", "qq"), layout = c(3, 1)) { if (!is.null(seed)) set.seed(seed) ncases <- length(sampsize) y <- sampvals(nsamp) xlim = quantile(y, c(0.01, 0.99)) xlim <- xlim + c(-1, 1) * diff(xlim) * 0.1 samplingDist <- function(sampsize=3, nsamp=1000, FUN=mean) apply(matrix(sampvals(sampsize*nsamp), ncol=sampsize), 1, FUN) df <- data.frame(sapply(sampsize, function(x)samplingDist(x, nsamp=nsamp))) names(df) <- paste("y", sampsize, sep="") form <- formula(paste("~", paste(names(df), collapse="+"))) lab <- lapply(sampsize, function(x) substitute(A, list(A = paste(x)))) if (plot.type[1] == "density") gph <- densityplot(form, data=df, layout = layout, outer=TRUE, plot.points = FALSE, panel = function(x, ...) { panel.densityplot(x, ..., col = "black") panel.densityplot(y, col = "gray40", lty = 2, ...) }, xlim = xlim, xlab = "", scales = list(tck = tck), between = list(x = 0.5), strip = strip.custom(strip.names = TRUE, factor.levels = as.expression(lab), var.name = "Sample size", sep = expression(" = "))) else if (plot.type[1] == "qq") gph <- qqmath(form, data = df, layout = layout, plot.points = FALSE, outer=TRUE, panel = function(x, ...) { panel.qqmath(x, ..., col = "black", alpha=0.5) panel.qqmath(y, col = "gray40", lty = 2, type = "l", ...) }, xlab = "", xlim = c(-3, 3), ylab = "", scales = list(tck = tck), between = list(x = 0.5), strip = strip.custom(strip.names = TRUE, factor.levels = as.expression(lab), var.name = "Sample size", sep = expression(" = "))) if (plot.type[1] %in% c("density", "qq")) print(gph) invisible(df) }
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.