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