Variable apparaît en NA dans GLM

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

Louise Seguinel
Messages : 1
Enregistré le : 03 Aoû 2020, 13:21

Variable apparaît en NA dans GLM

Messagepar Louise Seguinel » 06 Aoû 2020, 11:38

Bonjour,

Je me permets de poster ici car j'ai un problème qui (je pense) relève de la prise en main du logiciel et de la manipulation des données, plus que d'une compréhension statistiques. Je précise que je suis débutante, et que l'utilisation du logiciel R est imposé par ma formation (je ne peux pas passer par un autre logiciel ou autre méthode).

J'ai un tableau de donnés avec 10 colonnes, dont les premières sont abondance et richesse spécifique d'espèces (remplies de 7 à 250), puis les 8 autres sont des types de milieux, remplies avec des % (de 0 à 1).

Image

J'ai effectué une GLM de mon abondance et de ma richesse avec ces types (quasipoisson car il y avait surdispersion) :
L'un de mes types de milieux (le dernier) ressort en "NA" dans ma GLM, alors que toutes les cases sont remplies et qu'il n'y a aucun caractère spécial. Devant "Coefficients", il y a un message "1 not defined because of singularities", ce qui pourrait vouloir dire que ma variable en question est trop corrélée aux autres, mais quand je fais cor(), ce n'est pas le cas.

Image

Lorsque j'ignore le NA et que je continue ma GLM jusqu'à ma fonction drop1, le tableau donne la même déviance pour tous mes milieux, et sans pvalue.

Image

Lorsque je retire cette variable "problématique", tout marche.
1) Y'a t il une explication au fait que ma variable apparaissent en NA et ne veuille pas se lire ?
2) Si non, est-ce que supprimer cette variable va altérer mon modèle ?

Je vous remercie par avance pour votre aide,

Louise

Facundo Muñoz
Messages : 156
Enregistré le : 04 Juil 2019, 09:58
Contact :

Re: Variable apparaît en NA dans GLM

Messagepar Facundo Muñoz » 06 Aoû 2020, 14:01

Bonjour,

Je pense que le problème est que vos 8 dernières variables sont compositionnelles, i.e. donnent le pourcentage pour chaque un des 8 types de milieux possibles, de sorte que la somme par lignes de ces valeurs fait 1. Vous pouvez le vérifier avec :

Code : Tout sélectionner

all(rowSums(data[, 3:10]) == 1)


C'est ça la singularité : votre matrice de régression est singulière car vous pouvez calculer une des colonnes de type de milieux comme 1 - la somme des autres.

Une solution possible est celle qui propose glm (supprimer une des variables). Mais ce n'est pas idéal. En fait, il y a des méthodes spécifiques pour le traitement de ce type de données (dites "compositionnelles"). E.g. [1].

C'est pour cela aussi que quand vous enlevez n'importe quelle variable ça donne la même chose : c'est juste une ré-parameterisation du modèle.

Cordialement,

[1] https://books.google.fr/books?id=y2eIuA ... edir_esc=y
ƒacu.-


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Google [Bot] et 1 invité