R语言程序

相信很多都对前面我说的R语言感兴趣吧,分享一下我的资料吧。这是关于验证中心极限定理的R程序!




######验证:无论随机变量原来服从哪种分布,只要样本容量足够大,

#########其均数都会服从正态分布


###1.正态分布####


a<-rnorm(10000,0,1)   #生成一个数据量很大的正态分布的数据

x<-1:100              #生成一个向量用来存放样本均数的向量

a<-data.frame(a)      #将这两个向量存放在数据框中

x<-data.frame(x)


windows(1280,720);par(mfrow=c(2,2))

plot(density(a$a),main = "这是原来的分布")

hist(a$a,main = "这是原来的分布")


for(i in 1:100){      #设置循环,循环抽取100个样本,并将计算出来的均值赋值给数据框中的x变量

    c<-a[sample(nrow(a),1000),] 

    m=mean(c)

    # print(m)           #验证该循环可以正常工作

    x$x[i]<-m

}

plot(density(x$x),main = "这是抽取的样本的均数的分布")    #绘制抽取样本的均值的分布概率密度图

hist(a$a,main = "这是抽取的样本的均数的分布")



##将上面的程序加以改造,以验证其它形式的分布

### 2.0 指数分布####

a<-rexp(100000,1)   #生成一个数据量很大的指数分布的数据

x<-1:100              #生成一个用来存放样本均数的数据框

a<-data.frame(a)      #将这两个向量存放在数据框中

x<-data.frame(x)


windows(1280,720);par(mfrow=c(1,2))

plot(density(a$a),main = "这是原来的分布")


for(i in 1:10000){      #设置循环,循环抽取100个样本,并将计算出来的均值赋值给数据框中的x变量

  c<-a[sample(nrow(a),1000),] 

  m=mean(c)

  # print(m)           #验证该循环可以正常工作

  x$x[i]<-m

}

plot(density(x$x),main = "这是抽取的样本的均数的分布")     #绘制抽取样本的均值的分布概率密度图


### 3.0 t分布####


a<-rt(100,2)  #生成一个数据量很大的t分布的数据

x<-1:1000              #生成一个用来存放样本均数的数据框

a<-data.frame(a)      #将这两个向量存放在数据框中

x<-data.frame(x)


windows(1280,720);par(mfrow=c(1,2))


plot(density(a$a),main = "这是原来的分布")   #查看原始数据的分布状态

for(i in 1:1000){      #设置循环,循环抽取1000个样本,并将计算出来的均值赋值给数据框中的x变量

  c<-a[sample(nrow(a),10),] 

  m=mean(c)

  # print(m)           #验证该循环可以正常工作

  x$x[i]<-m

}

plot(density(x$x),main = "这是抽取的样本的均数的分布")    #绘制抽取样本的均值的分布概率密度图



###4.0 F分布####


a<-rf(10000,1,5)  #生成一个数据量很大的F分布的数据

x<-1:1000             #生成一个用来存放样本均数的数据框

a<-data.frame(a)      #将这两个向量存放在数据框中

x<-data.frame(x)


windows(1280,720);par(mfrow=c(1,2))


plot(density(a$a),main = "这是原来的分布")

for(i in 1:1000){      #设置循环,循环抽取1000个样本,并将计算出来的均值赋值给数据框中的x变量

  c<-a[sample(nrow(a),1000),] 

  m=mean(c)

  # print(m)           #验证该循环可以正常工作

  x$x[i]<-m

}

plot(density(x$x),main = "这是抽取的样本的均数的分布")    #绘制抽取样本的均值的分布概率密度图



###5.0卡方分布 ####


a<-rchisq(100000,1)  #生成一个数据量很大的卡方分布的数据

x<-1:1000              #生成一个用来存放样本均数的数据框

a<-data.frame(a)      #将这两个向量存放在数据框中

x<-data.frame(x)


windows(400,400);par(mfrow=c(1,2))


plot(density(a$a),main = "这是一组呈卡方分布的数据")

for(i in 1:1000){      #设置循环,循环抽取100个样本,并将计算出来的均值赋值给数据框中的x变量

  c<-a[sample(nrow(a),1000),] 

  m=mean(c)

  # print(m)           #验证该循环可以正常工作

  x$x[i]<-m

}

plot(density(x$x),main = "这是从上述卡方分布的数据中抽取的1000个样本的均值分布")

#绘制抽取样本的均值的分布概率密度图


### 6.0 函数解决方案####

myfun<-function(a){

  x<-1:100             #先生成一个1到100的序列,后面可以更改这些值,相当于覆盖掉原来的值

  x<-data.frame(x)

  a<-data.frame(a)

  

  for(i in 1:100){        #设置循环,循环抽取100个样本,并将计算出来的均值赋值给数据框中的x变量

    c<-a[sample(nrow(a),1000),] 

    m=mean(c)

    x$x[i]<-m

  }

  

  windows(1280,720);par(mfrow=c(2,2))

  plot(density(a$a),main = "这是原来的分布")

  hist(a$a,main = "这是原来的分布",col='skyblue')

  plot(density(x$x),main = "这是抽取的样本的均数的分布")

  hist(a$a,main = "这是抽取的样本的均数的分布",col='skyblue')

}


###6.1正态分布####

a<-rnorm(10000,0,1)

myfun(a)

###6.2指数分布####

b<-rexp(100000,1) 

myfun(b)

###6.3 t分布####

c<-rt(1000,3) 

myfun(c)

###6.4 F分布####

d<-rchisq(100000,1) 

myfun(d)




本文转自 寂岚峰 51CTO博客,原文链接:http://blog.51cto.com/13271983/1970262,如需转载请自行联系原作者

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值