Structure de variance-covariance pour les effets aléatoires dans lme4

10

Quelle est la structure de variance-covariance par défaut pour les effets aléatoires dans glmerou lmerdans le lme4package? Comment spécifier une autre structure variance-covariance pour les effets aléatoires dans le code? Je n'ai trouvé aucune information à ce sujet dans la lme4documentation.

user40451
la source

Réponses:

14

La structure par défaut variance-covariance n'est pas structurée - c'est-à-dire que la seule contrainte sur la matrice variance-covariance pour un effet aléatoire vectoriel avec niveaux est qu'elle est définie positive. Les termes d'effets aléatoires séparés sont considérés comme indépendants, cependant, si vous voulez ajuster (par exemple) un modèle avec une interception aléatoire et une pente où l'interception et la pente ne sont pas corrélées (pas nécessairement une bonne idée), vous pouvez utiliser la formule , où est le facteur de regroupement; len(1|g) + (0+x|g)g0dans le second terme supprime l'interception. Si vous souhaitez ajuster des paramètres indépendants d'une variable catégorielle (là encore, peut-être discutable), vous devez probablement construire des variables numériques fictives à la main. Vous pouvez, en quelque sorte, construire une structure de variance-covariance symétrique composée (bien qu'avec des covariances non négatives uniquement) en traitant le facteur comme une variable de regroupement imbriquée. Par exemple, si fest un facteur, alors (1|g/f)supposera des corrélations égales entre les niveaux de f.

Pour d'autres structures variance-covariance plus complexes, vos choix (dans R) sont de (1) utiliser nlme(qui a les pdMatrixconstructeurs pour permettre plus de flexibilité); (2) l'utilisation MCMCglmm(qui offre une variété de structures, y compris une structure non structurée, symétrique composée, une identité avec des variances différentes ou une identité avec des variances homogènes); (3) utiliser un package spécial tel que pedigreemmcelui qui construit une matrice structurée spéciale. Il y a une flexLambdabranche sur github qui espère éventuellement fournir plus de capacités dans ce sens.

Ben Bolker
la source
Peut-être qu'il vaut la peine de souligner que le xxMpackage est également une bonne option, mais plus compliquée, qui permet la modélisation des équations de structure. xxm.times.uh.edu
User33268
5

Je peux montrer cela par l'exemple.

Les termes de covariance sont spécifiés dans la même formule que les effets fixes et aléatoires. Les termes de covariance sont spécifiés par la façon dont la formule est écrite.

Par exemple:

glmer(y ~ 1 + x1 + (1|g) + (0+x1|g), data=data, family="binomial")

Ici, il y a deux effets fixes qui peuvent varier de façon aléatoire et un facteur de regroupement g. Étant donné que les deux effets aléatoires sont séparés en leurs propres termes, aucun terme de covariance n'est inclus entre eux. En d'autres termes, seule la diagonale de la matrice variance-covariance est estimée. Le zéro dans le deuxième terme indique explicitement qu'il n'ajoute pas de terme d'interception aléatoire et ne permet pas à une interception aléatoire existante de varier avec x1.

Un deuxième exemple:

glmer(y ~ 1 + x1 + (1+x1|g), data=data, family="binomial")

Ici, une covariance entre l'interception et x1les effets aléatoires est spécifiée car 1 + x1 | g est tous contenus dans le même terme. En d'autres termes, les 3 paramètres possibles de la structure variance-covariance sont estimés.

Un exemple un peu plus compliqué:

glmer(y ~ 1 + x1 + x2 + (1+x1|g) + (0+x2|g), data=data, family="binomial")

Ici, les x1effets d' interception et aléatoires peuvent varier ensemble tandis qu'une corrélation nulle est imposée entre l' x2effet aléatoire et chacun des deux autres. Encore une fois, a 0est inclus dans le x2terme d'effet aléatoire uniquement pour éviter explicitement d'inclure une interception aléatoire qui conviendrait à l' x2effet aléatoire.

ndoogan
la source