本文是statquest抽样分布 (Sampling A Distribution)的学习记录和R语言实现。视频链接:https://www.bilibili.com/video/BV1pb411p733
1.画一个标准正态曲线
plot(dnorm(seq(-5,5,0.01)) ~ (seq(-5,5,0.01)),type = "l")
2.一各总体中的两组样本差异显著吗
从标准正态分布的数据中抽样1000个,名为x
set.seed(10086)
x = rnorm(1000);head(x)
## [1] 0.5497892 -2.7449592 0.5664575 0.4854790 -0.6263183 0.2547939
从x中取样两次,每次3个,将取出的两组数据做t检验。
t.test(sample(x,3),sample(x,3))$p.value
## [1] 0.142509
因为这两组数据符合同一个分布,t-test应该给出较大的pvalue(期望值),即两组数据差异不显著。
理想是丰满滴,让R语言告诉你现实。
如果多次抽样,多次t检验呢?在上面的曲线横坐标范围内的数据都可能被抽到,如果某次随机抽样,例如一不小心抽到的两组数据是-2,-1.9,-1.5和 2,1.9,1.5,则会得出p = 7.596e-05。即使从同一组数据中抽样,也是可能得出较小的p值的,只不过几率小。可以多次抽样,量化一下这个几率在多少。比如我抽一万次。
多次进行上述操作(取样然后t检验)可以得出不同的p值,计算得出较大p值的比例。在R语言中的实现就是将这个操作重复10000次,用for循环、while、repeat、lapply、sapply都可以实现。
ps = sapply(1:10000,function(i){t.test(sample(x,3),sample(x,3))$p.value})
table(ps>=0.05)
##
## FALSE TRUE
## 338 9662
mean(ps>=0.05)
## [1] 0.9662
由此可见,随机抽样2组x3个样本后做t检验,有96.62%的几率是两组差异不显著的,这个几率可以当作抽样后t检验的正确率,如果这个正确率低于预期,则应该考虑增加样本数量。
3.两个总体中的两组样本差异显著吗
两组正态分布,均值分别是0和5,画出曲线就是:
plot(dnorm(seq(-5,10,0.01)) ~ (seq(-5,10,0.01)),type = "l")
lines(dnorm(seq(-5,10,0.01),mean = 5) ~ (seq(-5,10,0.01)),col = "blue")
两组不同的正态分布数据中分别抽样做t检验,也是多次计算,看得出较小p值的几率有多大
x2 = rnorm(1000,mean = 5)
ps2 = sapply(1:10000,function(i){t.test(sample(x,3),sample(x2,3))$p.value})
table(ps2<0.05)
##
## FALSE TRUE
## 315 9685
mean(ps2<0.05)
## [1] 0.9685
这个试验可以为样本数量的选择作参考,从这两个均值不同的正态分布总体中抽样各3个,就有约97%的几率可以得出这两组之间差异显著的结论,如果97%这个几率可以接受,那三个样本就足够,否则的话,增加样本数量吧~
网友评论