Extraction de pentes pour des cas à partir d'un modèle à effets mixtes (lme4)

13

Je voudrais extraire les pentes de chaque individu dans un modèle à effets mixtes, comme indiqué dans le paragraphe suivant

Des modèles à effets mixtes ont été utilisés pour caractériser les voies individuelles de changement dans les mesures cognitives sommaires, y compris les termes pour l'âge, le sexe et les années de scolarité comme effets fixes (Laird et Ware, 1982; Wilson et al., 2000, 2002c) ... Les termes résiduels de la pente du déclin cognitif individuel ont été extraits des modèles mixtes, après ajustement pour les effets de l'âge, du sexe et de l'éducation. Les pentes résiduelles ajustées spécifiques à la personne ont ensuite été utilisées comme phénotype de résultat quantitatif pour les analyses d'association génétique. Ces estimations correspondent à la différence entre la pente d'un individu et la pente prévue d'un individu du même âge, sexe et niveau d'éducation.

De Jager, PL, Shulman, JM, Chibnik, LB, Keenan, BT, Raj, T., Wilson, RS, et al. (2012). Une analyse à l'échelle du génome pour les variantes communes affectant le taux de déclin cognitif lié à l'âge . Neurobiologie du vieillissement, 33 (5), 1017.e1–1017.e15.

J'ai envisagé d'utiliser la coeffonction pour extraire les coefficients pour chaque individu, mais je ne sais pas si c'est la bonne approche à utiliser.

Quelqu'un peut-il fournir des conseils sur la façon de procéder?

#example R code 
library(lme4)
attach(sleepstudy)  
fml <- lmer(Reaction ~ Days + (Days|Subject), sleepstudy)
beta <- coef(fml)$Subject
colnames(beta) <- c("Intercept", "Slope")
beta

summary(beta)
summary(fm1)
Andrews
la source

Réponses:

29

Le modèle:

library(lme4)
data(sleepstudy)
fm1 <- lmer(Reaction ~ Days + (Days|Subject), sleepstudy)

La fonction coefest la bonne approche pour extraire les différences individuelles.

> coef(fm1)$Subject
    (Intercept)       Days
308    253.6637 19.6662581
309    211.0065  1.8475834
310    212.4449  5.0184067
330    275.0956  5.6529540
331    273.6653  7.3973908
332    260.4446 10.1951151
333    268.2455 10.2436611
334    244.1725 11.5418622
335    251.0714 -0.2848735
337    286.2955 19.0955694
349    226.1950 11.6407008
350    238.3351 17.0814915
351    255.9829  7.4520286
352    272.2687 14.0032989
369    254.6806 11.3395025
370    225.7922 15.2897513
371    252.2121  9.4791308
372    263.7196 11.7513155

Ces valeurs sont une combinaison des effets fixes et des composantes de la variance (effets aléatoires). Vous pouvez utiliser summaryet coefpour obtenir les coefficients des effets fixes.

> coef(summary(fm1))[ , "Estimate"]
(Intercept)        Days 
  251.40510    10.46729 

L'ordonnée à l'origine est 251,4 et la pente (associée à Days) est 10,4. Ces coefficients sont la moyenne de tous les sujets. Pour obtenir les effets aléatoires, vous pouvez utiliser ranef.

> ranef(fm1)$Subject
    (Intercept)        Days
308   2.2585637   9.1989722
309 -40.3985802  -8.6197026
310 -38.9602496  -5.4488792
330  23.6905025  -4.8143320
331  22.2602062  -3.0698952
332   9.0395271  -0.2721709
333  16.8404333  -0.2236248
334  -7.2325803   1.0745763
335  -0.3336936 -10.7521594
337  34.8903534   8.6282835
349 -25.2101138   1.1734148
350 -13.0699598   6.6142055
351   4.5778364  -3.0152574
352  20.8635944   3.5360130
369   3.2754532   0.8722166
370 -25.6128737   4.8224653
371   0.8070401  -0.9881551
372  12.3145406   1.2840295

Ces valeurs sont les composantes de variance des sujets. Chaque ligne correspond à un sujet. De façon inhérente, la moyenne de chaque colonne est nulle puisque les valeurs correspondent aux différences par rapport aux effets fixes.

> colMeans(ranef(fm1)$Subject)
  (Intercept)          Days 
 4.092529e-13 -2.000283e-13 

Notez que ces valeurs sont égales à zéro, les écarts sont dus à l'imprécision de la représentation des nombres à virgule flottante.

Le résultat d' coef(fm1)$Subjectincopore les effets fixes dans les effets aléatoires, c'est-à-dire que les coefficients d'effets fixes sont ajoutés aux effets aléatoires. Les résultats sont des interceptions et des pentes individuelles.

Sven Hohenstein
la source
Merci pour la réponse, qui a clarifié la façon dont les coefficients individuels sont calculés. Une autre question cependant, lorsque le paragraphe ci-dessus indique qu'ils ont ajusté pour les résidus est-ce la même chose que d'inclure les effets aléatoires dans les coefficients ou s'agit-il d'un problème distinct?
Andrews
Vous dites que coef (résumé (fm1)) [, "Estimation"] produit la moyenne de tous les sujets. Je suppose que cela implique que l'interception est la valeur moyenne de "Réaction", mais "moyenne (étude de sommeil $ Réaction) = 298,5079". Il s'agit de l'interprétation de l'ordonnée à l'origine dans une régression linéaire et j'essaie de comprendre les coefficients dans les modèles à effets mixtes et j'ai du mal à obtenir des choses (comme ça pour s'additionner). Pourquoi l'interception n'est-elle pas 298.5?
svannoy
@svannoy Notez que l'ordonnée à l'origine est la valeur estimée de la variable dépendante lorsque toutes les covariables sont égales à zéro. Ici, Daysn'est pas centré sur la moyenne, et donc l'ordonnée à l'origine du modèle est inférieure à la valeur moyenne de Reaction. De plus, la droite de régression est la meilleure adaptation linéaire. Par conséquent, les observations ne sont pas nécessairement sur cette ligne.
Sven Hohenstein
@SvenHohenstein merci d'avoir clarifié cela. Est-il exact de dire alors que dans la régression OLS avec une seule variable prédictive catégorielle et un codage d'écart (contr.sum ()), l'ordonnée à l'origine est précisément la grande moyenne; alors que dans la régression RC avec un modèle d'interception aléatoire, l'ordonnée à l'origine est la moyenne moyenne estimée?
svannoy
@svannoy Oui, avec le codage de l'écart, l'ordonnée à l'origine reflète le Grand Mean dans la régression OLS. Dans un modèle mixte linéaire, l'ordonnée à l'origine est en effet la Moyenne Moyenne estimée.
Sven Hohenstein