Dans R, comment spécifier le modèle lmer sans effet fixe global? Par exemple, si je dis quelque chose comme
lmer(y ~ (1 | group) + (0 + x | group), data = my_df)
le modèle équipé sera
Comment puis-je adapter le modèle
?
Dans R, comment spécifier le modèle lmer sans effet fixe global? Par exemple, si je dis quelque chose comme
lmer(y ~ (1 | group) + (0 + x | group), data = my_df)
le modèle équipé sera
Comment puis-je adapter le modèle
?
lmer(y~0+(1|group)+(0+x|group))
cela fonctionnerait, mais cela donne une erreur.y
first :)Réponses:
Comme @Mike Lawrence l'a mentionné, la chose évidente à faire lors de la définition d'un modèle sans effets fixes est quelque chose sous la forme de:
ce qui est en fait assez simple; on ne définit pas d'interception ou une matrice X. La raison fondamentale pour laquelle cela ne fonctionne pas est que, comme l'a souligné @maxTC, "le package lme4 est dédié aux modèles mixtes uniquement ".
En particulier, l'ajustement lmer () calcule la déviance profilée en résolvant la régression du moindre carré pénalisé entre les et ainsi que les effets aléatoires sphériques et (Eq. (11), réf. (2)). Calculée, cette procédure d'optimisation calcule la décomposition de Cholesky du système correspondant en exploitant la structure de blocs du système (Eq. (5), Réf. (1)). La définition d'aucun effet fixe global ne déforme pratiquement cette structure de bloc d'une manière que le code de lmer () ne peut pas supporter. Entre autres choses, la valeur conditionnelle attendue de est basée sur celle de mais la résolution dey^ y u 0 u β^ β^ demande la solution d'un système matriciel qui n'a jamais existé (la matrice dans la réf. (1), ou dans la réf. (2)). Vous obtenez donc une erreur comme:RXX LX
car après tout, il n'y avait rien à résoudre en premier lieu.
En supposant que vous ne voulez pas réécrire la fonction de coût de déviance profilée lmer (), la solution la plus simple est basée sur l'axiome CS-101: garbage in, garbage out .
Donc, ce que nous faisons, c'est définir une variable qui est juste du bruit; comme auparavant, lmer () est chargé de ne pas utiliser d'interception fixe, mais seule la matrice X nous a définis (dans ce cas, la matrice à colonne unique Garbage). Cette variable de bruit gaussien supplémentaire sera en attente non corrélée à nos erreurs de mesure d'échantillon ainsi qu'à votre variance d'effets aléatoires. Inutile de dire que plus votre modèle est structuré, plus la probabilité d'obtenir des corrélations aléatoires indésirables mais statistiquement significatives est faible.Garbage
Donc, lmer () a une variable placebo (matrice) pour jouer avec, dans l'attente, vous obtiendrez la associée à zéro et vous n'avez pas eu à normaliser vos données de quelque façon (les centrer, les blanchir, etc.) . Essayer probablement une initialisation aléatoire de la matrice placebo ne fera pas de mal non plus. Une dernière note pour le "Garbage": l'utilisation du bruit gaussien n'était pas "accidentelle"; il a la plus grande entropie parmi toutes les variables aléatoires de variance égale, donc le moins de chance de fournir un gain d'information.X β X
Clairement, c'est plus une astuce de calcul qu'une solution, mais cela permet à l'utilisateur de spécifier efficacement un modèle lmer sans effet fixe global. Toutes mes excuses pour avoir espéré les deux références. En général, je pense que la référence (1) est le meilleur pari pour quiconque de réaliser ce que fait lmer (), mais la référence (2) est plus proche de l'esprit du code actuel.
Voici un peu de code illustrant l'idée ci-dessus:
Références:
la source