Błąd „system jest pojedynczo obliczeniowy” podczas uruchamiania glm


29

Korzystam z pakietu robustbase , aby przeprowadzić oszacowanie glm. Jednak gdy to robię, pojawia się następujący błąd:

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

Co to oznacza / wskazuje? Jak mogę to debugować?

PS. Jeśli potrzebujesz czegoś (formuła / specyfikacja lub dane), aby odpowiedzieć, chętnie udzielę tego.

Odpowiedzi:


26

Oznacza to, że macierz projektowa nie jest odwracalna i dlatego nie można jej użyć do opracowania modelu regresji. Wynika to z liniowo zależnych kolumn, tj. Silnie skorelowanych zmiennych. Sprawdź kowariancję parową (lub korelację) zmiennych, aby sprawdzić, czy istnieją jakieś zmienne, które można potencjalnie usunąć. Szukasz kowariancji (lub korelacji) >> 0. Alternatywnie możesz prawdopodobnie zautomatyzować ten wybór zmiennych, stosując regresję krokową do przodu.

Może to również wynikać z posiadania większej liczby zmiennych niż obserwacji, w którym to przypadku macierz projektowa prawdopodobnie nie ma pełnej rangi. Jest to nieco trudniejsze do naprawienia, ale istnieją sposoby. Uważam, że regresja Lasso powinna działać dobrze, gdy dane są „szersze” niż „długie”.

Pamiętaj: jeśli zdecydujesz się spróbować lassa lub selekcji krokowej, robisz znacznie więcej (pod względem wyboru zmiennej) niż tylko obsługę wielokolonowości.


Dzięki, dwa pytania: 1. Czy znasz jakąś procedurę wr, która może mi się dobrze przy debugowaniu? 2. Widzę, że kiedy uruchamiam dokładnie ten sam model na dokładnie tych samych danych za pomocą glm () zamiast glmrob (), nie dostaję żadnych błędów - czy to ma sens, czy sugeruje błąd w glmrob () funkcja?
NK1

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.