Ich habe also Probleme mit einigen NA
Werten in den Residuen einer lm
Querschnittsregression in R.
Das Problem sind nicht die NA
-Werte selbst, es ist die Art, wie R sie darstellt.
Zum Beispiel:
%Vor% In diesem einfachen Beispiel wird ein Wert von NA
dazu führen, dass einer der Residuen fehlt. Wenn ich die Residuen extrahiere, sehe ich deutlich, dass der dritte Index fehlt. So weit, so gut, keine Beschwerden hier. Das Problem ist, dass der entsprechende numerische Vektor jetzt ein Element kürzer ist, so dass der dritte Index tatsächlich der vierte ist. Wie kann ich R stattdessen diese Residuen zurückgeben, d. H.% Co_de% explizit anzeigen, anstatt einen Index zu überspringen?
Ich muss alle individuellen Residuen im Auge behalten, damit es mein Leben viel einfacher macht, wenn ich sie stattdessen auf diese Weise extrahieren könnte.
Ich habe gerade dieses gefunden, das ein wenig tiefer googelt. Die Funktion resid
auf einem lm
mit na.action=na.exclude
ist der richtige Weg.
Eine weitere Idee besteht darin, die Zeilennamen auszunutzen, die mit dem Datenrahmen verknüpft sind, der als Eingabe für lm
bereitgestellt wird. In diesem Fall sollten die Residuen die Namen aus den Quelldaten behalten. Der Zugriff auf die Residuen aus Ihrem Beispiel würde einen Wert von -5.3061303 für test$residuals["4"]
und NA für test$residuals["3"]
ergeben.
Dies beantwortet jedoch nicht genau Ihre Frage. Ein Ansatz, genau das zu tun, was Sie in Bezug auf die Wiederaufnahme der NA-Werte in die Residuen gefordert haben, ist unten dargestellt:
%Vor% Wenn Sie basierend auf den Regressionsergebnissen Vorhersagen treffen, können Sie na.action=na.exclude
in lm
angeben. Sehen Sie sich die Hilfeergebnisse für na.omit
für eine Diskussion an. Beachten Sie, dass die Angabe von na.exclude
die NA-Werte nicht tatsächlich in den Residuenvektor selbst zurückführt.
Wie in einer früheren Antwort erwähnt, stellt resid
(Synonym für residuals
) eine generische Zugriffsfunktion zur Verfügung, in der die Residuen die gewünschten NA-Werte enthalten, wenn na.exclude
in lm
angegeben wurde. Die Verwendung von resid
ist wahrscheinlich allgemeiner und ein sauberer Ansatz. In diesem Fall würde der Code für das obige Beispiel wie folgt geändert:
Hier eine illustrierte Strategie, die ein leicht abgewandeltes Beispiel auf der Hilfeseite lm verwendet. Dies ist eine direkte Anwendung der Restdefinition:
%Vor%Ich denke, es wäre gefährlich, ein LM-Objekt direkt zu modifizieren, so dass lm.D9 $ residuum dieses Ergebnis zurückgeben würde.
Tags und Links r regression missing-data