6 votos

Cómo encontrar el factor que está haciendo de la matriz singular

Tengo un 300+ datos de la columna.marco, y no importa cómo me rompen me sale este error cada vez que:

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

Traté de romper el dataframe y ejecución vlf() , entonces la eliminación de los factores y el resultado fue infinito, pero He hecho esto varias veces (cada uno con un pequeño datset) y sin suerte. Existe una mejor manera de saber qué factores están causando problemas?

6voto

eldering Puntos 3814

Usted puede utilizar un eigen-descomposición para encontrar las combinaciones lineales de las columnas que se desvanecen, a continuación, extraiga suficiente columnas que participan en estas combinaciones lineales.

Aquí está una matriz con una columna de fuga combinación lineal:

> M <- matrix(c(0, 0, 0, 1, 0, 1, 0, 1, 1, 1, -1, 0), nrow=4,  byrow=TRUE)
> M
     [,1] [,2] [,3]
[1,]    0    0    0
[2,]    1    0    1
[3,]    0    1    1
[4,]    1   -1    0

Si una combinación lineal de las columnas desaparecen, después de que el mismo es cierto si me cortó la parte inferior de la matriz para hacerla cuadrada:

> sM <- M[1:3, ]
> sM
     [,1] [,2] [,3]
[1,]    0    0    0
[2,]    1    0    1
[3,]    0    1    1

Ahora calcular los autovalores y autovectores:

> eigen(sM)
$values
[1]  1.618034 -0.618034  0.000000

$vectors
          [,1]       [,2]       [,3]
[1,] 0.0000000  0.0000000  0.5773503
[2,] 0.5257311  0.8506508  0.5773503
[3,] 0.8506508 -0.5257311 -0.5773503

Así que hay un autovalor cero, lo que nos espera, y que corresponde a la columna de la combinación lineal:

$$ .57 C_1 + .57 C_2 - .57 C_3 = 0 $$

Así que la eliminación de una de estas columnas, el resultado será una columna completa en el rango de la matriz.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X