Fehler "system is computational singular" beim Ausführen eines glm

29

Ich verwende das Robustbase- Paket, um eine glm-Schätzung durchzuführen. Wenn ich es jedoch tue, erhalte ich die folgende Fehlermeldung:

Error in solve.default(crossprod(X, DiagB * X)/nobs, EEq) : 
  system is computationally singular: reciprocal condition number = 1.66807e-16

Was bedeutet das? Und wie kann ich es debuggen?

PS. Wenn Sie etwas benötigen (die Formel / Spezifikation oder Daten), um zu antworten, werde ich es gerne zur Verfügung stellen.

NK1
quelle

Antworten:

26

Dies bedeutet, dass Ihre Entwurfsmatrix nicht invertierbar ist und daher nicht zum Entwickeln eines Regressionsmodells verwendet werden kann. Dies ergibt sich aus linear abhängigen Spalten, dh stark korrelierten Variablen. Untersuchen Sie die paarweise Kovarianz (oder Korrelation) Ihrer Variablen, um festzustellen, ob Variablen vorhanden sind, die möglicherweise entfernt werden können. Sie suchen nach Kovarianzen (oder Korrelationen) >> 0. Alternativ können Sie diese Variablenauswahl wahrscheinlich durch schrittweise Vorwärtsregression automatisieren.

Dies kann auch darauf zurückzuführen sein, dass mehr Variablen als Beobachtungen vorliegen. In diesem Fall ist Ihre Entwurfsmatrix wahrscheinlich nicht vollständig. Dies ist etwas schwieriger zu beheben, aber es gibt Möglichkeiten. Ich glaube, Lasso-Regression sollte gut funktionieren, wenn die Daten "breiter" als "lang" sind.

Denken Sie daran: Wenn Sie sich für eine Lasso-Auswahl oder eine schrittweise Auswahl entscheiden, können Sie viel mehr tun (in Bezug auf die Variablenauswahl), als nur die Multicolinearität zu behandeln.

David Marx
quelle
Danke, zwei Fragen: 1. Kennen Sie eine Prozedur in r, die für mich beim Debuggen gut funktionieren könnte? 2. Ich kann sehen, dass ich, wenn ich mit glm () anstelle von glmrob () genau dasselbe Modell auf genau denselben Daten laufe, keine Fehler erhalte - macht das Sinn oder impliziert es einen Fehler in glmrob? () Funktion?
NK1
2

Ich habe viel Zeit mit diesem Fehler verbracht, aber checke diese Seite aus, die ihn für mich gelöst hat

https://www.kaggle.com/c/house-prices-advanced-regression-techniques/discussion/24586

Grundsätzlich können Sie einfach die von Mäusen verwendete Methode ändern. Ich benutzte ppn und änderte es zum Wagen

rlhull6
quelle
2
Versuchen Sie bitte, die Antwort in den Text Ihrer Antwort aufzunehmen. Auf diese Weise wird es eher gelesen und seltener als zu kurz und nicht thematisch gelöscht.
Carl