Jak naprawić w r: system jest dokładnie pojedynczy
Błąd, który możesz napotkać w R to:
Lapack routine dgesv: system is exactly singular: U[2,2] = 0
Ten błąd występuje, gdy próbujesz użyć funkcji rozwiązywania() , ale macierz, z którą pracujesz, jest macierzą pojedynczą, która nie ma macierzy odwrotnej.
W tym samouczku wyjaśniono, jak w praktyce rozwiązać ten błąd.
Jak odtworzyć błąd
Załóżmy, że tworzymy następującą macierz w R:
#create singular matrix
mat <- matrix(c(1, 1, 1, 1), ncol= 2 , nrow= 2 )
#view matrix
mast
[,1] [,2]
[1,] 1 1
[2,] 1 1
Załóżmy teraz, że próbujemy użyć funkcji rozwiązywania() do obliczenia odwrotności macierzy:
#attempt to invert matrix
solve(mat)
Error in solve.default(mat):
Lapack routine dgesv: system is exactly singular: U[2,2] = 0
Otrzymujemy błąd, ponieważ utworzona przez nas macierz nie ma macierzy odwrotnej.
Uwaga : sprawdź tę stronę z Wolfram MathWorld, która pokazuje 10 różnych przykładów macierzy, które nie mają macierzy odwrotnej.
Z definicji macierz jest osobliwa, jeśli ma wyznacznik zerowy.
Możesz użyć funkcji det() do obliczenia wyznacznika danej macierzy przed próbą jej odwrócenia:
#calculate determinant of matrix
det(mat)
[1] 0
Wyznacznikiem naszej macierzy jest zero, co wyjaśnia dlaczego napotykamy błąd.
Jak naprawić błąd
Jedynym sposobem naprawienia tego błędu jest po prostu utworzenie macierzy, która nie jest pojedyncza.
Załóżmy na przykład, że używamy funkcji Solve() do odwracania następującej macierzy w R:
#create matrix that is not singular
mat <- matrix(c(1, 7, 4, 2), ncol= 2 , nrow= 2 )
#view matrix
mast
[,1] [,2]
[1,] 1 4
[2,] 7 2
#calculate determinant of matrix
det(mat)
[1] -26
#invert matrix
solve(mat)
[,1] [,2]
[1,] -0.07692308 0.15384615
[2,] 0.26923077 -0.03846154
Przy odwracaniu macierzy nie otrzymujemy żadnych błędów, ponieważ macierz nie jest osobliwa.
Dodatkowe zasoby
Poniższe samouczki wyjaśniają, jak naprawić inne typowe błędy w R:
Jak naprawić: warunek ma długość > 1 i zostanie użyty tylko pierwszy element
Jak naprawić: nienumeryczny argument operatora binarnego
Jak naprawić: dim(X) musi mieć dodatnią długość
Jak naprawić: błąd podczas wybierania nieużywanych argumentów