R'de nasıl onarılır: sistem tam olarak tekildir


R’de karşılaşabileceğiniz bir hata:

 Lapack routine dgesv: system is exactly singular: U[2,2] = 0

Bu hata, solvent() işlevini kullanmaya çalıştığınızda ortaya çıkar ancak çalıştığınız matris, matris tersi olmayan tekil bir matristir.

Bu eğitimde bu hatanın pratikte nasıl çözüleceği açıklanmaktadır.

Hata nasıl yeniden oluşturulur?

R’de aşağıdaki matrisi oluşturduğumuzu varsayalım:

 #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

Şimdi matrisin tersini hesaplamak için solvent() fonksiyonunu kullanmaya çalıştığımızı varsayalım:

 #attempt to invert matrix
solve(mat)

Error in solve.default(mat): 
  Lapack routine dgesv: system is exactly singular: U[2,2] = 0

Oluşturduğumuz matrisin ters matrisi olmadığı için hata alıyoruz.

Not : Ters matrisi olmayan 10 farklı matris örneğini gösteren Wolfram MathWorld’den bu sayfaya göz atın.

Tanım gereği, bir matris sıfır determinantına sahipse tekildir.

Belirli bir matrisi tersine çevirmeyi denemeden önce, determinantını hesaplamak için det() işlevini kullanabilirsiniz:

 #calculate determinant of matrix
det(mat)

[1] 0

Matrisimizin determinantının sıfır olması neden hatayla karşılaştığımızı açıklıyor.

Hata nasıl düzeltilir?

Bu hatayı düzeltmenin tek yolu tekil olmayan bir matris oluşturmaktır.

Örneğin, R’de aşağıdaki matrisi tersine çevirmek için solvent() fonksiyonunu kullandığımızı varsayalım:

 #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

Matris tekil olmadığı için matrisi ters çevirirken herhangi bir hata almıyoruz.

Ek kaynaklar

Aşağıdaki eğitimlerde R’deki diğer yaygın hataların nasıl düzeltileceği açıklanmaktadır:

“Koşulun uzunluğu > 1 ve yalnızca ilk öğe kullanılacak” sorununu düzeltme
Nasıl düzeltilir? İkili operatörün sayısal olmayan bağımsız değişkeni
Nasıl düzeltilir? dim(X) pozitif uzunluğa sahip olmalıdır
Nasıl düzeltilir? Kullanılmayan bağımsız değişkenlerin seçilmesinde hata

Yorum ekle

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir