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 :

lme4 message d'erreur


Sujet :

R

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 80
    Par défaut
    Ok, oui je comprends; pour les prochaines expériences, je ne referai pas la même erreur et je réfléchirai bien à tout cela à priori. Vos explications vont m'aider pour pouvoir justifier mes choix.

    Pour moi (et ce que mon supérieur avait comme idée), il faut utiliser les années comme répétition et considérer les 3 périodes séparément comme ci-dessous car la période n'est pas une simple répétition (même si d'après votre description d'individu dans le message précédent, les mesures sont réalisées sur les mêmes individus) puisque le poids des racines évolue dans le temps et que les "traitements" ne sont pas réalisés de manière continue mais par exemple toutes les 3 ou 5 semaines selon les produits et par exemple un produit pourrait ne pas fonctionner à 3 mois et puis ralentir la croissance des racines à nouveau à 5 mois. Donc il faut que j'attribue les ID comme ceci (comme dans le fichier "file" en PJ).

    par ex.:
    var1 * Traitement = control * field.treatment1 = no * période = 3 mois * année = 1 --> ID = 1
    var1 * Traitement = control * field.treatment1 = no * période = 3 mois * année = 2 -> ID = 1
    var1 * Traitement = control * field.treatment1 = no * période = 3 mois * année = 3 --> ID = 1

    var1 * Traitement = control * field.treatment1 = no * période = 5 mois * année = 1 --> ID = 2
    var1 * Traitement = control * field.treatment1 = no * période = 5 mois * année = 2 --> ID = 2
    var1 * Traitement = control * field.treatment1 = no * période = 5 mois * année = 3--> ID = 2
    Donc si je refais les analyses sur le fichier "file" j'obtiens ce résultat:
    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
    fi<-read.csv2("file.csv.csv", na.strings = "NA",header = TRUE)
    dim(fi)
    head(fi)
    fi_2<-subset(fi, periode != "0month", select= c (ID, Variete, annee, periode , Traitement, field.treatment, poids_racines, taille_racines))
    dim(fi_2)
    head(fi_2)
    str(fi_2)
    fi<-fi_2
    fi$poids_racines<-as.numeric(fi$poids_racines)
    fi$taille_racines<-as.numeric(fi$taille_racines)
     
    library(lme4)
    #avec année-poids
    model.1<-lmer(fi$poids_racines~ (fi$field.treatment + fi$Traitement + fi$Variete + fi$periode)^2 + fi$annee + (1 |fi$ID))
     
    ##SANS année-poids
    model.2<-lmer(fi$poids_racines~ (fi$field.treatment + fi$Traitement + fi$Variete + fi$periode)^2 + (1 |fi$ID))
    j'ai le message d'erreur:
    > #avec année-poids
    > model.1<-lmer(fi$poids_racines~ (fi$field.treatment + fi$Traitement + fi$Variete + fi$periode)^2 + fi$annee + (1 |fi$ID))
    boundary (singular) fit: see ?isSingular
    >
    > ##SANS année-poids
    > model.2<-lmer(fi$poids_racines~ (fi$field.treatment + fi$Traitement + fi$Variete + fi$periode)^2 + (1 |fi$ID))
    boundary (singular) fit: see ?isSingular
    et quand je veux comparer j'obtiens:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    anova( model.1, model.2)
    > anova( model.1, model.2)
    refitting model(s) with ML (instead of REML)
    Data: NULL
    Models:
    model.2: fi$poids_racines ~ (fi$field.treatment + fi$Traitement + fi$Variete +
    model.2: fi$periode)^2 + (1 | fi$ID)
    model.1: fi$poids_racines ~ (fi$field.treatment + fi$Traitement + fi$Variete +
    model.1: fi$periode)^2 + fi$annee + (1 | fi$ID)
    Df AIC BIC logLik deviance Chisq Chi Df Pr(>Chisq)
    model.2 48 3802.0 3988.6 -1853.0 3706.0
    model.1 50 3789.4 3983.8 -1844.7 3689.4 16.578 2 0.0002512 ***
    ---
    Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
    Warning message:
    In optwrap(optimizer, devfun, x@theta, lower = x@lower, calc.derivs = TRUE, :
    convergence code 3 from bobyqa: bobyqa -- a trust region step failed to reduce q
    Fichiers attachés Fichiers attachés

  2. #2
    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) Si l'année est simplement un facteur de répétition, cela signifie que les variations d'une année sur l'autre oscillent autour d'une valeur moyenne et que les différences ne sont que des fluctuations statistiques. Dans ces conditions l'année est bien en facteur de regroupement mais ne peut pas intervenir dans le modèle fixe.

    2) Pour la suite de la détermination du facteur de regroupement, il faut d'abord décrire le modèle inter-groupe et le modèle intra-groupe. Ce n'est qu'à cette condition que le choix d'attribution de l'ID pourra se faire. Pour une publication, on te demandera d'abord de décrire (et justifier) c'est modèle. Sans cela la publication ne sera pas acceptée.

    Il est vrai que le mot 'répétition' à lui seul est assez ambigu. En fait il faut distinguer deux types de répétition sur une unité de mesure (ou 'individu') :
    i) répétée plusieurs fois dans les mêmes conditions
    a) les répétitions n'affectent pas l'état de l'unité et sont donc interchangeables ;
    b) elles l'affectent et leur ordre est important ; on étudie donc une sorte de dynamiques;
    ii) elles sont faites dans différentes conditions, par exemple avant un traitement, pendant celui-ci, à sa fin, quelques temps après la fin.

    Dans les cas i) et ii), elles définissent un facteur de regroupement R si on passe à un modèle mixte. Dans les cas i.b) et ii), elles font de plus partie du modèle intra et définissent un facteur R du modèle fixe dans le modèle mixte. Dans les cas i.b), R sera un facteur (et non un nombre) avec les niveaux de valeur 1, 2... Dans le cas ii), R aura comme niveaux pour mon exemple 'avant', 'pendant', 'fin', 'après'.

    Il faut commencer par déterminer ces points avant de faire une analyse.

  3. #3
    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
    Donc je pense que je dois choisir un modèle inter-groupe:
    l'année est considérée comme une répétition mais la période non (et je listerai les raisons: un produit peut fonctionner pour diminuer le poids des racines à 3 et 5 mois puis ne plus fonctionner pour 7 mois par exemple) donc j'explique que je choisi le même ID par année mais différent par période (période élément du plan inter).
    Les raisons données ne sont pas convaincantes puisqu'elles sont aussi bien valables pour un modèle inter-groupe que pour un modèle intra-groupe (cf. mon exemple illustratif cas ii)). Si les facteurs intra n'ont aucun effet, alors ce ne sont que des simples répétitions de la même occurrence. De plus, toujours dans mon cas, il se peut que pour un groupe, on ait un effet toujours positif (le test s'améliore toujours au cours du temps) et pour un autre groupe, aucun effet pour entre avant et pendant, une dégradation à la fin puis une nette amélioration après. Ce qui est à définir c'est ce qu'on considère comme unité de mesure / individu, puis ce qu'on veut tester sur cette unité. En fonction de la définition de cette unité, alors on aura un ID par an mais on change d'ID pour les périodes ou on a un ID par an indépendamment des périodes. Le raisonnement pour définir les ID est donc l'inverse de celui que tu tiens.

    Si l'année est un facteur aléatoire, cela n'a pas de sens de tester sa présence dans le modèle fixe, c'est même en contradiction avec l'hypothèse de facteur aléatoire.

    Je pense donc être dans le cas ia) ou on est sensé avoir la même efficacité des traitements et field treatment pour une variété donnée pour toutes les années et que par contre il peut y avoir une dynamique au niveau des périodes d'observation
    Très mal dit. Quelle hypothèse est testée ? Ensuite on revient toujours à la même question qu'elle est l'unité de mesure et quel est la plan d'analyse en spécifiant sa composante inter et sa composante intra.

    De ce que je comprends de tes différentes interventions me conduirait à penser qu'on cherche à différencier des dynamiques (facteur période) en fonction d'unités définies par la variété, le traitement et le field.tretment et que pour s'affranchir d'un biais dû à une année donnée, on a répété les mesures pendant 3 ans pour lisser les variations. Donc, il me semble que le plan est :
    - facteur aléatoire : l'année,
    - plan inter : variété, traitement, field.treatment,
    - plan intra : période.
    Ensuite, ce format large en 7/8 colonnes dont 3 ou 4 (je ne sais plus) pour les mesures à différentes périodes est transformé en un format long à 5 facteurs et une mesure dépendante, le facteur aléatoire, les 3 facteurs du plan inter, un facteur intra dont les niveaux sont les différentes périodes (3mois, 5mois, 7mois...) et la mesure. On a donc un ID principale pour chaque combinaison du plan inter. Vu ainsi, on a le choix entre deux modèles :
    1) mesure ~ (variété + traitement + field.treatment + période)^2 + (1 | ID)
    2) mesure ~ (variété + traitement + field.treatment + période)^2 + (1 | ID/annee)
    Le second permettant d'ajouter un lien entre les mesures de la même année.

    3 remarques : a) Je reste aux interactions d'ordre 2, voir ce que j'ai déjà dit des interactions d'ordre supérieur à 2. b) Le second modèle est peut-être plus réaliste mais complique sans doute les choses pour une amélioration discutable, notamment en termes de complexité du calcul et de robustesse du résultat ; il ne faut jamais oublier que plus on a de ddl au modèle (même si le nombre réel de ddl d'un modèle mixte est un sijet de discussion), moins les résultats sont robustes ; il faut donc toujours faire un compromis entre justesse / biais et robustesse. c) Vu le nombre de ddl probable du modèle fixe par rapport au nombre d'unité de mesure, c'est-à-dire de ID différent, il faut songer à passer par une étape permettant la simplificatin du modèle ; ceci rejoint le point précédent.

  4. #4
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 80
    Par défaut
    Merci beaucoup pour toutes ces explications. Je vais reflechir à tout cela et reprendre vos exemples au calme pour bien comprendre et je reviens vers vous demain.bonne soirée à vous.

  5. #5
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 80
    Par défaut
    De ce que je comprends de tes différentes interventions me conduirait à penser qu'on cherche à différencier des dynamiques (facteur période) en fonction d'unités définies par la variété, le traitement et le field.tretment et que pour s'affranchir d'un biais dû à une année donnée, on a répété les mesures pendant 3 ans pour lisser les variations.
    Oui c'est juste et aussi l'idée de répéter 3 années c'était tout simplement car d'un point de vu technique c'était impossible de répéter deux ou trois fois une unité du plan inter (var*field.treatment*Traitement) dans une même année afin d'avoir des "répétitions", nous avons donc décidé que l'année servirait de répétition.

    Donc, il me semble que le plan est :
    - facteur aléatoire : l'année,
    - plan inter : variété, traitement, field.treatment,
    - plan intra : période.
    Ensuite, ce format large en 7/8 colonnes dont 3 ou 4 (je ne sais plus) pour les mesures à différentes périodes est transformé en un format long à 5 facteurs et une mesure dépendante, le facteur aléatoire, les 3 facteurs du plan inter, un facteur intra dont les niveaux sont les différentes périodes (3mois, 5mois, 7mois...) et la mesure.
    oui

    On a donc un ID principale pour chaque combinaison du plan inter.
    C'est à dire que dans mon fichier je vais avoir un ID identique pour 9lignes à chaque fois (combinaison du plant inter * 3 périodes * 3 années)?
    Donc comme ceci c'est juste? :
    variété = 1, traitement = 1, field.treatment = 1 (plant inter) pour: la période 3 mois et l'année 1--> ID = 1
    variété = 1, traitement = 1, field.treatment = 1 (plant inter) pour: la période 5 mois et l'année 1--> ID = 1
    variété = 1, traitement = 1, field.treatment = 1 (plant inter) pour: la période 7 mois et l'année 1--> ID = 1
    variété = 1, traitement = 1, field.treatment = 1 (plant inter) pour: la période 3 mois et l'année 2--> ID = 1
    variété = 1, traitement = 1, field.treatment = 1 (plant inter) pour: la période 5 mois et l'année 2--> ID = 1
    variété = 1, traitement = 1, field.treatment = 1 (plant inter) pour: la période 7 mois et l'année 2--> ID = 1
    variété = 1, traitement = 1, field.treatment = 1 (plant inter) pour: la période 3 mois et l'année 3--> ID = 1
    variété = 1, traitement = 1, field.treatment = 1 (plant inter) pour: la période 5 mois et l'année 3--> ID = 1
    variété = 1, traitement = 1, field.treatment = 1 (plant inter) pour: la période 7 mois et l'année 3--> ID = 1

    variété = 2, traitement = 1, field.treatment = 1 (plant inter) pour: la période 3 mois et l'année 1--> ID = 2
    variété = 2, traitement = 1, field.treatment = 1 (plant inter) pour: la période 5 mois et l'année 1--> ID = 2
    variété = 2, traitement = 1, field.treatment = 1 (plant inter) pour: la période 7 mois et l'année 1--> ID = 2
    variété = 2, traitement = 1, field.treatment = 1 (plant inter) pour: la période 3 mois et l'année 2--> ID = 2
    variété = 2, traitement = 1, field.treatment = 1 (plant inter) pour: la période 5 mois et l'année 2--> ID = 2
    variété = 2, traitement = 1, field.treatment = 1 (plant inter) pour: la période 7 mois et l'année 2--> ID = 2
    variété = 2, traitement = 1, field.treatment = 1 (plant inter) pour: la période 3 mois et l'année 3--> ID = 2
    variété = 2, traitement = 1, field.treatment = 1 (plant inter) pour: la période 5 mois et l'année 3--> ID = 2
    variété = 2, traitement = 1, field.treatment = 1 (plant inter) pour: la période 7 mois et l'année 3--> ID = 2

    etc....

  6. #6
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 80
    Par défaut
    pour compléter mon message de ce matin,

    j'ai fait le fichier avec ID comme décrit dans mon message dessus (j'ai donc 9 ID 1, 9 ID 2 etc..) (file3) en PJ.

    j'ai appliqué le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    fi<-read.csv2("file3csv.csv", na.strings = "NA",header = TRUE)
    dim(fi)
    head(fi)
    fi_2<-subset(fi, periode != "0month", select= c (ID, Variete, annee, periode , Traitement, field.treatment, poids_racines, taille_racines))
    dim(fi_2)
    head(fi_2)
    str(fi_2)
    fi<-fi_2
    fi$poids_racines<-as.numeric(fi$poids_racines)
    fi$taille_racines<-as.numeric(fi$taille_racines)
     
    library(lme4)
    model_annee_ID<-lmer(fi$poids_racines~ (fi$field.treatment + fi$Traitement + fi$Variete + fi$periode)^2 + (1 |fi$ID/fi$annee))
    model_ID<-lmer(fi$poids_racines~ (fi$field.treatment + fi$Traitement + fi$Variete + fi$periode)^2 + (1 |fi$ID))
    Pour le mode_anne_ID j'ai le message d'erreur suivant:
    Error: couldn't evaluate grouping factor fi$anneefi:`$`) within model frame: try adding grouping factor to data frame explicitly if possible
    In addition: Warning message:
    In fi:`$` : numerical expression has 8 elements: only the first used
    merci par avance pour votre aide
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. [TSocket] Message d'erreur
    Par rgz dans le forum Web & réseau
    Réponses: 6
    Dernier message: 04/07/2003, 10h16
  2. Surcharger le message d'erreur après un OnException
    Par Tirlibibi dans le forum XMLRAD
    Réponses: 2
    Dernier message: 24/04/2003, 12h42
  3. Réponses: 4
    Dernier message: 04/03/2003, 02h05
  4. [CR] Message d'erreur
    Par nono1 dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 11/09/2002, 15h54
  5. Réponses: 2
    Dernier message: 27/05/2002, 20h46

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