R语言入门之效力分析(Power Analysis)

2020-08-06 09:58:01 浏览数 (2)

1. Power Analysis前言

效力分析是实验设计阶段非常重要的一部分内容,它主要是帮助我们确定在指定显著性条件下实验所需要的样本量并评估该实验设计的统计效力。通过效力分析,我们也能给出在现有的样本量下该实验结论的可靠性。如果结论的可靠性非常低,那么几乎可以宣布这个实验是无效的,我们应该修改或者直接终止实验。由此看来,效力分析是我们在进行研究时需要重视的一部分内容。

在效力分析中,我们常常需要密切关注如下四个统计量:

(1)样本量(sample size)

(2)效应量(effect size)

(3)显著性水平(significance level)

(4)效力(power)

需要注意的是,上面四个统计量是只需要知道其中三个就可以算出剩下的那个。

2. Power Analysis在R中的实现

R包“pwr”提供了大量用于效力分析的函数,下表列出了其中比较重要的函数:

function

power calculations for

pwr.2p.test

two proportions (equal n)

pwr.2p2n.test

two proportions (unequal n)

pwr.anova.test

balanced one way ANOVA

pwr.chisq.test

chi-square test

pwr.f2.test

general linear model

pwr.p.test

proportion (one sample)

pwr.r.test

correlation

pwr.t.test

t-tests (one sample, 2 sample, paired)

pwr.t2n.test

t-test (two samples with unequal n)

接下来我会就一些常用的函数来给大家做个简单介绍。

对于上面的每一个函数,你只要指定样本量、效应量、显著性和效力这四个统计量中的三个,它就能给你算出剩下的那一个。这里显著性水平的默认值是0.05,因此当你想要通过样本量、效应量和效力来计算显著性时,你需要指定参数"sig.level=NULL"。

2.1 T检验

就t检验而言,我们可以使用如下函数来实现效力分析:

代码语言:javascript复制
pwr.t.test(n= , d = , sig.level = , power = , type = c("two.sample","one.sample", "paired"))

其中n代表样本量,d代表效应量,sig.level代表显著性水平,power代表效力,type用于指定t检验的类型,比如两样本t检验、单样本t检验或者配对t检验。如果你的两组样本量不相等,可以使用如下函数:

代码语言:javascript复制
pwr.t2n.test(n1= , n2= , d = , sig.level =, power = )

这里n1和n2分别指两组样本的样本量。

就t检验而言,它的效应量可以用如下方法来估计:

Cohen 建议用0.2代表小效应量、0.5代表中等效应量以及 0.8来代表大效应量。

当然,你可以通过设置参数alternative="two.sided"、"less"或者"greater"来指定双侧检验或者单侧检验,默认值是双侧检验。

2.2 方差分析(ANOVA)

对于单因素方差分析的效力检验,你可以使用如下函数

代码语言:javascript复制
pwr.anova.test(k= , n = , f = , sig.level = , power = )

这里k是组数,n是每组的样本数,f是指方差分析的效应量。

对于单因素方法分析而言,它的效应量按照如下公式计算:

Cohen建议将f值为0.1作为小效应量、0.25作为中等效应量以及0.4作为大效应量。

2.3 相关性

对于相关系数的效力检验,可以使用如下函数:

代码语言:javascript复制
pwr.r.test(n= , r = , sig.level = , power = )

这里n指样本量,r指相关系数,同样也是效应量。Cohen建议将相关系数r等于0.1作为小效应量、0.3作为中等效应量以及0.5作为大效应量。

2.4 卡方检验

卡方检验的效力分析,我们可以使用如下函数:

代码语言:javascript复制
pwr.chisq.test(w=, N = , df = , sig.level =, power = )

这里w代表效应量,N代表总样本数,df代表自由度。

卡方检验的效应量按如下公式进行计算:

Cohen建议将w值0.1作为小效应量,0.3作为中等效应量以及0.5作为大效应量。

3. 部分实例

代码语言:javascript复制
library(pwr) #加载R包
# 对于单因素方差分析,假设我们有5个比较组,显著性水平为0.05
# 同时效力为0.8,效应量取中等值0.25
# 这样我们就可以计算各组所需样本数了
pwr.anova.test(k=5,f=0.25,sig.level=0.05,power=0.8)

从上述结果我们可以看出来,在显著性水平为0.05,效力为0.8的单因素方差分析(5的比较组)中,每组所需样本数约为39。

代码语言:javascript复制
#现在将前面例子中的样本数指定为50
# 其他条件不变,计算该实验设计的效力
pwr.anova.test(k=5,n=50,f=0.25,sig.level=0.05)

我们可以看到此时的效力为0.89,比之前的0.8要大,说明提高样本量可以提高统计效力!

好了,今天的内容就分享到这里,希望大家能够在R中熟练进行效力分析,为自己的实验设计奠定统计基础,咱们下期再见!

0 人点赞