Comparaison d'un modèle mixte (sujet comme effet aléatoire) à un modèle linéaire simple (sujet comme effet fixe)

10

Je termine une analyse sur un grand ensemble de données. Je voudrais prendre le modèle linéaire utilisé dans la première partie du travail et le réajuster en utilisant un modèle mixte linéaire (LME). Le LME serait très similaire à l'exception que l'une des variables utilisées dans le modèle serait utilisée comme effet aléatoire. Ces données proviennent de nombreuses observations (> 1000) dans un petit groupe de sujets (~ 10) et je sais qu'il est préférable de modéliser l'effet du sujet comme un effet aléatoire (c'est une variable que je veux déplacer). Le code R ressemblerait à:

my_modelB <- lm(formula = A ~ B + C + D)    
lme_model <- lme(fixed=A ~ B + C, random=~1|D, data=my_data, method='REML')

Tout se passe bien et les résultats sont très similaires. Ce serait bien si je pouvais utiliser quelque chose comme RLRsim ou un AIC / BIC pour comparer ces deux modèles et décider lequel est le plus approprié. Mes collègues ne veulent pas signaler le LME car il n'y a pas de moyen facilement accessible de choisir ce qui est "meilleur", même si je pense que le LME est le modèle le plus approprié. Aucune suggestion?

MudPhud
la source

Réponses:

6

Ceci est à ajouter à la réponse de @ ocram car il est trop long pour poster un commentaire. Je traiterais A ~ B + Ccomme votre modèle nul afin que vous puissiez évaluer la signification statistique d'une Dinterception aléatoire de niveau dans une configuration de modèle imbriqué. Comme l'a souligné ocram, les conditions de régularité sont violées lorsque , et la statistique de test du rapport de vraisemblance (LRT) ne sera pas nécessairement distribuée asymptotiquement . La solution que j'ai apprise était d'amorcer le LRT (dont la distribution d'amorçage ne sera probablement pas ) paramétrique et de calculer une valeur de p d'amorçage comme ceci:χ 2 χ 2H0:σ2=0χ2χ2

library(lme4)
my_modelB <- lm(formula = A ~ B + C)
lme_model <- lmer(y ~ B + C + (1|D), data=my_data, REML=F)
lrt.observed <- as.numeric(2*(logLik(lme_model) - logLik(my_modelB)))
nsim <- 999
lrt.sim <- numeric(nsim)
for (i in 1:nsim) {
    y <- unlist(simulate(mymodlB))
    nullmod <- lm(y ~ B + C)
    altmod <- lmer(y ~ B + C + (1|D), data=my_data, REML=F)
    lrt.sim[i] <- as.numeric(2*(logLik(altmod) - logLik(nullmod)))
}
mean(lrt.sim > lrt.observed) #pvalue

La proportion de LRT amorcés plus extrêmes que le LRT observé est la valeur p.

verrouillé
la source
Merci d'avoir complété ma réponse. De plus, parfois, les gens utilisent un mélange de chi-carrés au lieu d'une distribution de chi-carré pour la statistique de test.
ocram
@ocram +1 pour votre commentaire sur la décision de traiter la variable comme aléatoire ou fixe séparément de l'analyse. @MudPhud Si votre PI ne comprend pas le problème et insiste sur une valeur de p, alors peut-être juste lui montrer le résultat du test de l'effet aléatoire (que vous incluriez de toute façon dans l'écriture).
verrouillé
Merci pour le code. Lorsque je l'ai exécuté, le résultat est qu'aucun des LRT amorcés n'est supérieur à celui observé, cela signifie donc que je peux m'en tenir au lm sans les effets aléatoires ni même la variable d'origine
ajoutée
@MudPhud: Avez-vous eu des erreurs? Essayez de taper lrt.simpour vous assurer qu'ils ne sont pas tous des zéros, auquel cas le coupable le plus probable serait que vous n'avez pas lme4installé le package .
verrouillé
Ils ne sont pas 0, juste très petits (~ 1e-6) par rapport à ceux observés (63,95).
MudPhud
2

Je ne suis pas totalement sûr de savoir quel modèle est installé lorsque vous utilisez la fonction lme. (Je suppose que l'effet aléatoire est censé suivre une distribution normale avec une moyenne nulle?). Cependant, le modèle linéaire est un cas particulier du modèle mixte lorsque la variance de l'effet aléatoire est nulle. Bien que certaines difficultés techniques existent (parce que est à la limite de l'espace des paramètres pour la variance), il devrait être possible de tester vs ...H 0 : v a r i a n c e = 0 H 1 : v a r i a n c e > 00H0:variance=0H1:variance>0

ÉDITER

Afin d'éviter toute confusion: Le test mentionné ci-dessus est parfois utilisé pour décider si oui ou non l'effet aléatoire est significatif ... mais pas pour décider s'il doit ou non être transformé en un effet fixe.

ocram
la source
La question est: existe-t-il un test pour décider si la variable doit être modélisée comme un effet mixte ou un effet aléatoire? Sinon, vous pourriez faire le test que vous avez décrit, puis le tester avec une dist chi-carré (je ne suis pas sûr du test approprié).
MudPhud
2
@MudPhud: La modélisation d'une variable en tant qu'effet fixe ou aléatoire devrait en fait être décidée avant l'analyse, lorsque l'étude est planifiée. Cela dépend notamment de la portée de vos conclusions. Les effets aléatoires permettent une plus grande généralisabilité. Cela pourrait également éviter certaines difficultés techniques. Par exemple, les asymptotiques peuvent se briser lorsque le nombre de paramètres augmente, comme c'est le cas lorsqu'une variable catégorielle avec beaucoup de niveaux est considérée comme une variable fixe.
ocram
Je suis d'accord, mais quand j'ai essayé d'expliquer cela à mon IP, il s'est simplement retourné et a demandé une valeur p en quelque sorte. Je veux inclure cette analyse dans un manuscrit, mais il ne la mettra pas s'il n'y a pas de justification plus concrète.
MudPhud
1
@MudPhud: Au meilleur de ma connaissance, il n'y a pas de valeur p pour une telle décision. Si l'intérêt se concentre sur l'effet des niveaux spécifiques choisis, il doit être considéré comme fixe. Si les niveaux de facteurs disponibles sont considérés comme un échantillon aléatoire d'une population plus large et que des inférences sont nécessaires pour la population plus large, l'effet doit être aléatoire.
ocram