Come riparare in r: il sistema è esattamente singolare


Un errore che potresti riscontrare in R è:

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

Questo errore si verifica quando provi a utilizzare la funzione risolvere() , ma la matrice con cui stai lavorando è una matrice singolare che non ha una matrice inversa.

Questo tutorial spiega come risolvere questo errore nella pratica.

Come riprodurre l’errore

Supponiamo di creare la seguente matrice in 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

Supponiamo ora di provare a utilizzare la funzionesolve() per calcolare l’inverso della matrice:

 #attempt to invert matrix
solve(mat)

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

Riceviamo un errore perché la matrice che abbiamo creato non ha una matrice inversa.

Nota : dai un’occhiata a questa pagina di Wolfram MathWorld che mostra 10 diversi esempi di matrici che non hanno una matrice inversa.

Per definizione, una matrice è singolare se ha determinante zero.

Puoi utilizzare la funzione det() per calcolare il determinante di una determinata matrice prima di tentare di invertirla:

 #calculate determinant of matrix
det(mat)

[1] 0

Il determinante della nostra matrice è zero, il che spiega perché riscontriamo un errore.

Come correggere l’errore

L’unico modo per correggere questo errore è semplicemente creare una matrice che non sia singolare.

Ad esempio, supponiamo di utilizzare la funzionesolve() per invertire la seguente matrice in 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

Non riceviamo alcun errore quando invertiamo la matrice perché la matrice non è singolare.

Risorse addizionali

I seguenti tutorial spiegano come correggere altri errori comuni in R:

Come risolvere il problema: la condizione ha lunghezza > 1 e verrà utilizzato solo il primo elemento
Come risolvere: argomento non numerico dell’operatore binario
Come risolvere il problema: dim(X) deve avere una lunghezza positiva
Come risolvere: errore nella selezione degli argomenti non utilizzati

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *