Les posteurs les plus actifs de la semaine
Eric Wajnberg
 


modèle glmer avec effets random et famille poisson

Aller en bas

modèle glmer avec effets random et famille poisson

Message par Aourell42 le Mar 17 Avr 2018 - 12:22

Hello tout le monde !

Une petite question pour vous à propos des modèles avec glmer.

Je voudrais tester si ma réponse comportementale observée varie en fonction de la conditino (mon effet fixe), et s'il y a un effet de l"individu et de l'ordre du test (si c'est la premiere, deuxieme ou troisième fois qu'il est testé).

Je crée un modèle :

mod3<-glmer(pc1~condition +(1|(id_sujet))+(1|(ordre_test)),family="poisson")

Problème : la variable pc1 est une variable qui va en gros de -2 à 6 car c'est un score obtenu à partir d'une acp. PEtits scores = peu de comportements, gros scores = beaucoup de comportements.
J'ai vu que family=poisson ne prend que des valeurs positives et entières, alors je me demande si j'ai le droit de modifier ma variable pc1 pour la rendre entière et positive.
J'imagine qu'il y a un moyen pour faire passer du poisson la dessus sans fausser ma variable en la modifiant.
Je pensais faire +2 et ensuite arrondir mais est-ce que c'est une hérésie car ca change les data ?

Et en second temps, quand j'ai la sortie de mon modèle, comment interpréter la partie RANDOM EFFECTS, càd comment dire à partir des valeurs que renvoie le summary(mod3) s'il y a un effet de ces random factors que j'ai inclus dans le modèle ?


Merci d'avance pour vos réponses,

Aourell

Aourell42

Nombre de messages : 4
Date d'inscription : 12/04/2018

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: modèle glmer avec effets random et famille poisson

Message par Florent Aubry le Mer 18 Avr 2018 - 6:57

Dire qu'on a une variable dépendante qui relève d'un modèle poissonien, c'est faire l'hypothèse qu'elle résulte d'un comptage qui est positif ou nul par nature, et que de ce fait elle ne peut prendre que des valeurs entières. Donc, tu ne peux pas utiliser un modèle poissonien dans ton analyse. Personnellement, je conserverais la famille gaussienne.

L'interprétation des effets aléatoires est simple. Pour le sujet, il représente la variabilité intrinsèque des sujets, c'est-à-dire qu'on fait l'hypothèse que la ligne de base des sujets (ordonnée à l'origine) varie autour de l'ordonnée à l'origine de la partie fixe (grande moyenne) selon une loi gaussienne de variance, celle de l'effet aléatoire. Si cet effet est non significatif, on peut alors conclure que tous les sujets ont la même ligne de base.

En ce qui concerne l'ordre, on a ou non une influence de l'ordre du test. Si c'est le cas, il faut regarder les résidus (fonction ranef) et s'il varient de manière monotone en fonction de l'ordre, on peut en conclure qu'il y a une effet d'habituation, sinon il faut essayer de comprendre pourquoi. Par exemple, malgré des petites différences les deux premières présentation sont identiques (i.e., différence non significative) mais pas la troisième, d'où quand même un effet

Pour tester l'existence des effets aléatoires, je te joins quelques méthodes que j'avais trouvées sur la toile :
Facteur aléatoire ou non :
Code:

#      Procédure lme(r) vs. lm :
lmer.data <- lmer( Y ~ (1 | Groupe), donnees)
lm.data <- lm( Y ~ 1, donnees)

ll.r <- logLik( lmer.data, REML=TRUE)
ll.f <- logLik( lm.data, REML=TRUE)
khi2 <- 2 * (ll.r – ll.f)

pchisq( khi2, df=attr( ll.r, "df") – attr( ll.f, "df"), lower.tail=FALSE)
Plus d'un facteur ou interaction
Code:
# Plus d’un facteur de regroupement
lmer1.data <- lmer( Y ~ (1 | Groupe), donnees)
lmerC.data <- lmer( Y ~ (1 | Groupe) + (1 | Population), donnees)

# Interactions aléatoires
lmer1.data <- lmer( Y ~ X + (1 | Groupe), donnees)
lmerC.data <- lmer( Y ~ X + (X | Groupe), donnees)

# Test
anova( lmer1.data, lmerC.data )
Méthode par bootstrap (Cécile Ané) :
Code:
# Méthode du bootstrap : utilisation de la procédure simulate
# Hypothèse nulle : lm.h0
# Hypothèse à tester : lm.h1
# Récupérer le khi2 entre les deux hypothèses : khi2.data

# Procédure de calcul :
sim.h1 <- function() {
   y <- simulate( lm.h0)[,1]
   lm.null <- lm[e/er])( update( formule.h0, Y ~ .), data=cbind( donnees, Y=y))
   lm.fit <- lme[r]( update( formule.h1, Y ~ .), data=cbind( donnees, Y=y))
   return( khi2 entre les deux formules - voir 1er code pour l'obtenir)
}
sim.khi2 <- replicate( nb.boot, sim.h1) # nb.boot = 10000
mean( sim.khi2 > khi2.data)

Florent Aubry

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

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: modèle glmer avec effets random et famille poisson

Message par Aourell42 le Jeu 19 Avr 2018 - 12:40

Bonjour, merci pour ta réponse.

Pour la famille, je comprends ton argument pour la famille "poisson", c'est pourquoi je cherchais a transformer un peu mes données pour pouvoir utiliser cette loi.
Comment puis-je être autorisée à utiliser la famille gaussienne alors que mes données ne sont clairement pas de cette distribution ?

En tout cas j'ai réglé mon problème d'interprétation des effets random, je connaissais l'interprétation logique mais je ne savais pas quels chiffres regarder sur les sorties des summary, anovas etc.

est-ce que j'ai le droit de transformer mes data pour les rendre plus...poissonniennes ? (càs les transformer en entiers positifs, car elles suivent deja la bonne distribution de poisson)

Merci beaucoup !

Aourell

Aourell42

Nombre de messages : 4
Date d'inscription : 12/04/2018

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: modèle glmer avec effets random et famille poisson

Message par Florent Aubry le Jeu 19 Avr 2018 - 13:26

Pour dire que des données sont 'normales', ce ne sont pas les données elles-mêmes qu'il faut regarder mais les résidus. Par exemple :
Code:
x <- runif( 100, min=-1.5, max=1.5)
y <- x^3 + rnorm( 100, sd=0.1)
shapiro.test( y)

        Shapiro-Wilk normality test

data:  y
W = 0.93215, p-value = 6.609e-05

# y n'est pas gaussien !!!

res <- lm( y ~ I(x^3))
summary( res)

Call:
lm(formula = y ~ I(x^3))

Residuals:
      Min        1Q    Median        3Q       Max
-0.234970 -0.068878 -0.001163  0.063767  0.288437

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) 0.006480   0.010498   0.617    0.538    
I(x^3)      0.998482   0.007539 132.438   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.1044 on 98 degrees of freedom
Multiple R-squared:  0.9944,    Adjusted R-squared:  0.9944
F-statistic: 1.754e+04 on 1 and 98 DF,  p-value: < 2.2e-16

# droite de Henry : modèle linéaire justifié !!!
plot( res, which=2)

Le modèle linéaire et a fortiori s'il est mixte est assez robuste face à la non normalité des données. Tu peux toujours essayer des transformations du type Box-Cox ou Tukey (voir les procédures powerTransform, bcPower, yjPower et basicPower du package car), bien que cela est peu utilisé et complique grandement l'interprétation mais certainement pas essayer de forcer tes données à ressembler à des données poissoniennes qui n'ont de sens que si ce sont des comptages. En effet, le modèle sous-jacent à ces familles sont en gros :
- famille gaussienne : la variation de la variable dépendante est proportionnelle à la variation de la variable indépendante (variable continue) ;
- famille poissonienne : la probabilité d'un événement y (c'est-à-dire dy = 1, variable discrète) dans un voisinage dt du point t (variable indépendante continue) est lambda dt.

Florent Aubry

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

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: modèle glmer avec effets random et famille poisson

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