R语言学习笔记(二)

ps:内容来源于网络,仅供学习参考,请勿用于商业用途

主要是补充部分:

附上参考学习代码(二):

 

#################


######验证:无论随机变量原来服从哪种分布,只要样本容量足够大,
#########其均数都会服从正态分布

###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)


###待解决问题,同步输出原来是啥分布####

 

posted @ 2016-08-27 16:24  Joe.Smith  阅读(240)  评论(0编辑  收藏  举报