Leistung für zwei Proben t Test


10

Ich versuche, die Leistungsberechnung für den Fall des t-Tests mit zwei unabhängigen Stichproben zu verstehen (ohne gleiche Varianzen anzunehmen, also habe ich Satterthwaite verwendet).

Hier ist ein Diagramm, das ich gefunden habe, um den Prozess zu verstehen:

Geben Sie hier die Bildbeschreibung ein

Also nahm ich an, dass angesichts der folgenden Angaben zu den beiden Populationen und der Stichprobengröße:

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

Ich könnte den kritischen Wert unter der Null berechnen, der sich auf die Wahrscheinlichkeit eines oberen Endes von 0,05 bezieht:

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

und dann die alternative Hypothese berechnen (die ich für diesen Fall gelernt habe, ist eine "nicht zentrale t-Verteilung"). Ich habe das Beta im obigen Diagramm anhand der nicht zentralen Verteilung und des oben angegebenen kritischen Werts berechnet. Hier ist das vollständige Skript in 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)

Dies ergibt einen Leistungswert von 0,4935132.

Ist das der richtige Ansatz? Ich stelle fest, dass ich eine andere Antwort bekomme, wenn ich eine andere Software zur Leistungsberechnung verwende (wie z. B. SAS, die ich meiner Meinung nach entsprechend meinem Problem unten eingerichtet habe) (von SAS ist es 0,33).

SAS-CODE:

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

Letztendlich möchte ich ein Verständnis bekommen, das es mir ermöglicht, Simulationen für kompliziertere Verfahren zu betrachten.

EDIT: Ich habe meinen Fehler gefunden. gewesen sein sollte

1-Punkt (CV, df, ncp) NICHT 1-Punkt (t, df, ncp)

Antworten:


8

Sie sind nah dran, einige kleine Änderungen sind jedoch erforderlich:

  • Der wahre Unterschied in den Mitteln wird normalerweise als , nicht umgekehrt.μ2μ1
  • G * Power verwendet in diesem Fall als Freiheitsgrade für die Verteilung (unterschiedliche Varianzen, gleiche Gruppengrößen), gemäß einem hier erläuterten Vorschlag von Cohentn1+n22t
  • SAS verwendet möglicherweise die Welch-Formel oder die Satterthwaite-Formel für den df bei ungleichen Varianzen (in diesem von Ihnen zitierten PDF ) - mit nur 2 signifikanten Stellen im Ergebnis, die man nicht sagen kann (siehe unten).

Mit n1, n2, mu1, mu2, sd1, sd2wie in Ihrer Frage definiert:

> 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

Dies entspricht dem Ergebnis von G * Power , einem großartigen Programm für diese Fragen. Es zeigt auch den df, den kritischen Wert und den ncp an, sodass Sie alle diese Berechnungen separat überprüfen können.

Geben Sie hier die Bildbeschreibung ein

Bearbeiten: Die Verwendung der Satterthwaite-Formel oder der Welch-Formel ändert sich nicht viel (immer noch 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

(beachten Sie, dass ich etwas einige Variablennamen wie geändert t, dfund diffsind auch die Namen von eingebauten Funktionen, beachten Sie auch , dass der Zähler des Codes für dffalsch ist, hat es eine fehl am Platze ^2, und man ^2zu viele, sollte es sein ((sd1^2/n1) + (sd2^2/n2))^2)


Vielen Dank! Die eine Sache ist, geht diese Formel für df nicht davon aus, dass die Populationsstandardabweichungen gleich sind? Siehe Seite 3 des Folgenden (woher ich den Satterthwaite df habe): stata-journal.com/sjpdf.html?articlenum=st0062 . Angeblich verwendet SAS diese Annäherung in dem von mir veröffentlichten Prozess.
B_Miner

Ich habe meinen Fehler gefunden und oben in meiner Frage angepasst. Danke noch einmal!
B_Miner

1
@B_Miner Ich habe meine Antwort aktualisiert, um Ihre Frage zu beantworten.
Caracal

1

Wenn Sie hauptsächlich daran interessiert sind, die Leistung zu berechnen (anstatt sie von Hand zu lernen) und R bereits verwenden, schauen Sie sich das pwrPaket und entweder die Funktionen pwr.t.testoder an pwr.t2n.test. (Diese können gut sein, um Ihre Ergebnisse zu überprüfen, auch wenn Sie es von Hand tun, um zu lernen).

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.