Ok, ich habe eine logistische Regression und habe die predict()
Funktion verwendet, um eine Wahrscheinlichkeitskurve basierend auf meinen Schätzungen zu entwickeln.
## LOGIT MODEL:
library(car)
mod1 = glm(factor(won) ~ as.numeric(bid), data=mydat, family=binomial(link="logit"))
## PROBABILITY CURVE:
all.x <- expand.grid(won=unique(won), bid=unique(bid))
y.hat.new <- predict(mod1, newdata=all.x, type="response")
plot(bid<-000:1000,predict(mod1,newdata=data.frame(bid<-c(000:1000)),type="response"), lwd=5, col="blue", type="l")
Das ist großartig, aber ich bin gespannt darauf, die Konfidenzintervalle für die Wahrscheinlichkeiten zu zeichnen. Ich habe es versucht, plot.ci()
aber kein Glück gehabt. Kann jemand mich auf einige Möglichkeiten hinweisen, um dies zu erreichen, vorzugsweise mit dem car
Paket oder der Basis R.
r
logistic
confidence-interval
ATMathew
quelle
quelle
Antworten:
Der von Ihnen verwendete Code schätzt mithilfe der
glm
Funktion ein logistisches Regressionsmodell . Sie haben keine Daten angegeben, deshalb werde ich nur einige erfinden.Ein logistisches Regressionsmodell modelliert die Beziehung zwischen einer binären Antwortvariablen und in diesem Fall einem kontinuierlichen Prädiktor. Das Ergebnis ist eine logittransformierte Wahrscheinlichkeit als lineare Beziehung zum Prädiktor. In Ihrem Fall ist das Ergebnis eine binäre Antwort, die dem Gewinnen oder Nichtgewinnen beim Spielen entspricht, und sie wird durch den Wert des Einsatzes vorhergesagt. Die Koeffizienten von
mod1
werden in protokollierten Quoten angegeben (die schwer zu interpretieren sind), gemäß:Um protokollierte Gewinnchancen in Wahrscheinlichkeiten umzuwandeln, können wir das Obige in übersetzen
Mit diesen Informationen können Sie den Plot einrichten. Zunächst benötigen Sie einen Bereich der Prädiktorvariablen:
Anschließend
predict
können Sie anhand Ihres Modells Vorhersagen abrufenBeachten Sie, dass die angepassten Werte auch über abgerufen werden können
Durch die Angabe erhalten
se.fit=TRUE
Sie auch den Standardfehler für jeden angepassten Wert. Das Ergebnisdata.frame
ist eine Matrix mit den folgenden Komponenten: den angepassten Vorhersagen (fit
), den geschätzten Standardfehlern (se.fit
) und einem Skalar, der die Quadratwurzel der Dispersion angibt, die zur Berechnung der Standardfehler (residual.scale
) verwendet wird. Bei einem Binomial-Logit ist der Wert 1 (was Sie durch Eingabepreddat$residual.scale
von sehen könnenR
). Wenn Sie ein Beispiel dessen sehen möchten, was Sie bisher berechnet haben, können Sie Folgendes eingebenhead(data.frame(preddat))
.Der nächste Schritt ist das Einrichten des Plots. Ich möchte zuerst einen leeren Zeichenbereich mit den Parametern einrichten:
Jetzt können Sie sehen, wo es wichtig ist, die angepassten Wahrscheinlichkeiten zu berechnen. Sie können die den angepassten Wahrscheinlichkeiten entsprechende Linie gemäß der obigen zweiten Formel zeichnen. Mit
preddat data.frame
können Sie die angepassten Werte in Wahrscheinlichkeiten umwandeln und damit eine Linie gegen die Werte Ihrer Prädiktorvariablen zeichnen.Beantworten Sie schließlich Ihre Frage. Die Konfidenzintervalle können dem Diagramm hinzugefügt werden, indem die Wahrscheinlichkeit für die angepassten Werte
+/- 1.96
multipliziert mit dem Standardfehler berechnet wird:Das resultierende Diagramm (aus den zufällig generierten Daten) sollte ungefähr so aussehen:
Aus Gründen der Zweckmäßigkeit ist hier der gesamte Code in einem Block:
(Hinweis: Dies ist eine stark bearbeitete Antwort, um sie für stats.stackexchange relevanter zu machen.)
quelle
se.fit
definiert?predict(..., se.fit=TRUE)
.Hier ist eine Modifikation der @ smillig-Lösung. Ich verwende hier Tidyverse-Tools und verwende auch die
linkinv
Funktion, die Teil des GLM- Modellobjekts istmod1
. Auf diese Weise müssen Sie die Logistikfunktion nicht manuell invertieren, und dieser Ansatz funktioniert unabhängig davon, welches spezifische GLM Sie anpassen.quelle