R 函数power.t.test对 t 检验进行功效计算(输出功效、样本量、效应量或您遗漏的任何参数),但样本量只有一个参数。该pwr软件包具有一个功能pwr.t2n.test,可以为具有不同样本大小 (n1,n2) 的两样本 t 检验执行计算。最后,这套统计函数包括一个用于 Welch t 检验的函数(用于具有不同方差的样本),但只包括一个样本量参数。
我一直无法找到计算韦尔奇 t 功率的公式。
有人可以帮我解决这个问题的公式或 R 函数吗?
R 函数power.t.test对 t 检验进行功效计算(输出功效、样本量、效应量或您遗漏的任何参数),但样本量只有一个参数。该pwr软件包具有一个功能pwr.t2n.test,可以为具有不同样本大小 (n1,n2) 的两样本 t 检验执行计算。最后,这套统计函数包括一个用于 Welch t 检验的函数(用于具有不同方差的样本),但只包括一个样本量参数。
我一直无法找到计算韦尔奇 t 功率的公式。
有人可以帮我解决这个问题的公式或 R 函数吗?
评论:首先,我建议您仔细考虑是否有充分的理由使用不同的样本量。特别是如果较小的样本量用于人口较多的组,这不是一个有效的设计。
其次,您可以使用模拟来获得各种场景的动力。例如,如果您使用那么您有大约 75% 的功效可以通过 Welch 检验检测总体均值中在 5% 的水平。
n1=20; n2=50; sg1=15; sg2=10; dlt=10
set.seed(619)
pv = replicate(10^6,
t.test(rnorm(n1,0,sg1),rnorm(n2,dlt,sg2))$p.val)
mean(pv <= .05)
[1] 0.753043
因为 P 值直接取自t.testR 中的过程,所以结果应该精确到 2 或 3 个位置,但这种模拟方式运行缓慢(可能需要 2 或 3 分钟),迭代次数达到一百万次。
如果您对各种样本大小进行重复运行,您可能希望使用 10,000 次迭代,然后使用更多的迭代来验证最终设计的功效。
更改为可获得 67% 的功率,因此第 2 组中额外的 30 个观察值并没有像您希望的那样“购买”您。相比之下, 的平衡设计提供大约 90% 的功率(其他一切都相同)。
Show-Li Jan 和 Gwowen Shieh 于 2011 年 12 月在 Behavior Research Methods 上发表的文章“在各种分配和成本考虑下的 Welch 检验的最佳样本量”在补充材料 A 中有以下代码,这里根据我自己的人机工程学稍作修改。
ssize.welch = function(alpha=0.05, power=0.90, mu1, mu2, sigma1, sigma2, n2n1r, use_exact=FALSE)
{
mud<-mu1-mu2
sigsq1<-sigma1^2
sigsq2<-sigma2^2
numint<-1000
dd<-0.00001
coevec<-c(1,rep(c(4,2),numint/2-1),4,1)
intl<-(1-2*dd)/numint
bvec<-intl*seq(0,numint)+dd
#Z method
za<-qnorm(1-alpha/2)
zb<-qnorm(power)
n1<-ceiling(((sigsq1+sigsq2/n2n1r)*(za+zb)^2)/(mud^2))
n2<-ceiling(n1*n2n1r)
if(use_exact) #Exact method
{
n1 = n1-1
n2 = n2-1
powere<-0
while(powere<power)
{
n1<-n1+1
n2<-ceiling(n1*n2n1r)
sigsqt<-sigsq1/n1+sigsq2/n2
hsigsqt<-sqrt(sigsqt)
wpdf<-(intl/3)*coevec*dbeta(bvec,(n1-1)/2,(n2-1)/2)
dft<-n1+n2-2
p1<-(n1-1)/dft
p2<-1-p1
s1<-sigsq1/n1
s2<-sigsq2/n2
b12<-(s1/p1)*bvec+(s2/p2)*(1-bvec)
r1<-(s1/p1)*bvec/b12
r2<-1-r1
dfevec<-1/((r1^2)/(n1-1)+(r2^2)/(n2-1))
tdfea<-qt(1-alpha/2,dfevec)
powere<-sum(wpdf*pt(-tdfea*sqrt(b12/sigsqt),dft,mud/hsigsqt))+1-sum(wpdf*pt(tdfea*sqrt(b12/sigsqt),dft,mud/hsigsqt))
}
}
c(n1=n1,n2=n2)
}
ssize.welch(0.05,0.9,85,105,10,20,3)
ssize.welch(0.05,0.9,85,105,10,20,3,TRUE)
Z 方法也是https://clincalc.com/stats/samplesize.aspx中使用的方法,该方法引用了 Rosner B. 生物统计学基础。第 7 版。马萨诸塞州波士顿:布鲁克斯/科尔;2011. 奇怪的是,它强制你只输入一个方差,但它给出的公式可以使用两个(并且与上面的论文相同)。它本着计算样本量的常用方法的精神,但我不太确定底层近似值何时开始为假。
经过一番折腾,这两种方法都会给出相似的结果,除非您有非常不平衡的群体(但在这种情况下,在某些时候您可能只想将超大群体近似为已知群体)。
希望这可以帮助。
编辑:刚刚意识到这并不能完全回答您关于功效而不是样本量的问题,但是您可以轻松地翻转 Z 方法公式来计算功效(确切的方法似乎更麻烦;最坏的情况,数字试验和错误应该起作用,因为关系是单调)。