Les posteurs les plus actifs de la semaine
zezima
 
poetschevleesch
 
c@ssoulet
 


Retirer ou garder l'intercept dans un modèle lmer

Aller en bas

Retirer ou garder l'intercept dans un modèle lmer

Message par Clara Lefèvre le Mer 25 Juil 2018 - 2:23

Bonjour,

Je possède un jeu de données issu d'une expérimentation en bloc complet randomisé. Nous comparons 4 traitements ("Treatment") (différentes gestions agricoles : non labour, monoculture sous couvert permanent et deux rotations sous couvert permanent). Je possède 3 blocs (répétitions "Block") comprenant chacun tous les traitements. Je possède 3 répétitions par traitement ("Subplot").
Je cherche à tester l'impact des traitements sur différents indicateurs de qualité de sol (ex: respiration, NO3, agrégation....).
Pour effectuer mes tests, je suis passée par un modèle de type lmer afin de pouvoir mieux prendre en compte l'hétérogénéité spatiale de mes échantillons. Ma syntaxe est la suivante (ici pour l'indicateur de respiration) :

lmm1 <-lmer(SituResp ~Treatment+Block+(1|Block/Subplot),data=datauni, REML=FALSE)

A la suite de cela, après vérification des hypothèses (via tests de shapiro et Levene), j'effectue une anova. Pour l'indicateur respiration, le résultat est le suivant:

Analysis of Deviance Table (Type III Wald chisquare tests)

Response: SituResp
Chisq Df Pr(>Chisq)
(Intercept) 1.5351 1 0.215355
Treatment 12.4382 3 0.006023 **
Block 0.0007 1 0.978732
---

Ma question est la suivante : Je me demande le rôle de l'intercept ici. Je vois que sa p-value n'est pas significative, puis-je décider donc de le retirer dans mon modèle ? Quel est l'impact de l'intercept dans un modèle, en ai-je vraiment besoin ?

En essayant de le retirer :
lmm2 <-lmer(Resp ~-1+Treatment+Block +(1|Subplot) ,data=datauni, REML=FALSE)

Je me rends compte que mes résultats d'anova sont beaucoup plus significatifs :

Analysis of Deviance Table (Type III Wald chisquare tests)

Response: SituResp
Chisq Df Pr(>Chisq)
Treatment 23.6775 4 9.269e-05 ***
Block 0.0007 1 0.9787


Merci d'avance pour vos indications,
Bonne journée,

Clara Lefèvre

Clara Lefèvre

Nombre de messages : 6
Date d'inscription : 28/06/2018

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Retirer ou garder l'intercept dans un modèle lmer

Message par Florent Aubry le Mer 25 Juil 2018 - 11:24

Plusieurs remarques :
- REML=FALSE (c'est-à-dire utilisation de l'approche ML) est valable pour comparer des modèles fixes entre eux et non pour estimer les paramètres (cf. Pinheiro et Bates) ;
- supprimer l'ordonnée à l'origine signifie que l'on pose/sait qu'elle est nulle. C'est différent du fait qu'elle n'est pas significative. De plus, cela peut poser des problèmes dans certains tests post-hoc.
- les deux modèles lmm1 et lmm2 sont différents en ce qui concerne leur partie aléatoire. Donc déduire des résultats que la suppression de l'ordonnée à l'origine rend les résultats plus significatifs est pour le moins hasardeux.

Florent Aubry

Nombre de messages : 213
Date d'inscription : 02/11/2015

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Retirer ou garder l'intercept dans un modèle lmer

Message par Clara Lefèvre le Mer 25 Juil 2018 - 12:20

Bonjour,

Merci beaucoup pour votre réponse. Je suis effectivement loin d'être experte en statistiques et je me suis faite aider dans la réalisation du modèle.
Pour le REML = F, un collègue m'avait expliqué qu'il était plus judicieux de procéder de cette manière... Mais j'avoue ne pas avoir tout compris parfaitement. Merci pour vos recommandations de lecture, je vais regarder cela de plus près.

Comment alors puis-je déterminer si je peux enlever l'intercept ou non ? Mes données sont réparties en fonction de chaque traitement donc je n'ai pas réellement de relation linéaire. c'est un peu abstrait pour moi...

Effectivement, lmm1 et lmm2 ont une syntaxe différente, mais outre l'intercept, me donnent tous les deux exactement les mêmes résultats.. J'en ai conclu que l'un ou l'autre revenait au même...

Clara

Clara Lefèvre

Nombre de messages : 6
Date d'inscription : 28/06/2018

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Retirer ou garder l'intercept dans un modèle lmer

Message par Nik le Mer 25 Juil 2018 - 12:29

Comment alors puis-je déterminer si je peux enlever l'intercept ou non ? Mes données sont réparties en fonction de chaque traitement donc je n'ai pas réellement de relation linéaire. c'est un peu abstrait pour moi...

Cela signifie de fait que tu n'as pas d'hypothèse suffisante pour retirer l'intercept.

Nik.

Nik

Nombre de messages : 1591
Date d'inscription : 23/05/2008

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Retirer ou garder l'intercept dans un modèle lmer

Message par Florent Aubry le Mer 25 Juil 2018 - 15:36

Effectivement, lmm1 et lmm2 ont une syntaxe différente, mais outre l'intercept, me donnent tous les deux exactement les mêmes résultats.. J'en ai conclu que l'un ou l'autre revenait au même...
Non, les résultats de l'analyse de déviance sont différentes en ce qui concerne le prédicteurs Treatment.
Comme le dit Nik, il faut avoir suffisamment d'hypothèses robustes pour supprimer l'intercept sinon c'est casse-gueule.

Mes données sont réparties en fonction de chaque traitement donc je n'ai pas réellement de relation linéaire. c'est un peu abstrait pour moi...
Revois les principes de l'Anova. Tu trouveras pleins de tutoriels simples, c'est-à-dire pour utilisateurs non matheux, sur le sujet.

Une petite astuce pour construire un modèle mixte. Commencer d'abord par construite le modèle comme si tous les facteurs étaient fixes. Ensuite, identifier les facteurs aléatoires Pour simplifier, supposons qu'on a deux facteurs F et G qui interagissent et qu'il n'y a que G qui est aléatoire. Voici alors comme procéder :
1) Formule de base : Y ~ F * G ou Y ~ F + F + F:G
2) faire passer les facteurs/interactions aléatoires dans (x|y)
 i) G devient (1|G)
 ii) F:G devient ((0 + F|G)) car F reste dans la partie fixe et cette partie ne concerne que l'interaction
=> La formule est alors : Y ~ F + (1|G) + ((0 + F)|G).
Elle peut aussi s'écrire : Y ~ F +((1 + F)|G) et selon la règle des formules de R qui veut que le 1 (intercept) est implicite, on a alors : Y ~ F +(F|G)

Quelques références supplémentaires sur les modèles à effets mixtes :
Baayen et al.
https://cran.r-project.org/web/packages/afex/vignettes/introduction-mixed-models.pdf
https://link.springer.com/content/pdf/10.3758%2Fs13428-016-0809-y.pdf

Florent Aubry

Nombre de messages : 213
Date d'inscription : 02/11/2015

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Retirer ou garder l'intercept dans un modèle lmer

Message par Clara Lefèvre le Ven 27 Juil 2018 - 7:40

Bonjour,

Merci beaucoup pour votre réponse,
Dans mon cas j'avais de base identifié le traitement (T) comme facteur fixe et mes répétitions comme facteur aléatoire (Block et subplot - B et S)
Le problème est que l'on souhaitait faire ressortir la différence de variabilité entre les blocs et les subplots (la variabilité entre bloc étant normalement plus grande que celle au sein d'un subplot). Dans mon cas je possède donc 2 variables aléatoires et une fixe. Et nous souhaitons étudier l'effet traitement seul (sans les interactions), mais le bloc et le subplot intéragissent puisque l'un est "emboité" dans l'autre
Si j'ai bien compris vos conseils, je devrais donc rédiger mon modèle de la manière suivante :

1/ Y ~ T*B*S ou Y~F+B+B:S
2) Y~F+1|B+((0+B)|S) soit Y~F+((1+B)|S) soit Y~F+(B|S) ?

Merci également pour les références,
Bonne journée,
Clara

Clara Lefèvre

Nombre de messages : 6
Date d'inscription : 28/06/2018

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Retirer ou garder l'intercept dans un modèle lmer

Message par Florent Aubry le Ven 27 Juil 2018 - 8:57

Si je t'ai donné une astuce pour construire le modèle, c'est que je soupçonnais un problème car il est impossible qu'un facteur soit à la fois fixe (~ Treatment + Block) et aléatoire (+ (1|Block/Subplot)) comme dans le premier modèle.

Si Block et Sublopt sont tous les deux aléatoires alors leur interaction l'est aussi contrairement à une interaction, si elle faisait partie du modèle, entre Treatment et Block. En effet, dans ce dernier cas, on dirait qu'il existe en plus de l'intercept global, un intercept/offset aléatoire différent pour chaque niveau du facteur Treatment, offset dont on cherche la distribution associée aux niveaux de Subplot dans chaque niveau. Dans le premier cas, on dit seulement qu'en plus de l'intercept global, on suppose que les différents niveaux de l'interaction ajoutent une distribution supplémentaire. J'espère être clair. En tout cas, soit le modèle est :
- ~ Treatment + Block + (Block | Subplot) si Block est fixe
- ~ Treatment + (1 | Block) + (1 | Block:Subplot) si Block et Sublopt sont tous les deux aléatoires. Dans ce dernier cas, selon la syntaxe des formules de R, on peut aussi écrire ~ Treatment + (1 | Block/Subplot)

Florent Aubry

Nombre de messages : 213
Date d'inscription : 02/11/2015

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Retirer ou garder l'intercept dans un modèle lmer

Message par Clara Lefèvre le Mar 31 Juil 2018 - 4:41

Bonjour,

Merci beaucoup pour votre réponse. Je pense avoir saisi l'idée. je pense effectivement que le bloc est un effet aléatoire puisque je suis en block complet randomisé (les points d’échantillonnages ne sont jamais choisis aux même points en fonction de la position du traitement i (i: 1->4) dans le bloc).

Et donc si je reviens à l'utilisation de RMEL=F, je peux l'écrire puisque que je cherche seulement à comparer les traitements entre eux et non à faire des estimations de paramètres (si j'ai bien compris)?

merci encore pour votre aide,
Clara

Clara Lefèvre

Nombre de messages : 6
Date d'inscription : 28/06/2018

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Retirer ou garder l'intercept dans un modèle lmer

Message par Florent Aubry le Mar 31 Juil 2018 - 6:12

REML=F sert à comparer des modèles fixes entre eux. D'ailleurs quand on compare deux modèles estimés par REML=TRUE entre eux par la fonction anova, celle-ci renvoie un warning et signale qu'elle les a réestimés avec REML=FALSE.

Même pour ce que tu veux faire, je pense qu'il est préférable de garder REML=TRUE. En effet, la méthode ML conduit à des estimateurs biaisés, ce qui fragilise la comparaison des traitements.

Florent Aubry

Nombre de messages : 213
Date d'inscription : 02/11/2015

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Retirer ou garder l'intercept dans un modèle lmer

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum