Les posteurs les plus actifs de la semaine
Aucun utilisateur |
Sujets les plus vus
modèle glmer avec effets random et famille poisson
2 participants
Page 1 sur 1
modèle glmer avec effets random et famille poisson
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
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
Re: modèle glmer avec effets random et famille poisson
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 :
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)
- 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 )
- 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 : 251
Date d'inscription : 02/11/2015
Re: modèle glmer avec effets random et famille poisson
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
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
Re: modèle glmer avec effets random et famille poisson
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 :
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.
- 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 : 251
Date d'inscription : 02/11/2015
Sujets similaires
» GLM : modèle Poisson vs modèle quasi-Poisson
» R analyses de donnée binaires avec glmer
» modèle à effets aléatoire - significativité
» Modèle linéaire général, interactions, effets principaux.
» Clustering de variables avec effets aléatoires
» R analyses de donnée binaires avec glmer
» modèle à effets aléatoire - significativité
» Modèle linéaire général, interactions, effets principaux.
» Clustering de variables avec effets aléatoires
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum