Error "el sistema es computacionalmente singular" al ejecutar un glm

29

Estoy usando el paquete robustbase para ejecutar una estimación de glm. Sin embargo, cuando lo hago, aparece el siguiente error:

Error in solve.default(crossprod(X, DiagB * X)/nobs, EEq) : 
  system is computationally singular: reciprocal condition number = 1.66807e-16

¿Qué significa / indica esto? ¿Y cómo puedo depurarlo?

PD. Si necesita algo (la fórmula / especificación o datos) para responder, con gusto se lo proporcionaré.

NK1
fuente

Respuestas:

26

Significa que su matriz de diseño no es invertible y, por lo tanto, no se puede utilizar para desarrollar un modelo de regresión. Esto resulta de columnas linealmente dependientes, es decir, variables fuertemente correlacionadas. Examine la covarianza (o correlación) por pares de sus variables para investigar si hay alguna variable que pueda eliminarse potencialmente. Está buscando covarianzas (o correlaciones) >> 0. Alternativamente, probablemente pueda automatizar esta selección de variables mediante el uso de una regresión progresiva hacia adelante.

Esto también puede resultar de tener más variables que observaciones, en cuyo caso su matriz de diseño probablemente no sea de rango completo. Esto es un poco más complicado de solucionar, pero hay formas. Creo que se supone que la regresión de lazo funciona bien cuando los datos son "más amplios" que "largos".

Tenga en cuenta: si decide probar el lazo o la selección por pasos, está haciendo mucho más (en términos de selección de variables) que solo manejar la multicolinealidad.

David Marx
fuente
Gracias, dos preguntas: 1. ¿Conoce algún procedimiento en r que pueda funcionarme para depurar esto? 2. Puedo ver que cuando ejecuto exactamente el mismo modelo con los mismos datos con glm () en lugar de glmrob () no obtengo ningún error. ¿Tiene sentido o implica un error en el glmrob? () función?
NK1
2

Pasé mucho tiempo en este error, pero revise esta página que me lo resolvió.

https://www.kaggle.com/c/house-prices-advanced-regression-techniques/discussion/24586

Básicamente puedes cambiar el método que usan los ratones. Estaba usando ppn y lo cambié al carrito

rlhull6
fuente
2
Intente hacer que la respuesta sea autónoma dentro del texto de su respuesta, por favor. De esa forma, es más probable que las personas lo lean y menos probable que lo eliminen como demasiado breve y no sobre el tema.
Carl