以前主要用SPSS的时候,如果要计算效应量(Cohen’s d)和检验力(power值)的话,就得SPSS,Gpower软件来回切换。
现在做研究跑数据更多地用stata了,发现只用stata就可以完成所有的计算。
其中,效应量和检验力涉及到的命令分别是esize
和pwoer
。
以软件自带数据auto为例,用stata的命令计算独立样本t检验后的Cohen’s d和power值。
# 调用数据
sysuse auto
# 独立样本t检验,自变量foreign,因变量mpg
ttest mpg,by(foreign)
# 获取两组的均值,样本量和标准差
local m1=r(mu_1)
local m2=r(mu_2)
local n1=r(N_1)
local n2=r(N_2)
local sd1=r(sd_1)
local sd2=r(sd_2)
#得到效应量
esize twosample mpg,by(foreign)
#得到power值
power twomeans `m1' `m2',n1(`n1') n2(`n2') sd1(`sd1') sd2(`sd2') knownsds
1、独立样本t检验
2、效应量
输入help esize
后,可以看到该命令的帮助文档。
其中,置信区间CI可以通过
level()
进行设置,例如,想看d值的90%CI,则是esize twosample mpg, by(foreign) level(90)
。
3、power值
结果显示是88.87%的power值,这个计算就是根据t检验结果后存储的两组的均值,样本量和标准差计算得到的。
输入help power
后,可以看到该命令的帮助文档。
power
这个命令可以计算样本量,power值和效应量及目标参数。
此外,涉及到的假设检验包括以下这些:
4、多个因变量的循环
总之,在stata里就可以一次性得到检验结果,效应量和检验力结果了,不用来回切换软件了。
而且,如果需要做多个因变量的t检验的话,写个循环就好啦~省时省力。
例如:
# 将因变量名放置暂元dep后
local dep price mpg rep78
# 循环暂元dep,对每个因变量进行检验
foreach i of local dep {
# 对因变量进行描述
d `i'
ttest `i',by(foreign)
local m1=r(mu_1)
local m2=r(mu_2)
local n1=r(N_1)
local n2=r(N_2)
local sd1=r(sd_1)
local sd2=r(sd_2)
esize twosample `i',by(foreign)
power twomeans `m1' `m2',n1(`n1') n2(`n2') sd1(`sd1') sd2(`sd2') knownsds
}
结果如下: