Leistungsberechnung für Likelihood-Ratio-Test

8

Ich habe zwei unabhängige Poisson-Zufallsvariablen, und X 2 , mit X 1Pois ( λ 1 ) und X 2Pois ( λ 2 ) . Ich möchte H 0 testen :X1X2X1Pois(λ1)X2Pois(λ2) gegenüber der Alternative H 1 :H0:λ1=λ2 .H1:λ1λ2

Ich habe bereits Schätzungen der maximalen Wahrscheinlichkeit unter Null- und Alternativhypothese (Modell) abgeleitet und basierend auf den von mir berechneten LRT-Statistiken (Likelihood Ratio Test) (R-Codes unten angegeben).

Jetzt bin ich daran interessiert, die Leistung des Tests zu berechnen, basierend auf:

  1. Behobenes Alpha (Typ 1 Fehler) = 0,05.
  2. Verwenden Sie unterschiedliche Stichprobengrößen (n), z. B. n = 5, 10, 20, 50, 100.
  3. Unterschiedliche Kombination von und λ 2 , die die LRT-Statistik ändert (berechnet wie unten).λ1λ2LRTstat

Hier ist mein R-Code:

X1 = rpois(λ1); X2 = rpois(λ2)
Xbar = (X1+X2)/2
LLRNum = dpois(X1, X1) * dpois(X2, X2)
LLRDenom = dpois(X1, Xbar) * dpois(X2, Xbar)
LRTstat = 2*log(LLRNum/LLRDenom)

Wie kann ich von hier aus mit der Leistungsberechnung fortfahren (vorzugsweise in R)?

Adam
quelle

Antworten:

9

Sie können dies mithilfe der Simulation tun.

Schreiben Sie eine Funktion, die Ihren Test durchführt und die Lambdas und Stichprobengröße (n) als Argumente akzeptiert (Sie haben oben einen guten Anfang).

Führen Sie nun für einen bestimmten Satz von Lambdas und Stichprobengrößen die Funktion einige Male aus (die Replikationsfunktion in R ist dafür großartig). Dann ist die Potenz nur der Anteil, mit dem Sie die Nullhypothese ablehnen. Sie können die mittlere Funktion verwenden, um den Anteil zu berechnen, und prop.test, um ein Konfidenzintervall für die Potenz anzugeben.

Hier ist ein Beispielcode:

tmpfunc1 <- function(l1, l2=l1, n1=10, n2=n1) {
    x1 <- rpois(n1, l1)
    x2 <- rpois(n2, l2)
    m1 <- mean(x1)
    m2 <- mean(x2)
    m <- mean( c(x1,x2) )

    ll <- sum( dpois(x1, m1, log=TRUE) ) + sum( dpois(x2, m2, log=TRUE) ) - 
            sum( dpois(x1, m, log=TRUE) ) - sum( dpois(x2, m, log=TRUE) )
    pchisq(2*ll, 1, lower=FALSE)
}

# verify under null n=10

out1 <- replicate(10000, tmpfunc1(3))
mean(out1 <= 0.05)
hist(out1)
prop.test( sum(out1<=0.05), 10000 )$conf.int

# power for l1=3, l2=3.5, n1=n2=10
out2 <- replicate(10000, tmpfunc1(3,3.5))
mean(out2 <= 0.05)
hist(out2)

# power for l1=3, l2=3.5, n1=n2=50
out3 <- replicate(10000, tmpfunc1(3,3.5,n1=50))
mean(out3 <= 0.05)
hist(out3)

Meine Ergebnisse (Ihr Wille unterscheidet sich mit einem anderen Startwert, sollte aber ähnlich sein) zeigten eine Fehlerrate vom Typ I (Alpha) von 0,0496 (95% CI 0,0455-0,0541), die nahe bei 0,05 liegt. Durch Erhöhen der 10000 kann eine höhere Genauigkeit erzielt werden im Befehl replizieren. Die von mir berechneten Potenzen waren: 9,86% und 28,6%. Die Histogramme sind nicht unbedingt notwendig, aber ich mag es, die Muster zu sehen.

Greg Snow
quelle
Ich habe eine Funktion (LRT.POIS) mit den Parametern nSim, Lambda1, Lambda2 erstellt, aber von jetzt an bin ich irgendwie verloren.
Adam
2
Ich habe einen Beispielcode hinzugefügt, um den grundlegenden Prozess zu zeigen.
Greg Snow