Hoe te repareren in r: het systeem is precies enkelvoudig
Een fout die je tegen kunt komen in R is:
Lapack routine dgesv: system is exactly singular: U[2,2] = 0
Deze fout treedt op wanneer u de functie solve() probeert te gebruiken, maar de matrix waarmee u werkt is een enkelvoudige matrix die geen inverse matrix heeft.
In deze tutorial wordt uitgelegd hoe u deze fout in de praktijk kunt oplossen.
Hoe de fout te reproduceren
Stel dat we de volgende matrix in R creëren:
#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
Stel nu dat we de functie solve() proberen te gebruiken om de inverse van de matrix te berekenen:
#attempt to invert matrix
solve(mat)
Error in solve.default(mat):
Lapack routine dgesv: system is exactly singular: U[2,2] = 0
We krijgen een foutmelding omdat de matrix die we hebben gemaakt geen inverse matrix heeft.
Opmerking : Bekijk deze pagina van Wolfram MathWorld die 10 verschillende voorbeelden toont van matrices die geen inverse matrix hebben.
Een matrix is per definitie singulier als deze een nuldeterminant heeft.
U kunt de functie det() gebruiken om de determinant van een bepaalde matrix te berekenen voordat u probeert deze om te keren:
#calculate determinant of matrix
det(mat)
[1] 0
De determinant van onze matrix is nul, wat verklaart waarom we een fout tegenkomen.
Hoe u de fout kunt oplossen
De enige manier om deze fout te corrigeren is door eenvoudigweg een matrix te maken die niet singulier is.
Stel dat we bijvoorbeeld de functie solve() gebruiken om de volgende matrix in R om te keren:
#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
We krijgen geen fouten bij het inverteren van de matrix, omdat de matrix niet singulier is.
Aanvullende bronnen
In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende fouten in R kunt oplossen:
Oplossing: voorwaarde heeft lengte > 1 en alleen het eerste element wordt gebruikt
Oplossing: niet-numeriek argument van binaire operator
Oplossing: dim(X) moet een positieve lengte hebben
Oplossing: fout bij het selecteren van ongebruikte argumenten