Utilisation de lmer pour le modèle linéaire à effets mixtes à mesures répétées

41

EDIT 2: Au départ, je pensais que je devais exécuter une ANOVA à deux facteurs avec des mesures répétées d'un facteur, mais je pense maintenant qu'un modèle linéaire à effets mixtes fonctionnera mieux pour mes données. Je pense que je sais presque ce qui doit se passer, mais je suis encore dérouté par quelques points.

Les expériences que j'ai besoin d'analyser ressemblent à ceci:

  • Les sujets ont été affectés à l'un des groupes de traitement
  • Les mesures de chaque sujet ont été prises sur plusieurs jours
  • Alors:
    • Le sujet est imbriqué dans le traitement
    • Le traitement est croisé avec le jour

(chaque sujet est affecté à un seul traitement et des mesures sont prises chaque jour sur chaque sujet)

Mon jeu de données contient les informations suivantes:

  • Sujet = facteur de blocage (facteur aléatoire)
  • Jour = facteur faisant l'objet de mesures répétées ou répétées (facteur fixe)
  • Traitement = facteur de sujet (facteur fixe)
  • Obs = variable mesurée (dépendante)

UPDATE OK, alors je suis allé parler à un statisticien, mais il utilise SAS. Il pense que le modèle devrait être:

Traitement + Jour + Sujet (Traitement) + Jour * Sujet (Traitement)

Il est évident que sa notation est différente de la syntaxe R, mais ce modèle est censé prendre en compte:

  • Traitement (fixe)
  • Jour (fixe)
  • l'interaction Traitement * Jour
  • Sujet imbriqué dans le traitement (aléatoire)
  • Jour croisé avec "Sujet pendant le traitement" (aléatoire)

Alors, est-ce la syntaxe correcte à utiliser?

m4 <- lmer(Obs~Treatment*Day + (1+Treatment/Subject) + (1+Day*Treatment/Subject), mydata)

Je suis particulièrement préoccupé par le fait que la partie "Jour dans le traitement" soit correcte. Quelqu'un est-il familier avec SAS ou a-t-il l'assurance de comprendre ce qui se passe dans son modèle et de savoir si ma triste tentative de syntaxe correspond?

Voici mes précédentes tentatives de création d'un modèle et d'une syntaxe d'écriture (abordées dans les réponses et les commentaires):

m1 <- lmer(Obs ~ Treatment * Day + (1 | Subject), mydata)

Comment puis-je gérer le fait que le sujet est imbriqué dans le traitement? Comment m1diffère de:

m2 <- lmer(Obs ~ Treatment * Day + (Treatment|Subject), mydata)
m3 <- lmer(Obs ~ Treatment * Day + (Treatment:Subject), mydata)

et sont m2et m3équivalent (et sinon, pourquoi)?

De plus, dois-je utiliser nlme au lieu de lme4 si je veux spécifier la structure de corrélation (comme correlation = corAR1)? Selon Mesures répétées , pour une analyse de mesures répétées avec des mesures répétées sur un facteur, la structure de covariance (la nature des corrélations entre les mesures d'un même sujet) est importante.

Lorsque j'essayais de réaliser une ANOVA à mesures répétées, j'avais décidé d'utiliser un SS de type II. est-ce toujours pertinent, et si oui, comment puis-je spécifier cela?

Voici un exemple de ce à quoi ressemblent les données:

mydata <- data.frame(
  Subject  = c(13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 29, 30, 31, 32, 33, 
               34, 35, 36, 37, 38, 39, 40, 62, 63, 64, 65, 13, 14, 15, 16, 17, 18, 
               19, 20, 21, 22, 23, 24, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 
               40, 62, 63, 64, 65, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 
               29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 62, 63, 64, 65), 
  Day       = c(rep(c("Day1", "Day3", "Day6"), each=28)), 
  Treatment = c(rep(c("B", "A", "C", "B", "C", "A", "A", "B", "A", "C", "B", "C", 
                      "A", "A", "B", "A", "C", "B", "C", "A", "A"), each = 4)), 
  Obs       = c(6.472687, 7.017110, 6.200715, 6.613928, 6.829968, 7.387583, 7.367293, 
                8.018853, 7.527408, 6.746739, 7.296910, 6.983360, 6.816621, 6.571689, 
                5.911261, 6.954988, 7.624122, 7.669865, 7.676225, 7.263593, 7.704737, 
                7.328716, 7.295610, 5.964180, 6.880814, 6.926342, 6.926342, 7.562293, 
                6.677607, 7.023526, 6.441864, 7.020875, 7.478931, 7.495336, 7.427709, 
                7.633020, 7.382091, 7.359731, 7.285889, 7.496863, 6.632403, 6.171196, 
                6.306012, 7.253833, 7.594852, 6.915225, 7.220147, 7.298227, 7.573612, 
                7.366550, 7.560513, 7.289078, 7.287802, 7.155336, 7.394452, 7.465383, 
                6.976048, 7.222966, 6.584153, 7.013223, 7.569905, 7.459185, 7.504068, 
                7.801867, 7.598728, 7.475841, 7.511873, 7.518384, 6.618589, 5.854754, 
                6.125749, 6.962720, 7.540600, 7.379861, 7.344189, 7.362815, 7.805802, 
                7.764172, 7.789844, 7.616437, NA, NA, NA, NA))
phosphorelated
la source

Réponses:

18

Je pense que votre approche est correcte. Le modèle m1spécifie une interception distincte pour chaque sujet. Le modèle m2ajoute une pente distincte pour chaque sujet. Votre pente dure plusieurs jours, car les sujets ne participent qu’à un groupe de traitement. Si vous écrivez le modèle m2comme suit, il est plus évident que vous modélisez une interception et une pente distinctes pour chaque sujet.

m2 <- lmer(Obs ~ Treatment * Day + (1+Day|Subject), mydata)

Ceci est équivalent à:

m2 <- lmer(Obs ~ Treatment + Day + Treatment:Day + (1+Day|Subject), mydata)

C'est-à-dire les principaux effets du traitement, du jour et de l'interaction entre les deux.

Je pense que vous n'avez pas besoin de vous inquiéter de la nidification tant que vous ne répétez pas les identifiants de sujets dans les groupes de traitement. Quel modèle est correct, dépend vraiment de votre question de recherche. Y a-t-il des raisons de croire que les pentes des sujets varient en plus de l'effet du traitement? Vous pouvez exécuter les deux modèles et les comparer anova(m1,m2)pour voir si les données prennent en charge l’un ou l’autre.

Je ne suis pas sûr de ce que vous voulez exprimer avec le modèle m3? La syntaxe d'imbrication utilise un /, par exemple (1|group/subgroup).

Je ne pense pas que vous ayez à vous soucier de l'autocorrélation avec un nombre de points aussi réduit.

utilisateur12719
la source
Ce n'est pas correct Le traitement est une variable de niveau 2, il ne peut pas être imbriqué dans les sujets.
Patrick Coulombe
A propos de l'autocorrélation et du nombre de points de temps: je n'en montre que trois dans cet exemple de données, mais mes données réelles contiennent des observations sur 8 jours différents, donc je pense que ce sera probablement un problème. Des idées comment mettre cela dedans?
phosphorelated
1
En outre, je suis maintenant assez confus au sujet de la nidification; (1 + Traitement | Sujet) est-il différent de (1 + Traitement / Sujet)? Qu'est-ce que le "|" signifie, en anglais simple? Je ne comprends pas les explications que j'ai lues.
phosphorelated
Salut. Qu'est-ce qu'une "pente séparée pour chaque sujet"? parce que le sujet est une variable facteur, pas une variable continue.
Skan
12

Je ne me sens pas assez à l'aise pour commenter votre problème d'erreurs autocorrélées (ni pour les différentes implémentations de lme4 vs nlme), mais je peux parler du reste.

Votre modèle m1est un modèle à interception aléatoire, dans lequel vous avez inclus l’interaction croisée entre Traitement et Jour (l’effet de Jour peut varier d’un groupe de traitement à l’autre). Afin de permettre aux changements dans le temps de différer selon les participants (par exemple, de modéliser explicitement les différences individuelles dans les changements dans le temps), vous devez également permettre que l'effet de Day soit aléatoire . Pour ce faire, vous devez spécifier:

m2 <- lmer(Obs ~ Day + Treatment + Day:Treatment + (Day | Subject), mydata)

Dans ce modèle:

  • L'interception si le score prévu pour la catégorie de référence de traitement au jour = 0
  • Le coefficient pour le jour est l'évolution prévue dans le temps pour chaque augmentation d'un jour en unités pour la catégorie de référence de traitement.
  • Les coefficients pour les deux codes factices pour les groupes de traitement (créés automatiquement par R) sont la différence prévue entre chaque groupe de traitement restant et la catégorie de référence à Jour = 0.
  • Les coefficients pour les deux termes d'interaction sont la différence d'effet du temps (jour) sur les scores prédits entre la catégorie de référence et les groupes de traitement restants.

Les interceptions et l'effet du jour sur le score sont aléatoires (chaque sujet est autorisé à avoir un score prédit différent à Day = 0 et un changement linéaire différent dans le temps). La covariance entre les intersections et les pentes est également modélisée (elles sont autorisées à être covary).

Comme vous pouvez le constater, l’interprétation des coefficients des deux variables nominales est conditionnelle à Day = 0. Ils vous diront si le score prévu au jour = 0 pour la catégorie de référence est significativement différent des deux groupes de traitement restants. Par conséquent, il est important que vous décidiez de centrer votre variable Day. Si vous centrez sur le jour 1, les coefficients vous indiqueront si le score prévu pour la catégorie de référence au jour 1 est significativement différent du score prévu des deux groupes restants. De cette façon, vous pouvez voir s'il existe des différences préexistantes entre les groupes . Si vous centrez sur le jour 3, les coefficients vous indiqueront si le score prévu pour la catégorie de référence au jour 3est significativement différent du score prédit des deux groupes restants. De cette façon, vous pourriez voir s'il y a des différences entre les groupes à la fin de l'intervention .

Enfin, notez que les sujets ne sont pas imbriqués dans Traitement. Vos trois traitements ne sont pas des niveaux aléatoires d'une population de niveaux auxquels vous souhaitez généraliser vos résultats. Au contraire, comme vous l'avez mentionné, vos niveaux sont fixes et vous souhaitez généraliser vos résultats à ces niveaux uniquement. (Sans oublier, vous ne devriez pas utiliser la modélisation à multiniveaux si vous n'avez que 3 unités de niveau supérieur; voir Maas & Hox, 2005.) Le traitement est plutôt un prédicteur de niveau 2, c'est-à-dire un prédicteur qui prend une seule valeur sur plusieurs jours. (unités de niveau 1) pour chaque matière. Par conséquent, il est simplement inclus en tant que prédicteur dans votre modèle.

Référence:
Maas, CJM et Hox, JJ (2005). Des échantillons suffisants pour la modélisation à plusieurs niveaux. Méthodologie: Revue européenne des méthodes de recherche en sciences du comportement et des sciences sociales , 1 , 86-92.

Patrick Coulombe
la source
1
Il n'est pas estimable par lmer car le nombre d’effets aléatoires et la variance résiduelle sont probablement non identifiables.
Shuguang
La structure de la formule dans la réponse est correcte. Afin de remplacer l'erreur mentionnée par @Shuguang, vous devez ajouter ...,control=lmerControl(check.nobs.vs.nRE="ignore"). voir ce lien pour plus d'explications par Ben Bolker.
NiuBiBang le
Belles explications. Pourriez-vous s'il vous plaît expliquer un peu plus pourquoi "Les sujets ne sont pas imbriqués dans le traitement" et pourquoi vous ne créez pas de terme d'erreur + (Traitement | Sujet) et pourquoi pas simplement (1 | Sujet) ou même (1 | Traitement * Jour )?
Skan
Techniquement, vous pouvez imbriquer des sujets dans le traitement. Toutefois, si le prédicteur est le même quel que soit le nombre de fois où vous avez exécuté l'expérience, il devrait s'agir d'un effet fixe (et non aléatoire). Les facteurs qui seraient différents à chaque fois que vous exécutez l'expérience, tels que les caractéristiques individuelles du sujet - par exemple, leur valeur de départ ou leur réponse idiosyncratique aux modifications du traitement au fil du temps - sont des effets aléatoires. (1 + Day|Subject)signifie un modèle de pentes aléatoires, qui permet à la valeur initiale de chaque sujet (Intercept) et au taux de changement du résultat d'être différents.
llewmills le