Nach dem Beitrag von Stephan Kolassa (ich kann dies nicht als Kommentar hinzufügen) habe ich einen alternativen Code für eine Simulation. Dies verwendet dieselbe Grundstruktur, ist jedoch etwas mehr explodiert, sodass es möglicherweise etwas einfacher zu lesen ist. Es basiert auch auf dem Code von Kleinman und Horton , um die logistische Regression zu simulieren.
nn ist die Nummer in der Stichprobe. Die Kovariate sollte kontinuierlich normalverteilt und standardisiert sein, um 0 und sd 1 zu bedeuten. Wir verwenden rnorm (nn), um dies zu erzeugen. Wir wählen ein Quotenverhältnis aus und speichern es im Verhältnis ungerade. Wir wählen auch eine Nummer für den Achsenabschnitt. Die Wahl dieser Zahl bestimmt, welcher Anteil der Stichprobe das "Ereignis" erfährt (z. B. 0,1, 0,4, 0,5). Sie müssen mit dieser Zahl herumspielen, bis Sie das richtige Verhältnis erhalten. Der folgende Code gibt Ihnen einen Anteil von 0,1 mit einer Stichprobengröße von 950 und einem OR von 1,5:
nn <- 950
runs <- 10000
intercept <- log(9)
odds.ratio <- 1.5
beta <- log(odds.ratio)
proportion <- replicate(
n = runs,
expr = {
xtest <- rnorm(nn)
linpred <- intercept + (xtest * beta)
prob <- exp(linpred)/(1 + exp(linpred))
runis <- runif(length(xtest),0,1)
ytest <- ifelse(runis < prob,1,0)
prop <- length(which(ytest <= 0.5))/length(ytest)
}
)
summary(proportion)
Zusammenfassung (Anteil) bestätigt, dass der Anteil ~ 0,1 beträgt
Dann wird unter Verwendung der gleichen Variablen die Leistung über 10000 Läufe berechnet:
result <- replicate(
n = runs,
expr = {
xtest <- rnorm(nn)
linpred <- intercept + (xtest * beta)
prob <- exp(linpred)/(1 + exp(linpred))
runis <- runif(length(xtest),0,1)
ytest <- ifelse(runis < prob,1,0)
summary(model <- glm(ytest ~ xtest, family = "binomial"))$coefficients[2,4] < .05
}
)
print(sum(result)/runs)
Ich denke, dass dieser Code korrekt ist - ich habe ihn mit den Beispielen in Hsieh, 1998 (Tabelle 2) verglichen, und er scheint mit den drei dort angegebenen Beispielen übereinzustimmen. Ich habe es auch anhand des Beispiels auf S. 342 - 343 von Hosmer und Lemeshow getestet, wo es eine Potenz von 0,75 fand (im Vergleich zu 0,8 in Hosmer und Lemeshow). Es kann also sein, dass dieser Ansatz unter bestimmten Umständen die Macht unterschätzt. Wenn ich jedoch dasselbe Beispiel in diesem Online-Rechner ausgeführt habe , habe ich festgestellt, dass es mit mir übereinstimmt und nicht das Ergebnis in Hosmer und Lemeshow.
Wenn uns jemand sagen kann, warum dies der Fall ist, würde mich das interessieren.