Page 363
How large must \(n\) be before \(S_n = X_1+X_2+...+X_n\) is approximately normal? This number is often surprisingly small. Let us explore this question with a computer simulation. Choose \(n\) numbers from \([0, 1]\) with probability density \(f(x)\), where \(n = 3\), \(6\), \(12\), \(20\), and \(f(x)\) is each of the densities in Exercise 7. Compute their sum \(S_n\), repeat this experiment 1000 times, and make up a bar graph of 20 bars of the results. How large must \(n\) be before you get a good fit?
Probability density functions from Exercise 7:
Per note on page 361, \(X\) can be simulated using \(X=F^{-1}(rnd)\).
For \(x \in [0,1]\),
Plot experiments with various values for \(n\) for each density function.
trials <- 1000
getsum <- function(n, trials) {
sum <- rep(0, trials)
for (i in 1:trials) {
x <- runif(n,0,1)
sum[i] <- sum(x)
}
return(sum)
}
par(mfrow=c(3,2))
for (j in 1:20) {
n <- j
sum <- getsum(n, trials)
hist(sum, breaks=50, xlim=c(mean(sum)-3*sd(sum),mean(sum)+3*sd(sum)), prob=TRUE, xlab="", ylab="", main=paste("n = ",n))
curve(dnorm(x, mean=mean(sum), sd=sd(sum)),add=TRUE)
}trials <- 1000
getsum <- function(n, trials) {
sum <- rep(0, trials)
for (i in 1:trials) {
x <- runif(n,0,1)
x <- sqrt(x)
sum[i] <- sum(x)
}
return(sum)
}
par(mfrow=c(3,2))
for (j in 1:20) {
n <- j
sum <- getsum(n, trials)
hist(sum, breaks=50, xlim=c(mean(sum)-3*sd(sum),mean(sum)+3*sd(sum)), prob=TRUE, xlab="", ylab="", main=paste("n = ",n))
curve(dnorm(x, mean=mean(sum), sd=sd(sum)),add=TRUE)
}trials <- 1000
getsum <- function(n, trials) {
sum <- rep(0, trials)
for (i in 1:trials) {
x <- runif(n,0,1)
x <- x^(1/3)
sum[i] <- sum(x)
}
return(sum)
}
par(mfrow=c(3,2))
for (j in 1:20) {
n <- j
sum <- getsum(n, trials)
hist(sum, breaks=50, xlim=c(mean(sum)-3*sd(sum),mean(sum)+3*sd(sum)), prob=TRUE, xlab="", ylab="", main=paste("n = ",n))
curve(dnorm(x, mean=mean(sum), sd=sd(sum)),add=TRUE)
}