clt.ani {animation} | R Documentation |
First of all, a number of obs
observations are generated from a
certain distribution for each variable X_j, j
= 1, 2, ..., n, and n = 1, 2, ..., nmax, then
the sample means are computed, and at last the density of these sample means
is plotted as the sample size n increases (the theoretical limiting
distribution is denoted by the dashed line), besides, the P-values from the
normality test shapiro.test
are computed for each n and
plotted at the same time.
clt.ani(obs = 300, FUN = rexp, mean = 1, sd = 1, col = c("bisque", "red", "blue", "black"), mat = matrix(1:2, 2), widths = rep(1, ncol(mat)), heights = rep(1, nrow(mat)), xlim, ...)
obs |
the number of sample means to be generated from the distribution based on a given sample size n; these sample mean values will be used to create the histogram |
FUN |
the function to generate |
mean,sd |
the expectation and standard deviation of the population
distribution (they will be used to plot the density curve of the
theoretical Normal distribution with mean equal to |
col |
a vector of length 4 specifying the colors of the histogram, the density curve of the sample mean, the theoretical density cuve and P-values. |
mat,widths,heights |
arguments passed to |
xlim |
the x-axis limit for the histogram (it has a default value if not specified) |
... |
other arguments passed to |
As long as the conditions of the Central Limit Theorem (CLT) are satisfied,
the distribution of the sample mean will be approximate to the Normal
distribution when the sample size n
is large enough, no matter what is
the original distribution. The largest sample size is defined by nmax
in ani.options
.
A data frame of P-values.
Yihui Xie
http://vis.supstat.com/2013/04/central-limit-theorem
oopt = ani.options(interval = 0.1, nmax = ifelse(interactive(), 150, 2)) op = par(mar = c(3, 3, 1, 0.5), mgp = c(1.5, 0.5, 0), tcl = -0.3) clt.ani(type = "s") par(op) ## HTML animation page saveHTML({ par(mar = c(3, 3, 1, 0.5), mgp = c(1.5, 0.5, 0), tcl = -0.3) ani.options(interval = 0.1, nmax = ifelse(interactive(), 150, 10)) clt.ani(type = "h") }, img.name = "clt.ani", htmlfile = "clt.ani.html", ani.height = 500, ani.width = 600, title = "Demonstration of the Central Limit Theorem", description = c("This animation shows the distribution of the sample", "mean as the sample size grows.")) ## other distributions: Chi-square with df = 5 (mean = df, var = 2*df) f = function(n) rchisq(n, 5) clt.ani(FUN = f, mean = 5, sd = sqrt(2 * 5)) ani.options(oopt)