CLT指出給定i.i.d.來自具有均值和方差的分佈的樣本,隨着樣本數目增加,樣本均值(作爲隨機變量)具有收斂於高斯的分佈。在這裏,我假定您要生成r
樣本集,每個樣本集包含n
個樣本,以創建r
樣本均值的樣本。一些代碼來做到這一點如下:
set.seed(123) ## set the seed for reproducibility
r <- 10000
n <- 200 ## I use 200 instead of 20 to enhance convergence to Gaussian
## this function computes the r samples of the sample mean from the
## r*n original samples
sample.means <- function(samps, r, n) {
rowMeans(matrix(samps,nrow=r,ncol=n))
}
爲了生成圖表,我們使用ggplot2
亞倫從hereqqplot.data
功能。我們還使用gridExtra
在一個框架中繪製多個圖。
library(ggplot2)
library(gridExtra)
qqplot.data <- function (vec) {
# following four lines from base R's qqline()
y <- quantile(vec[!is.na(vec)], c(0.25, 0.75))
x <- qnorm(c(0.25, 0.75))
slope <- diff(y)/diff(x)
int <- y[1L] - slope * x[1L]
d <- data.frame(resids = vec)
ggplot(d, aes(sample = resids)) + stat_qq() + geom_abline(slope = slope, intercept = int, colour="red") + ggtitle("Q-Q plot")
}
generate.plots <- function(samps, samp.means) {
p1 <- qplot(samps, geom="histogram", bins=30, main="Sample Histogram")
p2 <- qplot(samp.means, geom="histogram", bins=30, main="Sample Mean Histogram")
p3 <- qqplot.data(samp.means)
grid.arrange(p1,p2,p3,ncol=2)
}
然後我們可以使用這些功能與均勻分佈:
samps <- runif(r*n) ## uniform distribution [0,1]
# compute sample means
samp.means <- sample.means(samps, r, n))
# generate plots
generate.plots(samps, samp.means)
我們得到:
或者,與泊松分佈意思= 3:
samps <- rpois(r*n,lambda=3)
# compute sample means
samp.means <- sample.means(samps, r, n))
# generate plots
generate.plots(samps, samp.means)
我們得到:
或者,與指數分佈均值= 1/1:
samps <- rexp(r*n,rate=1)
# compute sample means
samp.means <- sample.means(samps, r, n))
# generate plots
generate.plots(samps, samp.means)
我們得到:
注意,樣品的平均平均直方圖所有像Gaussians
均值,這是非常類似於原始生成分佈的平均值,這是否是均勻的,泊松或指數,由CLT(作爲預測其方差也將是原始生成分佈的方差1 /(n = 200))。
你能告訴我們一些你開始寫的代碼嗎?我們不是代碼寫作服務。 –