İki numune t testi için güç


10

Ben iki bağımsız örnek t-testi (eşit varyans varsayarak Satterthwaite kullandım) için güç hesaplaması anlamaya çalışıyorum.

İşte süreci anlamada yardımcı olduğum bir diyagram:

resim açıklamasını buraya girin

Bu nedenle, iki popülasyon hakkında aşağıdaki ve örnek boyutları verildiğini varsaydım:

mu1<-5
mu2<-6
sd1<-3
sd2<-2
n1<-20
n2<-20

0.05 üst kuyruk olasılığına sahip olma ile ilgili null altında kritik değeri hesaplayabilirim:

df<-(((sd1^2/n1)+(sd2^2/n2)^2)^2) / ( ((sd1^2/n1)^2)/(n1-1) + ((sd2^2/n2)^2)/(n2-1)  )
CV<- qt(0.95,df) #equals 1.730018

ve sonra alternatif hipotezi hesaplayın (bu durumda öğrendiğim bir "merkezi olmayan dağıtım" dır). Yukarıdaki şemada bulunan beta'yı, merkezi olmayan dağılımı ve yukarıda bulunan kritik değeri kullanarak hesapladım. İşte R tam betiği:

#under alternative
mu1<-5
mu2<-6
sd1<-3
sd2<-2
n1<-20
n2<-20


#Under null
Sp<-sqrt(((n1-1)*sd1^2+(n2-1)*sd2^2)/(n1+n2-2))
df<-(((sd1^2/n1)+(sd2^2/n2)^2)^2) / ( ((sd1^2/n1)^2)/(n1-1) + ((sd2^2/n2)^2)/(n2-1)  )
CV<- qt(0.95,df)


#under alternative
diff<-mu1-mu2
t<-(diff)/sqrt((sd1^2/n1)+ (sd2^2/n2))
ncp<-(diff/sqrt((sd1^2/n1)+(sd2^2/n2)))


#power
1-pt(t, df, ncp)

Bu 0.4935132'lik bir güç değeri verir.

Bu doğru bir yaklaşım mı? Başka bir güç hesaplama yazılımı (SAS gibi, benim sorunumla eşdeğer olarak kurduğumu düşünüyorum) kullanırsam başka bir cevap alırım (SAS'dan 0.33).

SAS KODU:

proc power;
      twosamplemeans test=diff_satt
         meandiff = 1
         groupstddevs = 3 | 2
         groupweights = (1 1)
         ntotal = 40
         power = .
        sides=1;
   run;

Sonuçta, daha karmaşık prosedürler için simülasyonlara bakmamı sağlayacak bir anlayış edinmek istiyorum.

EDIT: Hatamı buldum. olması gerekirdi

1-pt (CV, df, ncp) NOT 1-pt (t, df, ncp)

Yanıtlar:


8

Yakındasınız, ancak bazı küçük değişiklikler gerekli:

  • gerçek fark, , genellikle olarak alınır .μ2μ1
  • G * Güç , burada açıklandığı gibi Cohen'in önerisini takiben, bu durumda dağılımı için serbestlik derecesi olarak kullanır (farklı varyanslar, aynı grup boyutları).tn1+n22t
  • SAS, eşit olmayan varyanslar ( belirttiğiniz bu pdf'de bulunur) verilen df için Welch formülünü veya Satterthwaite formülünü kullanabilir - sonuçta yalnızca 2 önemli basamak söyleyemez (aşağıya bakın)

Sorunuzda n1, n2, mu1, mu2, sd1, sd2tanımlandığı şekilde:

> alpha   <- 0.05
> dfGP    <- n1+n2 - 2                     # degrees of freedom (used by G*Power)
> cvGP    <- qt(1-alpha, dfGP)             # crit. value for one-sided test (under the null)
> muDiff  <- mu2-mu1                       # true difference in means
> sigDiff <- sqrt((sd1^2/n1) + (sd2^2/n2)) # true SD for difference in empirical means
> ncp     <- muDiff / sigDiff              # noncentrality parameter (under alternative)
> 1-pt(cvGP, dfGP, ncp)                    # power
[1] 0.3348385

Bu , bu sorular için harika bir program olan G * Power'ın sonucuyla eşleşiyor . Tüm bu hesaplamaları ayrı ayrı kontrol edebilmeniz için df, kritik değer, ncp'yi de görüntüler.

resim açıklamasını buraya girin

Düzenleme: Satterthwaite formülünü veya Welch formülünü kullanmak çok fazla değişmez (yine de 0.33 *):

# Satterthwaite's formula
> var1  <- sd1^2
> var2  <- sd2^2
> num   <- (var1/n1 + var2/n2)^2
> denST <- var1^2/((n1-1)*n1^2) + var2^2/((n2-1)*n2^2)
> (dfST <- num/denST)
[1] 33.10309

> cvST <- qt(1-alpha, dfST)
> 1-pt(cvST, dfST, ncp)
[1] 0.3336495

# Welch's formula
> denW <- var1^2/((n1+1)*n1^2) + var2^2/((n2+1)*n2^2)
> (dfW <- (num/denW) - 2)
[1] 34.58763

> cvW   <- qt(1-alpha, dfW)
> 1-pt(cvW, dfW, ncp)
[1] 0.3340453

(Not Ben biraz bazı değişken adları değişti olarak t, dfve diffyerleşik işlevleri de için kod payı olduğuna dikkat isimleri de vardır df, bu bir yanlış yerleştirdiği yanlış olduğunu ^2ve bir ^2çok, olması gerektiği ((sd1^2/n1) + (sd2^2/n2))^2)


Teşekkürler! Bir şey şu ki, df için bu formül popülasyon standart sapmalarının eşit olduğunu varsaymıyor mu? Aşağıdakilerin 3. sayfasına bakın (Satterthwaite df'yi aldım): stata-journal.com/sjpdf.html?articlenum=st0062 . Sözde SAS, bu yaklaşımı, gönderdiğim proc'ta kullanır.
B_Miner

Ben hatamı buldum ve sorumun üstünde ayarlandım. Tekrar teşekkürler!
B_Miner

1
@B_Miner Sorunuzu yanıtlamak için cevabımı güncelledim.
caracal

1

Esas olarak gücü hesaplamakla ilgileniyorsanız (elle yaparak öğrenmekten ziyade) ve zaten R'yi kullanıyorsanız, pwrpakete ve ya pwr.t.testda pwr.t2n.testişlevlere bakın. (bunlar, öğrenmek için elle yapsanız bile sonuçlarınızı doğrulamak için iyi olabilir).

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.