Kekuatan untuk dua uji t sampel

10

Saya mencoba memahami perhitungan daya untuk kasus dua sampel t-test independen (tidak mengasumsikan varian yang sama sehingga saya menggunakan Satterthwaite).

Berikut adalah diagram yang saya temukan untuk membantu memahami proses:

masukkan deskripsi gambar di sini

Jadi saya berasumsi yang diberikan berikut tentang dua populasi dan diberikan ukuran sampel:

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

Saya bisa menghitung nilai kritis di bawah nol terkait dengan kemungkinan 0,05 ekor:

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

dan kemudian menghitung hipotesis alternatif (yang untuk kasus ini saya pelajari adalah "distribusi t sentral"). Saya menghitung beta dalam diagram di atas menggunakan distribusi non pusat dan nilai kritis yang ditemukan di atas. Berikut ini skrip lengkap dalam R:

#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)

Ini memberikan nilai daya 0,4935132.

Apakah ini pendekatan yang benar? Saya menemukan bahwa jika saya menggunakan perangkat lunak perhitungan daya lainnya (seperti SAS, yang saya pikir telah saya setel dengan masalah saya di bawah ini) saya mendapatkan jawaban lain (dari SAS 0,33).

KODE SAS:

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

Pada akhirnya, saya ingin mendapatkan pemahaman yang memungkinkan saya untuk melihat simulasi untuk prosedur yang lebih rumit.

EDIT: Saya menemukan kesalahan saya. seharusnya

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

B_Miner
sumber

Jawaban:

8

Anda sudah dekat, beberapa perubahan kecil diperlukan:

  • Perbedaan sesungguhnya dalam rata-rata biasanya diambil sebagai , bukan sebaliknya.μ2-μ1
  • G * Power menggunakan sebagai derajat kebebasan untuk distribusi- dalam kasus ini (varian berbeda, ukuran grup yang sama), mengikuti saran dari Cohen seperti yang dijelaskan di sinin1+n2-2t
  • SAS mungkin menggunakan rumus Welch atau rumus Satterthwaite untuk df yang diberikan varian yang tidak sama (ditemukan dalam pdf ini yang Anda kutip ) - dengan hanya 2 digit signifikan dalam hasil yang tidak dapat diketahui (lihat di bawah)

Dengan n1, n2, mu1, mu2, sd1, sd2sebagaimana didefinisikan dalam pertanyaan Anda:

> 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

Ini cocok dengan hasil dari G * Power yang merupakan program bagus untuk pertanyaan ini. Ini menampilkan df, nilai kritis, ncp juga, sehingga Anda dapat memeriksa semua perhitungan ini secara terpisah.

masukkan deskripsi gambar di sini

Sunting: Menggunakan rumus Satterthwaite atau rumus Welch tidak banyak berubah (masih 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

(perhatikan bahwa saya sedikit mengubah beberapa nama variabel sebagai t,, dfdan diffjuga nama fungsi bawaan, juga perhatikan bahwa pembilang kode Anda dfsalah, kode salah tempat ^2, dan ^2terlalu banyak, seharusnya ((sd1^2/n1) + (sd2^2/n2))^2)

caracal
sumber
Terima kasih! Satu hal adalah, bukankah rumus untuk ini mengasumsikan bahwa standar deviasi populasi adalah sama? Lihat halaman 3 dari yang berikut (di mana saya mendapatkan Satterthwaite df): stata-journal.com/sjpdf.html?articlenum=st0062 . Seharusnya, SAS menggunakan perkiraan ini dalam proc yang saya posting.
B_Miner
Saya menemukan kesalahan saya dan menyesuaikan pertanyaan saya di atas. Terima kasih lagi!
B_Miner
1
@ B_Miner Saya sudah memperbarui jawaban saya untuk menjawab pertanyaan Anda.
caracal
1

Jika Anda terutama tertarik dalam menghitung daya (daripada belajar melalui melakukannya dengan tangan) dan Anda sudah menggunakan R maka lihat pwrpaket dan salah satu pwr.t.testatau pwr.t2n.testfungsinya. (Ini bisa bagus untuk memverifikasi hasil Anda bahkan jika Anda melakukannya dengan tangan untuk belajar).

Greg Snow
sumber