两样本 Welch t 检验的功效计算

机器算法验证 r t检验 统计能力
2022-03-12 18:59:36

R 函数power.t.test对 t 检验进行功效计算(输出功效、样本量、效应量或您遗漏的任何参数),但样本量只有一个参数。pwr软件包具有一个功能pwr.t2n.test,可以为具有不同样本大小 (n1,n2) 的两样本 t 检验执行计算。最后,这套统计函数包括一个用于 Welch t 检验的函数(用于具有不同方差的样本),但只包括一个样本量参数。

我一直无法找到计算韦尔奇 t 功率的公式。

有人可以帮我解决这个问题的公式或 R 函数吗?

2个回答

评论:首先,我建议您仔细考虑是否有充分的理由使用不同的样本量。特别是如果较小的样本量用于人口较多的组,这不是一个有效的设计。

其次,您可以使用模拟来获得各种场景的动力。例如,如果您使用那么您有大约 75% 的功效可以通过 Welch 检验检测总体均值中在 5% 的水平。n1=20,σ1=15, n2=50,σ2=10,δ=10

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% 的功率(其他一切都相同)。n2=20n1=n2=35

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 方法公式来计算功效(确切的方法似乎更麻烦;最坏的情况,数字试验和错误应该起作用,因为关系是单调)。