Les deux concepts que vous mentionnez (valeurs de p et tailles d'effet des modèles mixtes linéaires) ont des problèmes inhérents. En ce qui concerne la taille de l'effet , citant Doug Bates, l'auteur original de lme4
,
En supposant que l'on veuille définir une mesure , je pense qu'un argument pourrait être avancé pour traiter la somme résiduelle pénalisée des carrés d'un modèle mixte linéaire de la même manière que nous considérons la somme résiduelle des carrés d'un modèle linéaire. Ou on pourrait utiliser uniquement la somme résiduelle des carrés sans pénalité ou la somme résiduelle minimale des carrés pouvant être obtenue à partir d'un ensemble de termes donné, ce qui correspond à une matrice de précision infinie. Je ne sais pas vraiment. Cela dépend de ce que vous essayez de caractériser.R2
Pour plus d'informations, vous pouvez consulter ce fil , ce fil et ce message . Fondamentalement, le problème est qu'il n'y a pas de méthode convenue pour l'inclusion et la décomposition de la variance des effets aléatoires dans le modèle. Cependant, quelques normes sont utilisées. Si vous jetez un œil à la liste de diffusion Wiki configurée pour / par la liste de diffusion r-sig-mixed-models , deux approches sont répertoriées.
L'une des méthodes suggérées examine la corrélation entre les valeurs ajustées et observées. Cela peut être implémenté dans R comme suggéré par Jarrett Byrnes dans l'un de ces threads:
r2.corr.mer <- function(m) {
lmfit <- lm(model.response(model.frame(m)) ~ fitted(m))
summary(lmfit)$r.squared
}
Par exemple, supposons que nous estimons le modèle mixte linéaire suivant:
set.seed(1)
d <- data.frame(y = rnorm(250), x = rnorm(250), z = rnorm(250),
g = sample(letters[1:4], 250, replace=T) )
library(lme4)
summary(fm1 <- lmer(y ~ x + (z | g), data=d))
# Linear mixed model fit by REML ['lmerMod']
# Formula: y ~ x + (z | g)
# Data: d
# REML criterion at convergence: 744.4
#
# Scaled residuals:
# Min 1Q Median 3Q Max
# -2.7808 -0.6123 -0.0244 0.6330 3.5374
#
# Random effects:
# Groups Name Variance Std.Dev. Corr
# g (Intercept) 0.006218 0.07885
# z 0.001318 0.03631 -1.00
# Residual 1.121439 1.05898
# Number of obs: 250, groups: g, 4
#
# Fixed effects:
# Estimate Std. Error t value
# (Intercept) 0.02180 0.07795 0.280
# x 0.04446 0.06980 0.637
#
# Correlation of Fixed Effects:
# (Intr)
# x -0.005
Nous pouvons calculer la taille de l'effet en utilisant la fonction définie ci-dessus:
r2.corr.mer(fm1)
# [1] 0.0160841
Ω20
1-var(residuals(fm1))/(var(model.response(model.frame(fm1))))
# [1] 0.01173721 # Usually, it would be even closer to the value above
En ce qui concerne les valeurs p , c'est une question beaucoup plus litigieuse (au moins dans la communauté R / lme4
). Voir les discussions dans les questions ici , ici et ici parmi beaucoup d'autres. En référençant à nouveau la page Wiki, il existe quelques approches pour tester des hypothèses sur les effets dans des modèles mixtes linéaires. Répertorié du "pire au meilleur" (selon les auteurs de la page Wiki qui comprend, je crois, Doug Bates ainsi que Ben Bolker qui y contribue beaucoup):
- Wald Z-tests
- Pour les LMM équilibrés et imbriqués où df peut être calculé: tests t de Wald
- Test de rapport de vraisemblance, soit en configurant le modèle de manière à pouvoir isoler / supprimer le paramètre (via
anova
ou drop1
), soit en calculant des profils de vraisemblance
- MCMC ou intervalles de confiance de bootstrap paramétrique
Ils recommandent l'approche d'échantillonnage Monte Carlo de la chaîne de Markov et énumèrent également un certain nombre de possibilités de mise en œuvre à partir d'approches pseudo et entièrement bayésiennes, énumérées ci-dessous.
Pseudo-bayésien:
- Échantillonnage post hoc, généralement (1) en supposant des a priori plats et (2) en partant de la MLE, en utilisant éventuellement l'estimation approximative de la variance-covariance pour choisir une distribution candidate
- Via
mcmcsamp
(si disponible pour votre problème: c'est-à-dire LMM avec des effets aléatoires simples - pas des GLMM ou des effets aléatoires complexes)
Via pvals.fnc
dans le languageR
package, un wrapper pour mcmcsamp
)
- Dans AD Model Builder, éventuellement via le
glmmADMB
package (utilisez l' mcmc=TRUE
option) ou le R2admb
package (écrivez votre propre définition de modèle dans AD Model Builder), ou en dehors de R
- Via la
sim
fonction du arm
package (simule le postérieur uniquement pour les coefficients bêta (à effet fixe)
Approches entièrement bayésiennes:
- Via le
MCMCglmm
package
- Utilisation
glmmBUGS
(d'une interface wrapper / R WinBUGS )
- Utilisation de JAGS / WinBUGS / OpenBUGS etc., via les packages
rjags
/ r2jags
/ R2WinBUGS
/BRugs
À des fins d'illustration pour montrer à quoi cela pourrait ressembler, ci-dessous est une MCMCglmm
estimation en utilisant le MCMCglmm
package qui, vous verrez, donne des résultats similaires au modèle ci-dessus et a une sorte de valeurs p bayésiennes:
library(MCMCglmm)
summary(fm2 <- MCMCglmm(y ~ x, random=~us(z):g, data=d))
# Iterations = 3001:12991
# Thinning interval = 10
# Sample size = 1000
#
# DIC: 697.7438
#
# G-structure: ~us(z):g
#
# post.mean l-95% CI u-95% CI eff.samp
# z:z.g 0.0004363 1.586e-17 0.001268 397.6
#
# R-structure: ~units
#
# post.mean l-95% CI u-95% CI eff.samp
# units 0.9466 0.7926 1.123 1000
#
# Location effects: y ~ x
#
# post.mean l-95% CI u-95% CI eff.samp pMCMC
# (Intercept) -0.04936 -0.17176 0.07502 1000 0.424
# x -0.07955 -0.19648 0.05811 1000 0.214
J'espère que cela aide quelque peu. Je pense que le meilleur conseil pour quelqu'un commençant avec des modèles mixtes linéaires et essayant de les estimer dans R est de lire les FAQ Wiki d'où la plupart de ces informations ont été tirées. C'est une excellente ressource pour toutes sortes de thèmes d'effets mixtes du basique au avancé et de la modélisation au traçage.
anova()
fonction pour obtenir une table anova avec des modèles mixtes linéaires comme avec les modèles linéaires.