Angenommen, ich habe die folgenden Daten und führe ein Regressionsmodell aus:
df=data.frame(income=c(5,3,47,8,6,5),
won=c(0,0,1,1,1,0),
age=c(18,18,23,50,19,39),
home=c(0,0,1,0,0,1))
Einerseits führe ich ein lineares Modell aus, um das Einkommen vorherzusagen:
md1 = lm(income ~ age + home + home, data=df)
Zweitens führe ich ein Logit-Modell aus, um die gewonnene Variable vorherzusagen:
md2 = glm(factor(won) ~ age + home, data=df, family=binomial(link="logit"))
Für beide Modelle frage ich mich, wie ich eine Tabelle oder einen Datenrahmen mit der Antwortkategorie des Prädiktors, dem angepassten Wert und dem vorhergesagten Wert des Modells generieren kann.
Also für das lineare Modell so etwas wie:
age fitted_income predicted_income
18 3 5
23 3 3
50 4 2
19 5 5
39 6 4
home fitted_income predicted_income
0 5 6
1 3 9
Oder vielleicht sollte es für jeden Datenpunkt sein. Für den x_i-Datenpunkt sind die angepassten und vorhergesagten Werte also:
id age fitted_income predicted_income
1 18 3 5
2 23 3 3
3 50 4 2
4 19 5 5
5 39 6 4
Ist ein solches Unternehmen aus statistischer Sicht sinnvoll? Warum oder warum nicht?
Wie kann das in R gemacht werden? (schaute auf Namen (md1) und fand heraus, was ich aus dem Modell ziehen kann, bin aber nicht darüber hinausgegangen)
Vielen Dank!
residuals
Befehl in verfügbarR
. Verwenden Siecbind
diese Option, um sie mit dem ursprünglichen Datenrahmen zu verbinden.Antworten:
Sie müssen mit Modellobjekten in R etwas vorsichtig sein. Beispielsweise sollten die angepassten Werte und Vorhersagen der Trainingsdaten im
glm()
Modellfall gleich sein, sie sind jedoch nicht dieselben, wenn Sie die richtigen Extraktionsfunktionen verwenden:Dies liegt daran, dass standardmäßig
predict.glm()
Vorhersagen auf der Skala des linearen Prädiktors zurückgegeben werden. Um die angepassten Werte zu erhalten, möchten wir die Umkehrung der Verknüpfungsfunktion auf diese Werte anwenden.fitted()
tut das für uns und wir können die richtigen Werte auch erhalten mitpredict()
:Ebenso mit
residuals()
(oderresid()
); Es ist unwahrscheinlich, dass die darin gespeicherten Wertemd2$residuals
die Arbeitsreste sind, die Sie möchten. Mit dieserresid()
Methode können Sie den gewünschten Residuentyp angeben und haben eine nützliche Standardeinstellung.Für das
glm()
Modell reicht so etwas aus:Ähnliches kann für das
lm()
Modell getan werden :quelle