Zeichnen einer Wahrscheinlichkeitskurve für ein Logit-Modell mit mehreren Prädiktoren

12

Ich habe folgende Wahrscheinlichkeitsfunktion:

Prob=11+e-z

wo

z=B0+B1X1++BnXn.

Mein Modell sieht aus wie

Pr(Y.=1)=11+exp(-[-3,92+0,014×(bieten)])

Dies wird über eine Wahrscheinlichkeitskurve visualisiert, die wie die folgende aussieht.

Bildbeschreibung hier eingeben

Ich überlege, meiner ursprünglichen Regressionsgleichung ein paar Variablen hinzuzufügen. Angenommen, ich füge Geschlecht (kategorial: F und M) und Alter (kategorial: <25 und> 26) zum Modell hinzu. Am Ende erhalte ich:

Pr(Y.=1)=11+exp(-[-3,92+0,014×(bieten)+0,25×(Geschlecht)+0,15×(Alter)])

In RI kann eine ähnliche Wahrscheinlichkeitskurve erzeugt werden, die mir die Wahrscheinlichkeit von Y = 1 bei Berücksichtigung aller drei Prädiktoren angibt. Wo ich verloren bin, möchte ich die Wahrscheinlichkeiten für jede mögliche Permutation dieser Variationen finden.

Wenn also das Gebot = 1, das Geschlecht = M und das Alter> = 26 ist, wie hoch ist die Wahrscheinlichkeit, dass Y = 1 ist? Wenn das Gebot = 2, das Geschlecht = F und das Alter> = 26 ist, wie hoch ist die Wahrscheinlichkeit, dass Y = 1 ist?

Ich möchte eine Wahrscheinlichkeitskurve erzeugen, die es mir ermöglicht, dies zu visualisieren.

Kann jemand helfen? Ich kann völlig falsch verstehen, welche Art von Informationen man aus einem Logit-Modell entnehmen kann, aber bitte sagen Sie mir, wenn ich die Theorie auch falsch verstehe.

ATMathew
quelle
Möchten Sie, dass der Code dies in R ausführt, oder möchten Sie das Problem nur konzeptionell verstehen?
gung - Reinstate Monica
Wenn ich mich entscheiden müsste, würde ich das Thema konzeptionell ansprechen. Ich denke, den R-Code kann ich selbst herausfinden.
ATMathew
2
B0+B1X1++BnXn
1
Predict()plot.Predict()Pr(Y.=1|x2,,xp)x1x2,,xp

Antworten:

24

p(Y.=1)

Eine kompliziertere Situation ist, wenn Sie mehr als eine kontinuierliche Kovariate haben. In einem solchen Fall gibt es oft eine bestimmte Kovariate, die in gewissem Sinne „primär“ ist. Diese Kovariate kann für die X-Achse verwendet werden. Dann lösen Sie nach mehreren vordefinierten Werten der anderen Kovariaten auf, in der Regel dem Mittelwert und +/- 1SD. Weitere Optionen sind verschiedene Arten von 3D-Plots, Coplots oder interaktiven Plots.

Meine Antwort auf eine andere Frage hier hat Informationen über eine Reihe von Grundstücken für Daten in mehr als zwei Dimensionen zu erkunden. Ihr Fall ist im Wesentlichen analog, mit der Ausnahme, dass Sie die vorhergesagten Werte des Modells anstelle der Rohwerte darstellen möchten.

Aktualisieren:

Ich habe einige einfache Beispielcodes in R geschrieben, um diese Diagramme zu erstellen. Lassen Sie mich ein paar Dinge anmerken: Da die 'Aktion' früh stattfindet, habe ich BID nur bis 700 ausgeführt (es steht mir jedoch frei, sie auf 2000 zu verlängern). In diesem Beispiel verwende ich die von Ihnen angegebene Funktion und verwende die erste Kategorie (dh weiblich und jung) als Referenzkategorie (die in R die Standardeinstellung ist). Wie @whuber in seinem Kommentar festhältLR-Modelle haben eine lineare logarithmische Wahrscheinlichkeit. Daher können Sie den ersten Block mit vorhergesagten Werten und Plots verwenden, wie Sie es bei der OLS-Regression tun würden, wenn Sie dies wünschen. Das Logit ist die Verknüpfungsfunktion, mit der Sie das Modell mit Wahrscheinlichkeiten verbinden können. Der zweite Block konvertiert Log-Quoten in Wahrscheinlichkeiten über die Umkehrung der Logit-Funktion, das heißt durch Exponentieren (Verwandeln in Quoten) und anschließendes Teilen der Quoten durch 1 + Quoten. (Ich bespreche die Art der Link-Funktionen und diese Art von Modell hier , wenn Sie weitere Informationen wünschen.)

BID = seq(from=0, to=700, by=10)

logOdds.F.young = -3.92 + .014*BID
logOdds.M.young = -3.92 + .014*BID + .25*1
logOdds.F.old   = -3.92 + .014*BID         + .15*1
logOdds.M.old   = -3.92 + .014*BID + .25*1 + .15*1

pY.F.young = exp(logOdds.F.young)/(1+ exp(logOdds.F.young))
pY.M.young = exp(logOdds.M.young)/(1+ exp(logOdds.M.young))
pY.F.old   = exp(logOdds.F.old)  /(1+ exp(logOdds.F.old))
pY.M.old   = exp(logOdds.M.old)  /(1+ exp(logOdds.M.old))

windows()
  par(mfrow=c(2,2))
  plot(x=BID, y=pY.F.young, type="l", col="blue", lwd=2, 
       ylab="Pr(Y=1)", main="predicted probabilities for young women")
  plot(x=BID, y=pY.M.young, type="l", col="blue", lwd=2, 
       ylab="Pr(Y=1)", main="predicted probabilities for young men")
  plot(x=BID, y=pY.F.old, type="l", col="blue", lwd=2, 
       ylab="Pr(Y=1)", main="predicted probabilities for old women")
  plot(x=BID, y=pY.M.old, type="l", col="blue", lwd=2, 
       ylab="Pr(Y=1)", main="predicted probabilities for old men")

Wodurch sich folgendes Diagramm ergibt:
Bildbeschreibung hier eingeben
Diese Funktionen sind hinreichend ähnlich, so dass der eingangs skizzierte Ansatz der vierparallelen Diagramme nicht sehr charakteristisch ist. Der folgende Code implementiert meinen "alternativen" Ansatz:

windows()
  plot(x=BID, y=pY.F.young, type="l", col="red", lwd=1, 
       ylab="Pr(Y=1)", main="predicted probabilities")
  lines(x=BID, y=pY.M.young, col="blue", lwd=1)
  lines(x=BID, y=pY.F.old,   col="red",  lwd=2, lty="dotted")
  lines(x=BID, y=pY.M.old,   col="blue", lwd=2, lty="dotted")
  legend("bottomright", legend=c("young women", "young men", 
         "old women", "old men"), lty=c("solid", "solid", "dotted",
         "dotted"), lwd=c(1,1,2,2), col=c("red", "blue", "red", "blue"))

Diese Handlung produziert wiederum:
Bildbeschreibung hier eingeben

gung - Wiedereinsetzung von Monica
quelle