Erreur «le système est singulièrement calculateur» lors de l'exécution d'un glm

29

J'utilise le package robustbase pour exécuter une estimation glm. Cependant, lorsque je le fais, j'obtiens l'erreur suivante:

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

Qu'est-ce que cela signifie / indique? Et comment puis-je le déboguer?

PS. Si vous avez besoin de quelque chose (la formule / spécification ou les données) pour répondre, je serai ravi de le fournir.

NK1
la source

Réponses:

26

Cela signifie que votre matrice de conception n'est pas inversible et ne peut donc pas être utilisée pour développer un modèle de régression. Cela résulte de colonnes linéairement dépendantes, c'est-à-dire de variables fortement corrélées. Examinez la covariance (ou corrélation) par paire de vos variables pour rechercher s'il existe des variables susceptibles d'être supprimées. Vous recherchez des covariances (ou corrélations) >> 0. Alternativement, vous pouvez probablement automatiser cette sélection de variables en utilisant une régression pas à pas vers l'avant.

Cela peut également résulter du fait d'avoir plus de variables que d'observations, auquel cas votre matrice de conception n'est probablement pas complète. C'est un peu plus difficile à résoudre, mais il existe des moyens. Je pense que la régression au lasso est censée bien fonctionner lorsque les données sont "plus larges" que "longues".

Gardez à l'esprit: si vous décidez d'essayer le lasso ou la sélection pas à pas, vous faites bien plus (en termes de sélection de variables) que de simplement gérer la multicolinéarité.

David Marx
la source
Merci, deux questions: 1. Connaissez-vous une procédure en r, qui pourrait bien fonctionner pour moi dans le débogage? 2. Je peux voir que lorsque j'exécute exactement le même modèle sur les mêmes données exactes avec glm () au lieu de glmrob (), je n'obtiens aucune erreur - est-ce logique ou cela implique-t-il une erreur dans glmrob () une fonction?
NK1
2

J'ai passé beaucoup de temps sur cette erreur mais consultez cette page qui l'a résolue pour moi

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

Fondamentalement, vous pouvez simplement changer la méthode utilisée par les souris. J'utilisais PPN et l'ai changé en panier

rlhull6
la source
2
Essayez de rendre la réponse autonome dans le texte de votre réponse, s'il vous plaît. De cette façon, les gens sont plus susceptibles de le lire et moins susceptibles de le supprimer car trop court et non sur le sujet.
Carl