Próbowałem obliczyć regresję OLS w R , kiedy zobaczyłem dziwne rzeczy. Odwrotność macierzy kwadratowej nie istnieje wtedy i tylko wtedy, gdy wyznaczniki są równe 0. Również macierz musi mieć pełny rząd.
Więc nie jestem pewien, jak to możliwe:
> dim (X) [1] 20000 51> det (t (X)% *% X) [1] 3.863823e + 161 # niezerowe rozwiązanie > (t (X)% *% X) Błąd w rozwiązaniu default (t (X)% *% X): system jest obliczeniowo osobliwy: odwrotny numer warunku = 3,18544e-17
Dlaczego metodaolve () generuje błąd podczas próby obliczenia odwrotności, skoro wiemy, że wyznacznik nie jest zerem? Czego tu brakuje?
Sprawdziłem, czy macierz ma pełną rangę:
> qr (t (X)% *% X) $ rank [1] 51
Ale potem, aby przetestować dalej, przypisałem jedną z kolumn X do tej samej wartości innej:
> X [, 2] = X [, 3]
Zatem dwie kolumny macierzy X są teraz takie same.
> qr (t (X)% *% X) $ rank [1] 50
Teraz możemy potwierdzić, że macierz X'X nie ma pełnej rangi.
> det ( t (X)% *% X) [1] 1,634637e + 138
Ale wyznacznik nadal nie jest równy 0? Jak to możliwe i czego mi brakuje?