2017-06-15 1 views
1

Je ne comprends pas exactement ce que la fonction merTools::predictInterval prévoit exactement pour chaque composant lorsque l'option which est définie sur which = 'all'. Par exemple,Signification des composants dans merTools :: predictInterval

library(lme4) 
library(merTools) 
fm1 <- lmer(Reaction ~ Days + (1 | Subject), sleepstudy) 
pred <- predictInterval(fm1, which = 'all') 
pred[pred$obs == 1,] 

retours

 effect  fit  upr  lwr obs 
1 combined 293.6893 335.0569 249.310016 1 
181 Subject 40.6980 82.8388 -4.490277 1 
361 fixed 251.2517 292.0853 212.230277 1 

Je suppose que l'ajustement de l'effet fixe et l'ajustement pour le sujet de l'effet aléatoire ajouteraient à l'ajustement de l'effet combiné. Cependant, je reçois:

> sum(pred[pred$obs == 1 & pred$effect %in% c('fixed','Subject'),]$fit) 
[1] 291.9497 

Qu'est-ce que j'interprète mal ici?

Répondre

0

La clé est que predictInterval simule des intervalles de prédiction en tirant de la distribution postérieure. La façon dont il présente les composants est le résultat de tirages indépendants pour les effets aléatoires, fixes et combinés. Ainsi, alors que logiquement, ils devraient s'additionner, avec une erreur de mesure et la variance des effets eux-mêmes, avec un nombre fini de simulations, les moyennes ou médianes de ces distributions ne s'aligneront pas sur la somme des effets combinés.

Vous pouvez augmenter n.sims à un très grand nombre (~ 5000, 10,000) et cet écart sera plus petit.

Mais le problème clé est que chacune de ces lignes est le résultat de tirages indépendants du postérieur.