Wie gehe ich mit NAs in Residuen in einer Regression in R um?

8

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?

%Vor%

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.

    
c00kiemonster 30.07.2011, 11:03
quelle

3 Antworten

11

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.

    
c00kiemonster 30.07.2011, 11:11
quelle
3

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:

%Vor%     
J Baker 30.07.2011 21:13
quelle
1

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.

    
42- 30.07.2011 14:02
quelle

Tags und Links