假设检验中统计功效、效应大小及样本量

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了假设检验中统计功效、效应大小及样本量相关的知识,希望对你有一定的参考价值。

参考技术A

当假设检验结果不显著时,这时我们不能立刻接受原假设,因为可能是统计功效过低。统计功效是什么意思呢? 它代表当备择假设为真的情况下,可以正确拒绝原假设的概率,即1-β 。它代表我们通过假设检验可以正确识别出目标的概率。(熟悉机器学习的同学应该知道,类似于评估机器学习分类模型效果时,有个指标叫做召回率(recall),代表实际为阳性的所有样本中,通过模型可以被识别出的比例。这个统计功效即类似于召回率。)如果结果不显著,样本不一定是阴性,也可能是统计功效过低,而无法识别出来。

影响统计功效(1-β)的因素有显著性水平α,样本量大小N,标准化的效应大小EZ。这四个要素是相辅相成的,只要确定了其中三个要素,另外一个就可以唯一确定。

我们了解了影响统计功效(1-β)的三个因素,因此,在确定了我们想要达到的统计功效、显著性水平和效应大小后,就可以估算需要的样本量。 利用统计功效估算样本量的方法称为功效分析。

功效分析的难点在于如何确定效应大小。效应大小是一个抽象的概念,它在数学上到底是什么形式取决于具体的统计测试。比如说,相关分析、t检验、卡方检验的效应大小分别是:相关系数、均值差、OR值(比值比)。在估算样本量时,我们还没有开始试验,又如何确定效应大小呢?常用的有两种方法:

R语言-选择样本数量

功效分析:可以帮助在给定置信度的情况下,判断检测到给定效应值时所需的样本量,也可以在给定置信水平的情况下,计算某样本量内可以检测到的给定效应值的概率

1.t检验

  案例:使用手机和司机反应时间的实验

1 library(pwr)
2 # n表示样本大小
3 # d表示标准化均值之差
4 # sig.level表示显著性水平
5 # power为功效水平
6 # type指的是检验类型
7 # alternative指的是双侧检验还是单侧检验
8 pwr.t.test(d=.8,sig.level = .05,power = .9,type = \'two.sample\',alternative = \'two.sided\')

  结论:每组需要34个样本(68)人才能保证有90%的把握检测到0.8效应值,并且最多5%会存在误差

2.方差分析

  案例:对5组数据做方差分析,达到0.8的功效,效应值为0.25,选择0.5的显著水平.计算总体样本的大小

# k表示组的个数
# f表示效应值
pwr.anova.test(k=5,f=.25,sig.level = .05,power = .8)

  结论:需要39*5,195受试者参与实验才能得出以上结果

3.相关性

  案例:抑郁症和孤独的关系,零假设和研究假设为

     H0:p<=0.25和H1:p>0.25

    设定显著水平为0.05,耳光拒绝零假设,希望有90%的信息拒绝H0,需要多少测试者

1 # r表示效应值
2 pwr.r.test(r=.25,sig.level = .05,power = .90,alternative = \'greater\')

  结论:需要134名受试者参与实验

4.线性模型

  案例:老板的领导风格对员工满意度的影响,薪水和小费能解释30%员工满意度方差,领导风格能解释35%的方差,

      要达到90%置信度下,显著水平为0.05,需要多少受试者才能达到方差贡献率

  f2 = (0.35-0.3)/(1-0.35)=0.0769

1 # u表示分子自由度
2 # v表示分母自由度
3 # f2表示效应值
4 pwr.f2.test(u=3,f2=0.0769,sig.level = .05,power = .90)

  结论:v=总体样本-预测变量-1,所以N=v+7+1=187+7+1=193

5.比例检验

  案例:某种药物有60%的治愈率,新药有65%的治愈率,现在有多少受试者才能体会到两种药物的差异

1 pwr.2p.test(h=ES.h(.65,.6),sig.level = .05,power = .9,alternative = \'greater\')

  结论:本案例中使用单边检验,得出需要1605名受试者才能得出两种药品的区别

6.卡方检验

  卡方检验用来评价两个变量之间的关系,零假设是变量之间独立,拒绝零假设是变量不独立

  案例:研究晋升和种族的关系:样本中70%是白人,10%黑人,20%西班牙裔,相比20%的黑人和50%的西班牙裔,60%的白人更容易获得晋升

1 prob <- matrix(c(.42,.28,.03,.07,.10,.10),byrow = T,nrow = 3)
2 # 计算双因素列连表中的备择假设的效应值
3 ES.w2(prob)
4 # w是效应值,
5 # df是自由度
6 pwr.chisq.test(w=0.1853198,df=2,sig.level = .05,power = .90)

  结论:该实验需要369名测试者才能证明晋升和种族存在关联

7.在新的情况下选择合适的效应值

  7.1单因素

 1 es <- seq(.1,.5,.01)
 2 nes <- length(es)
 3 samsize <- NULL
 4 for(i in 1:nes){
 5   result <- pwr.anova.test(k=5,f=es[i],sig.level = .05,power = .90)
 6   samsize[i] <- ceiling(result$n)
 7 }
 8 plot(samsize,es,type=\'l\',lwd=\'2\',col=\'red\',
 9      ylab = \'Effect Size\',
10      xlab = \'Sample Szie\',
11      main = \'One way Anova with power=.90 and alpha=.05\')

  结论:赝本数量高于200时,在增加样本是效果不明显

  7.2 绘制功效分析图

 1 # 1.生成一系列相关系数和功效值
 2 r <- seq(.1,.5,.01)
 3 nr <- length(r)
 4 
 5 p <- seq(.4,.9,.1)
 6 np <- length(p)
 7 
 8 # 2.获取样本大小
 9 samsize <- array(numeric(nr*np),dim = c(nr,np))
10 
11 for(i in 1:np){
12   for(j in 1:nr){
13     result <- pwr.r.test(n=NULL,r=r[j],sig.level = .05,power = p[i],alternative = \'two.sided\')
14     samsize[j,i] <- ceiling(result$n)
15   }
16 }
17 
18 # 3.创建图形
19 xrange <- range(r)
20 yrange <- round(range(samsize))
21 colors <- rainbow(length(p))
22 plot(xrange,yrange,type=\'n\',
23      xlab = \'Corrlation Coefficient\',
24      ylab = \'Sample Size\')
25 # 4.添加功效曲线
26 for(i in 1:np){
27   lines(r,samsize[,i],type=\'l\',lwd=2,col=colors[i])
28 }
29 # 5.网格线
30 abline(v=0,h=seq(0,yrange[2],50),lty=2,col=\'grey89\')
31 abline(h=0,v=seq(xrange[1],xrange[2],.02),lty=2,col=\'grey89\')
32 # 6.标题和注释
33 title(\'Sample Size Estimation for Corrlation\\nSig=0.05\')
34 legend(\'topright\',title = \'Power\',as.character(p),fill=colors)

 

   结论:在40%的置信度下,要检测到0.2的相关性需要约75个样本,在90%的置信度下,要检测到相同的相关性需要大约260个样本

 

以上是关于假设检验中统计功效、效应大小及样本量的主要内容,如果未能解决你的问题,请参考以下文章

统计学-假设检验

R语言使用pwr包的pwr.t.test函数对分组样本数相同的t检验进行效用分析(power analysis)在已知效应量(effect size)显著性水平样本量的情况下计算假设检验的效用值

R语言-选择样本数量

样本量大小会影响假设检验的结果(是否显著)吗?

如何评估假设检验的好坏

R语言多因素方差分析及评估假设检验