IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

R Discussion :

glmer : fixed-effect model matrix is rank deficient so dropping columns / coefficients


Sujet :

R

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2019
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2019
    Messages : 27
    Par défaut glmer : fixed-effect model matrix is rank deficient so dropping columns / coefficients
    Bonjour,

    pour l'étude de mes données je dois faire un modèle glmer (library lme4)
    malheureusement j'ai tjrs cette ligne d'erreur qui apparait et je ne la comprend pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    fixed-effect model matrix is rank deficient so dropping 5145 columns / coefficients
    pourriez vous m'aider ?

    Voila a quoi ressemble mon data et script :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    head(dat)
      traitement origine tot_inflo               L_mm En_fruits code_plante bloc
    1          O      BQ        13                 25         0    BQ_04_01    2
    2          O      BQ        13                 25         0    BQ_04_01    2
    3          O      BQ        13                 25         0    BQ_04_01    2
    4          O      BQ        13                 25         0    BQ_04_01    2
    5          O      BQ        13                 25         0    BQ_04_01    2
    6          O      BQ        13 37.700000000000003         0    BQ_04_01    2
      num_hampe_homogene
    1                 H1
    2                 H1
    3                 H1
    4                 H1
    5                 H1
    6                 H2
     
    glmer_fruit_set = 
      glmer(cbind(En_fruits, 1-En_fruits) 
            ~ traitement*origine*L_mm + traitement*origine*tot_inflo
            + (1|code_plante)
            + (1|num_hampe_homogene)
            + (1|bloc),  
            data = dat,
            family = "binomial", 
            control=glmerControl(optimizer="bobyqa", 
                                 optCtrl=list(maxfun=100000)))
    glmer_fruit_set

  2. #2
    Membre éprouvé
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Décembre 2015
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2015
    Messages : 72
    Par défaut
    Bonjour,

    Serait-il possible d'avoir des informations sur le modèle que vous utilisez ? (notamment l'appel à la fonction)

    VV

  3. #3
    Expert confirmé
    Avatar de olivier.decourt
    Homme Profil pro
    Formateur R/SAS/statistiques
    Inscrit en
    Avril 2008
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Activité : Formateur R/SAS/statistiques
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 064
    Par défaut
    Bonjour.
    Je m'interroge sur le début de ta formule : cbind(En_fruits, 1-En_fruits), qu'est-ce que c'est censé faire ?
    S'il s'agit de faire comprendre à R que la variable Y est En_fruits, avec deux modalités 1 et 0, il est beaucoup plus simple d'en faire un facteur (avec la fonction factor) dans le data.frame avant de modéliser.
    Autres pistes : aucune donnée manquante à l'horizon ?
    Es-tu obligé d'inclure tes effets fixes sous forme d'interactions d'ordre 3 ? Il n'y a pas de possibilité d'un modèle plus simple, déjà tout en effets simples ?

  4. #4
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2019
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2019
    Messages : 27
    Par défaut
    Bonjour,
    merci pour vos aides
    Dans ce modèle, je regarde des fleurs qui sont devenu des fruits. Chaque ligne de mon data corresponds a une fleur et En_fruits corresponds à la création d'un fruit.
    La variable En_fruits corresponds a une suite de 0 (pas fruit) et de 1 (fruit) .
    J'ai mis "cbind(En_fruits, 1-En_fruits)" pour prendre en compte le taux de reussite

    olivier.decourt je n'ai pas de na dans mon data et je suis effectivement obligé d'utiliser les intéractions d'ordre 3

  5. #5
    Membre émérite
    Homme Profil pro
    Chercheur
    Inscrit en
    Décembre 2015
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2015
    Messages : 327
    Par défaut
    1) En_fruit doit être un comptage et non un pourcentage, contrairement à ce qu'il semble que ce soit puisque la variable dépendante est codée cbind( En_fruit, 1 - En_fruit). Le véritable codage serait cbind( nb.succes, nb.echecs). Si la variable est binaire (0, 1), alors l'écriture est En_fruit ~ formule et non cbind( En_fruit, 1 - En_fruit). Cette erreur de codage peut expliquer une partie de tes problèmes.
    2) En ce qui concerne les effets fixes, a-t-on à faire à des régresseurs (variables continues) ou à des facteurs. Dans ce dernier cas, combien y-a-t-il de niveaux ? Avec les interactions d'ordre 3, il y a peut être plus de degrés de liberté que d'individus. Tous sont-ils peuplés, notamment en ce qui concerne les interactions ? Un minimum de 2 individus par niveau (ou interaction) est nécessaire sinon il est impossible de calculer des variances. Cependant, 2 donne un résultat trivial et une dizaine d'individus est plutôt empiriquement requis.
    3) En ce qui concerne les facteurs aléatoires, combien y-a-t-il de niveaux et combien d'individus par niveau ? Même commentaire que pour les facteurs fixes en ce qui concerne le peuplement.

    Entre l'obligation théorique de travailler avec des interactions d'ordre 3 et la possibilité de le faire au vu des données, il y a un abîme, cf. les problèmes de peuplement des niveaux des interactions. Estimer trois effets aléatoires peut être une gageure qui peut aussi conduire à des problèmes de conditionnement. La stratégie à suivre est
    a) de tester le modèle sans effets aléatoires et avec des interactions d'ordre 2. Si cela passe, faire la même chose avec les interactions d'ordre 3 et de comparer les deux modèles; Est-ce que ces interactions d'ordre 3 apportent quelque chose. Si oui, continuer avec, sinon, les abandonner,
    b) reprendre le modèle sélectionné en a) et lui ajouter un effet aléatoire. Tester chacun des effets aléatoires séparément et vérifier que cela apporte quelque chose par rapport au modèle à effets fixes uniquement. Abandonner les effets aléatoires qui n'apportent rien. Conserver celui qui apporte le plus, puis le suivant...
    c) si il y a des problèmes de conditionnement à un niveau, arrêter avant ce niveau d'introduction des effets aléatoires ou si le modèle comporte des interactions d'ordre 3, essayer avec celui comportant des interactions d'ordre 2.

Discussions similaires

  1. Réponses: 2
    Dernier message: 21/06/2016, 12h41
  2. warning rank deficient
    Par ricololo dans le forum MATLAB
    Réponses: 4
    Dernier message: 17/10/2008, 13h39
  3. Comment enregistrer un stream de longueur fixe ?
    Par Alcarbone dans le forum MFC
    Réponses: 5
    Dernier message: 13/04/2003, 20h14
  4. programmation reseau - couche 2 du modele osi
    Par sahor dans le forum C++Builder
    Réponses: 3
    Dernier message: 06/11/2002, 18h33
  5. Chiffre a Virgule Fixe
    Par garybaldi dans le forum C
    Réponses: 3
    Dernier message: 21/06/2002, 10h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo