So reparieren sie in r: das system ist genau singulär


Ein Fehler, der in R auftreten kann, ist:

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

Dieser Fehler tritt auf, wenn Sie versuchen, die Funktion „solve()“ zu verwenden, die Matrix, mit der Sie arbeiten, jedoch eine singuläre Matrix ist, die keine Matrixinverse hat.

In diesem Tutorial wird erläutert, wie Sie diesen Fehler in der Praxis beheben können.

So reproduzieren Sie den Fehler

Angenommen, wir erstellen die folgende Matrix 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

Nehmen wir nun an, wir versuchen, die Funktion „solve()“ zu verwenden, um die Umkehrung der Matrix zu berechnen:

 #attempt to invert matrix
solve(mat)

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

Wir erhalten eine Fehlermeldung, weil die von uns erstellte Matrix keine inverse Matrix hat.

Hinweis : Schauen Sie sich diese Seite von Wolfram MathWorld an, die 10 verschiedene Beispiele für Matrizen zeigt, die keine inverse Matrix haben.

Per Definition ist eine Matrix singulär, wenn sie eine Nulldeterminante hat.

Mit der Funktion det() können Sie die Determinante einer bestimmten Matrix berechnen, bevor Sie versuchen, sie zu invertieren:

 #calculate determinant of matrix
det(mat)

[1] 0

Die Determinante unserer Matrix ist Null, was erklärt, warum wir auf einen Fehler stoßen.

So beheben Sie den Fehler

Die einzige Möglichkeit, diesen Fehler zu beheben, besteht darin, einfach eine Matrix zu erstellen, die nicht singulär ist.

Angenommen, wir verwenden die Funktionsolve() , um die folgende Matrix in R zu invertieren:

 #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

Beim Invertieren der Matrix erhalten wir keine Fehler, da die Matrix nicht singulär ist.

Zusätzliche Ressourcen

Die folgenden Tutorials erklären, wie Sie andere häufige Fehler in R beheben können:

Lösung: Die Bedingung hat eine Länge > 1 und nur das erste Element wird verwendet
Problembehebung: Nicht numerisches Argument des binären Operators
Lösung: dim(X) muss eine positive Länge haben
So beheben Sie: Fehler bei der Auswahl nicht verwendeter Argumente

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert