Cara memperbaiki di r: sistemnya persis tunggal
Kesalahan yang mungkin Anda temui di R adalah:
Lapack routine dgesv: system is exactly singular: U[2,2] = 0
Kesalahan ini terjadi ketika Anda mencoba menggunakan fungsi solve() , namun matriks yang Anda kerjakan adalah matriks tunggal yang tidak memiliki invers matriks.
Tutorial ini menjelaskan cara mengatasi kesalahan ini dalam praktiknya.
Bagaimana cara mereproduksi kesalahan tersebut
Misalkan kita membuat matriks berikut di 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
Sekarang misalkan kita mencoba menggunakan fungsi solve() untuk menghitung invers matriks:
#attempt to invert matrix
solve(mat)
Error in solve.default(mat):
Lapack routine dgesv: system is exactly singular: U[2,2] = 0
Kita mendapatkan error karena matriks yang kita buat tidak mempunyai matriks invers.
Catatan : Lihat halaman ini dari Wolfram MathWorld yang menunjukkan 10 contoh matriks berbeda yang tidak memiliki matriks invers.
Menurut definisinya, suatu matriks dikatakan tunggal jika mempunyai determinan nol.
Anda dapat menggunakan fungsi det() untuk menghitung determinan matriks tertentu sebelum mencoba membalikkannya:
#calculate determinant of matrix
det(mat)
[1] 0
Penentu matriks kita adalah nol, yang menjelaskan mengapa kita mengalami kesalahan.
Bagaimana cara memperbaiki kesalahan tersebut
Satu-satunya cara untuk memperbaiki kesalahan ini adalah dengan membuat matriks yang tidak tunggal.
Misalnya, kita menggunakan fungsi solve() untuk membalikkan matriks berikut di 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
Kami tidak menerima kesalahan apa pun saat membalik matriks karena matriksnya tidak tunggal.
Sumber daya tambahan
Tutorial berikut menjelaskan cara memperbaiki kesalahan umum lainnya di R:
Cara memperbaikinya: kondisi memiliki panjang > 1 dan hanya elemen pertama yang akan digunakan
Cara memperbaiki: argumen non-numerik dari operator biner
Cara memperbaikinya: dim(X) harus mempunyai panjang positif
Cara memperbaiki: kesalahan dalam memilih argumen yang tidak digunakan