码迷,mamicode.com
首页 > 编程语言 > 详细

R语言程序

时间:2017-10-02 23:48:47      阅读:244      评论:0      收藏:0      [点我收藏+]

标签: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)





R语言程序

标签:r语言

原文地址:http://13271983.blog.51cto.com/13261983/1970262

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!