Comment gérer une erreur telle que «Coefficients: 14 non définis à cause des singularités» dans R?

17

Lorsque vous faites un GLM et que vous obtenez l'erreur "non défini en raison des singularités" dans la sortie anova, comment peut-on contrer cette erreur?

Certains ont suggéré que cela est dû à la colinéarité entre les covariables ou que l'un des niveaux n'est pas présent dans l'ensemble de données (voir: interpréter "non défini en raison des singularités" en lm )

Si je voulais voir quel « traitement particulier » est le moteur du modèle et j'ai 4 niveaux de traitement: Treat 1, Treat 2, Treat 3et Treat 4, qui sont enregistrées dans ma feuille de calcul comme: quand Treat 1est 1 le reste sont nuls, quand Treat 2est 1 le reste sont nuls, etc., que dois-je faire?

Platypezid
la source
Je vois que beaucoup de gens ont ce problème. Quelqu'un comprend-il la réponse à cette requête? stat.ethz.ch/pipermail/r-help/2006-April/103836.html
Platypezid

Réponses:

28

Vous obtenez probablement cette erreur car deux ou plusieurs de vos variables indépendantes sont parfaitement colinéaires (par exemple, des variables fictives mal codées pour faire des copies identiques).

Utilisez cor () sur vos données ou alias () sur votre modèle pour une inspection plus approfondie.

Peter
la source
11
Merci ne connaissait pas la fonction alias (). C'est vraiment pratique à avoir. Cheers, O.
OFish
Je ne connaissais pas trop la fonction alias. Pas mal.
igorkf Il y a
1

L'erreur "non définie en raison des singularités" se produira en raison d'une forte corrélation entre vos variables indépendantes. Cela peut être évité en ayant n-1 variables fictives. Dans votre cas, pour la variable Traitement, vous devez utiliser 3 variables fictives binaires (Treat1, Treat2, Treat3).

Dans la programmation R, la fonction de régression linéaire lm () se traduira par "NA" comme co-efficace pour les variables hautement corrélées.

Saravana Kumar
la source
1
Pouvez-vous dire comment vous voyez cela comme un ajout à la réponse existante? Peut-être en le modifiant?
mdewey