sampdist {DAAG}R Documentation

Plot sampling distribution of mean or other sample statistic.

Description

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.

Usage

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))

Arguments

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 density, or qq. Or if no plot is required, 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. c(3,1) for a 3 columns by one row layout.

Value

Data frame

Author(s)

John Maindonald.

Examples

library(lattice)
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)
}

[Package DAAG version 0.99-3 Index]