参考资料:R语言实战【第2版】
1、t检验
对于t检验,pwr.t.test()函数提供了许多有用的功效分析选项,如下:
pwr.t.test(n=,d=,sig.level=,power=,type=,alternative=)
其中,n为样本大小;
d为效应值,即标准化的均值之差。
sig.level表示显著性水平,默认为0.05;
power:为功效水平;
type指检验类型:双样本t检验("two.sample")、单样本t检验("one.sample")、配对t检验("paired"),默认为双样本t检验;
alternative:指统计检验是双侧检验("two.sided")还是单侧检验("less"或"greater"),默认为双侧检验。
现在我们要进行一项看手机对驾驶反应时间的实验,假定将使用双尾独立样本t检验来比较两种情况下驾驶员的反应时间均值:
如果我们根据过去的经验知道反应时间有1.25s的标准偏差,并认定反应时间1s的差距是巨大差异,那么在这个研究中,可设定要检验的效应值为d=1/1.25=0.8或更大。另外,如果差异存在,我们希望有90%的把握检测到它,由于随机变异性的存在,我们也希望有95%的把握不会误报差异显著。这时,对于该研究需要多少受试者呢?
# 加载pwr包
library(pwr)
# t检验功效分析
pwr.t.test(d=0.8,
sig.level = 0.05,
power=0.9,
type="two.sample",
alternative = "two.sided")
结果表明:每组中沃恩需要34个受试者(共68人),这样才能保证有90%的把握检测到0.8的效应值,并且最多5%的可能性会报差异存在。
下面变化一下问题:假定在比较这两种情况时,我们想检测到总体均值0.5个标准偏差的差异,并且将误报差异的几率限制在1%以内。此外,我们能获得的受试者只有40人。那么在该研究中,我们能检测到这么大总体均值差异的概率是多少?分析如下:
pwr.t.test(n=20,
d=0.5,
sig.level = 0.01,
type="two.sample",
alternative = "two.sided")
结果表明:在0.01的先验显著性水平下,每组20个受试者(共40个),因变量的标准差为1.25s,有最多14%的可能性断言差值为0.625s或者不显著(d=0.5=0.625/1.25)。换句话来说,我们将有86%的可能性错过我们要寻找的效应值。因此,可以可能需要慎重考虑要投入到该研究中的时间和精力。
当是不等样本的t检验时,可用函数:
pwr.r2n.test(n1=,n2=,d=,sig.level=,power=,alternative=)
2、方差分析
pwr.anova.test()函数可以对平衡单因素方差分析进行功效分析。格式为:
pwr.anova.test(k=, n=, f=, sig.level=, power=)
其中,k是组的个数,n是各组中的样本大小。
对于单因素方差分析,效应值通过f来衡量。(其中,,ni=组i的观测数目,N=总观测数目,μi=组i的均值,μ=总体均值,σ2=组内误差方差)
现在对五个组做单因素方差分析,要达到0.8的功效,效应值为0.25,并选择0.05的显著性水平,计算各组需要的样本大小。代码如下:
# 加载pwr包
library(pwr)
# anova功效分析
pwr.anova.test(
k=5,
f=0.25,
power=0.8,
sig.level=0.05
)
结果表明:总样本大小为5×39=195。注意,本例中需要估计在同方差时五个组的均值。