From: <Bill.Venables_at_csiro.au>

Date: Fri 22 Apr 2005 - 08:49:26 EST

E-Mail: (Ted Harding) <Ted.Harding@nessie.mcc.ac.uk> Fax-to-email: +44 (0)870 094 0861

https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide!

http://www.R-project.org/posting-guide.html

R-help@stat.math.ethz.ch mailing list

https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html Received on Fri Apr 22 08:54:16 2005

Date: Fri 22 Apr 2005 - 08:49:26 EST

Here's a bit of a refinement on Ted's first suggestion.

N <- 10000

graphics.off()

par(mfrow = c(1,2), pty = "s")

for(k in 1:20) {

prob = TRUE, ylim = c(0,0.5), col = "lemonchiffon")
pu <- par("usr")[1:2]

x <- seq(pu[1], pu[2], len = 500)

lines(x, dnorm(x), col = "red")

qqnorm(m, ylim = c(-4,4), xlim = c(-4,4), pch = ".", col = "blue")
abline(0, 1, col = "red")

Sys.sleep(1)

}

-----Original Message-----

From: r-help-bounces@stat.math.ethz.ch

[mailto:r-help-bounces@stat.math.ethz.ch] On Behalf Of
Ted.Harding@nessie.mcc.ac.uk

Sent: Friday, 22 April 2005 4:48 AM

To: Paul Smith

Cc: r-help@stat.math.ethz.ch

Subject: RE: [R] Using R to illustrate the Central Limit Theorem

On 21-Apr-05 Paul Smith wrote:

> Dear All

*>
**> I am totally new to R and I would like to know whether R is able and
**> appropriate to illustrate to my students the Central Limit Theorem,
**> using for instance 100 independent variables with uniform distribution
**> and showing that their sum is a variable with an approximated normal
**> distribution.
**>
**> Thanks in advance,
**>
**> Paul
*

Similar to Francisco's suggestion:

m<-numeric(10000);

for(k in (1:20)){

for(i in(1:10000)){m[i]<-(mean(runif(k))-0.5)*sqrt(12*k)}
hist(m,breaks=0.3*(-15:15),xlim=c(-4,4),main=sprintf("%d",k))
}

(On my slowish laptop, this ticks over at a satidfactory rate, about 1 plot per second. If your mahine is much faster, then simply increase 10000 to a larger number.)

The real problem with demos like this, starting with the uniform distribution, is that the result is, to the eye, already approximately normal when k=3, and it's only out in the tails that the improvement shows for larger values of k.

This was in fact the way we used to simulate a normal distribution in the old days: look up 3 numbers in Kendall & Babington-Smith's "Tables of Random Sampling Numbers", which are in effect pages full of integers uniform on 00-99, and take their mean.

It's the one book I ever encountered which contained absolutely no information -- at least, none that I ever spotted.

A more dramatic illustration of the CLT effect might be obtained if, instead of runif(k), you used rbinom(k,1,p) for p > 0.5, say:

m<-numeric(10000);

p<-0.75; for(j in (1:50)){ k<-j*j

for(i in(1:10000)){m[i]<-(mean(rbinom(k,1,p))-p)/sqrt(p*(1-p)/k)}
hist(m,breaks=41,xlim=c(-4,4),main=sprintf("%d",k))
}

Cheers,

Ted.

E-Mail: (Ted Harding) <Ted.Harding@nessie.mcc.ac.uk> Fax-to-email: +44 (0)870 094 0861

Date: 21-Apr-05 Time: 19:48:05 ------------------------------ XFMail ------------------------------ ______________________________________________R-help@stat.math.ethz.ch mailing list

https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide!

http://www.R-project.org/posting-guide.html

R-help@stat.math.ethz.ch mailing list

https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html Received on Fri Apr 22 08:54:16 2005

*
This archive was generated by hypermail 2.1.8
: Fri 03 Mar 2006 - 03:31:22 EST
*