功效分析
此为宫廷土豆的《R语言实战》第十章功效分析学习笔记。
为什么做功效分析呢? 在做与人相关或样本量相关的实验之前,我们需要首先思考我们需要多少样本,才能在统计上检验出实验的结果;或者,对于已经做好的实验,在报告实验结果时,需要证明样本量足够。这些问题需要我们通过功效分析power analysis来解决,使用pwr包实现功效分析。
功效分析的对象
心理学研究中通常使用的统计分析例如t检验、方差分析、卡方检验、相关系数、线性模型等,都是功效分析的对象。对于不同的分析,其函数略有差异,但基本都包括四个数据:样本大小、显著性水平、功效和效应值。四个量中,效应值最难规定,计算效应值通常需要一些相关估计的经验和对过去研究知识的理解。
t检验
pwr.t.test()函数提供了许多有用的功效分析选项,格式为: pwr.t.test(n=, d=, sig.level=, power=, type=, alternative=)。其中n为样本大小,d为效应值,即标准化的均值之差。sig.level为限制性水平,默认为0.05,power为功效水平,type为检验类型:“two.sample”-默认,“one.sample”,“paired”。alternative指统计检验是双侧检验“two.sided”还是单侧检验“less”or“greater”。
library(pwr)
1.已知power大小,计算所需被试人数
以使用手机与驾驶反应时间的实验为例,使用双尾t检验比较使用和不使用手机两种情况下驾驶员的反应时间均值。根据过去的经验,我们知道反应时间有1.25s的反应偏差,并认定反应时间1s的差异是巨大的差异,要检测的效应值为d=1/1.25。此外,如果差异存在,我们希望有90%的把握检测到它,由于随机变异性的存在,我们也希望有95%的把握不会误报差异显著。这时,我们需要多少被试呢?
pwr.t.test(d=0.8, sig.level = 0.05, power=0.9, type = "two.sample", alternative = "two.sided")
结果为:
## Two-sample t test power calculation
##
## n = 33.82555
## d = 0.8
## sig.level = 0.05
## power = 0.9
## alternative = two.sided
##
## NOTE: n is number in *each* group
结果表明,每组需要34个被试,才能保证有90%的把握检测到0.8的效应值,并最多5%的可能性会误报差异存在。
2.知道被试人数,检验power效应
如果我们想检测到总体均值0.5个标准偏差的差异,并且将误报差异的几率限制在1%内。能获得的被试有40人,那么在该研究中,我们能检测到这么大的总体均值差异的概率为多少呢? 假定两种条件下被试人数相同。
pwr.t.test(n=20, d=0.5, sig.level = 0.01, type = "two.sample", alternative = "two.sided")
结果为:
##
## Two-sample t test power calculation
##
## n = 20
## d = 0.5
## sig.level = 0.01
## power = 0.1439551
## alternative = two.sided
##
## NOTE: n is number in *each* group
结果表明,在0.01限制性水平下,每组20个被试,因变量的标准差为1.25s,有低于14%的可能性推断差异为0.625s或者不显著,即将有86%的可能性错误我们要找的效应值。
如果样本人数不同,可用函数:
pwr.t2n.test(n1=20, n2=10, d=0.5, sig.level = 0.01)
结果为:
##
## t test power calculation
##
## n1 = 20
## n2 = 10
## d = 0.5
## sig.level = 0.01
## power = 0.08704957
## alternative = two.sided
结果说明以当前的人数,检验到0.625s的差异更不太可能了。