Die logistische Regression ergibt bis zur numerischen Ungenauigkeit genau die gleichen Anpassungen wie die tabellierten Prozentsätze. Wenn also die unabhängigen Variablen sind Faktor - Objekte factor1
, etc. und die abhängigen Ergebnisse (0 und 1) sind x
, dann können Sie die Effekte mit einem Ausdruck erhalten wie
aggregate(x, list(factor1, <etc>), FUN=mean)
Vergleichen Sie dies mit
glm(x ~ factor1 * <etc>, family=binomial(link="logit"))
Als Beispiel generieren wir einige zufällige Daten:
set.seed(17)
n <- 1000
x <- sample(c(0,1), n, replace=TRUE)
factor1 <- as.factor(floor(2*runif(n)))
factor2 <- as.factor(floor(3*runif(n)))
factor3 <- as.factor(floor(4*runif(n)))
Die Zusammenfassung wird mit erhalten
aggregate.results <- aggregate(x, list(factor1, factor2, factor3), FUN=mean)
aggregate.results
Seine Ausgabe umfasst
Group.1 Group.2 Group.3 x
1 0 0 0 0.5128205
2 1 0 0 0.4210526
3 0 1 0 0.5454545
4 1 1 0 0.6071429
5 0 2 0 0.4736842
6 1 2 0 0.5000000
...
24 1 2 3 0.5227273
Zur späteren Bezugnahme beträgt die Schätzung für Faktoren auf den Ebenen (1,2,0) in Zeile 6 der Ausgabe 0,5.
Die logistische Regression gibt ihre Koeffizienten folgendermaßen auf:
model <- glm(x ~ factor1 * factor2 * factor3, family=binomial(link="logit"))
b <- model$coefficients
Um sie zu nutzen, benötigen wir die logistische Funktion:
logistic <- function(x) 1 / (1 + exp(-x))
Um beispielsweise die Schätzung für Faktoren auf Ebenen (1,2,0) zu erhalten, berechnen Sie
logistic (b["(Intercept)"] + b["factor11"] + b["factor22"] + b["factor11:factor22"])
(Beachten Sie, wie alle Wechselwirkungen in das Modell aufgenommen werden müssen und alle zugehörigen Koeffizienten angewendet werden müssen, um eine korrekte Schätzung zu erhalten.) Die Ausgabe ist
(Intercept)
0.5
Zustimmung zu den Ergebnissen von aggregate
. (Die Überschrift "(Intercept)" in der Ausgabe ist ein Überbleibsel der Eingabe und für diese Berechnung praktisch bedeutungslos.)
Die gleichen Informationen in noch einer anderen Form erscheinen in der Ausgabe vontable
. ZB die (langwierige) Ausgabe von
table(x, factor1, factor2, factor3)
enthält dieses Panel:
, , factor2 = 2, factor3 = 0
factor1
x 0 1
0 20 21
1 18 21
Die Spalte für factor1
= 1 entspricht den drei Faktoren auf den Ebenen (1,2,0) und zeigt, dass der Werte von gleich , was mit dem übereinstimmt, was wir aus und lesen .121/(21+21)=0.5x
1aggregate
glm
Schließlich wird eine Kombination von Faktoren, die den höchsten Anteil im Datensatz ergeben, zweckmäßigerweise aus der Ausgabe von aggregate
:
> aggregate.results[which.max(aggregate.results$x),]
Group.1 Group.2 Group.3 x
4 1 1 0 0.6071429