L'occurrence pas si rare lorsqu'il s'agit de modèles mixtes maximaux complexes (estimation de tous les effets aléatoires possibles pour des données et un modèle donnés) est parfaite (+1 ou -1) ou une corrélation presque parfaite entre certains effets aléatoires. Aux fins de la discussion, observons le modèle et le résumé de modèle suivants
Model: Y ~ X*Cond + (X*Cond|subj)
# Y = logit variable
# X = continuous variable
# Condition = values A and B, dummy coded; the design is repeated
# so all participants go through both Conditions
# subject = random effects for different subjects
Random effects:
Groups Name Variance Std.Dev. Corr
subject (Intercept) 0.85052 0.9222
X 0.08427 0.2903 -1.00
CondB 0.54367 0.7373 -0.37 0.37
X:CondB 0.14812 0.3849 0.26 -0.26 -0.56
Number of obs: 39401, groups: subject, 219
Fixed effects:
Estimate Std. Error z value Pr(>|z|)
(Intercept) 2.49686 0.06909 36.14 < 2e-16 ***
X -1.03854 0.03812 -27.24 < 2e-16 ***
CondB -0.19707 0.06382 -3.09 0.00202 **
X:CondB 0.22809 0.05356 4.26 2.06e-05 ***
La raison supposée de ces corrélations parfaites est que nous avons créé un modèle trop complexe pour les données dont nous disposons. Le conseil commun qui est donné dans ces situations est (par exemple, Matuschek et al., 2017; papier ) de fixer les coefficients sur-paramétrisés à 0, car de tels modèles dégénérés ont tendance à réduire la puissance. Si nous observons un changement marqué des effets fixes dans un modèle réduit, nous devons l'accepter; s'il n'y a pas de changement, il n'y a aucun problème à accepter l'original.
Supposons cependant que nous ne nous intéressions pas seulement aux effets fixes contrôlés pour les RE (effets aléatoires), mais aussi à la structure des RE. Dans le cas donné, il serait théoriquement judicieux de supposer que Intercept
la pente X
a une corrélation négative non nulle. Plusieurs questions suivent:
Que faire dans de telles situations? Doit-on rapporter la corrélation parfaite et dire que nos données ne sont pas "assez bonnes" pour estimer la "vraie" corrélation? Ou devrions-nous signaler le modèle de corrélation 0? Ou devrions-nous peut-être essayer de mettre une autre corrélation à 0 dans l'espoir que celle "importante" ne sera plus parfaite? Je ne pense pas qu'il y ait de réponses 100% correctes ici, je voudrais surtout entendre vos opinions.
Comment écrire le code qui fixe la corrélation de 2 effets aléatoires spécifiques à 0, sans influencer les corrélations entre les autres paramètres?
la source
blme
,MCMCglmm
,rstanarm
,brms
...)Réponses:
Matrices de covariance à effet aléatoire singulières
L'obtention d'une estimation de corrélation à effet aléatoire de +1 ou -1 signifie que l'algorithme d'optimisation a atteint "une limite": les corrélations ne peuvent pas être supérieures à +1 ni inférieures à -1. Même s'il n'y a pas d'erreurs ou d'avertissements de convergence explicites, cela indique potentiellement certains problèmes de convergence car nous ne nous attendons pas à ce que de vraies corrélations se situent à la frontière. Comme vous l'avez dit, cela signifie généralement qu'il n'y a pas suffisamment de données pour estimer tous les paramètres de manière fiable. Matuschek et al. 2017 dit que dans cette situation, le pouvoir peut être compromis.
Une autre façon d'atteindre une limite consiste à obtenir une estimation de la variance de 0: Pourquoi est-ce que j'obtiens une variance nulle d'un effet aléatoire dans mon modèle mixte, malgré certaines variations dans les données?
Les deux situations peuvent être vues comme l'obtention d'une matrice de covariance dégénérée d'effets aléatoires (dans votre exemple, la matrice de covariance de sortie est ); une variance nulle ou une corrélation parfaite signifie que la matrice de covariance n'est pas de rang complet et [au moins] une de ses valeurs propres est nulle. Cette observation suggère immédiatement qu'il existe d' autres façons plus complexes d'obtenir une matrice de covariance dégénérée: on peut avoir une matrice de covariance sans zéros ni corrélations parfaites mais néanmoins déficiente en rang (singulier). Bates et al. Modèles mixtes parcimonieux 20154 × 44×4 4×4 (préimpression non publiée) recommande d'utiliser l'analyse en composantes principales (ACP) pour vérifier si la matrice de covariance obtenue est singulière. Si tel est le cas, ils suggèrent de traiter cette situation de la même manière que les situations singulières ci-dessus.
Alors que faire?
S'il n'y a pas suffisamment de données pour estimer tous les paramètres d'un modèle de manière fiable, alors nous devrions envisager de simplifier le modèle. En prenant votre exemple de modèle,
X*Cond + (X*Cond|subj)
il existe différentes façons de le simplifier:Supprimez l'un des effets aléatoires, généralement la corrélation de premier ordre:
Débarrassez-vous de tous les paramètres de corrélation:
Mise à jour: comme le note @Henrik, la
||
syntaxe ne supprimera les corrélations que si toutes les variables à gauche sont numériques. Si des variables catégorielles (telles queCond
) sont impliquées, on devrait plutôt utiliser sonafex
package pratique (ou des solutions de contournement manuelles lourdes). Voir sa réponse pour plus de détails.Débarrassez-vous de certains des paramètres de corrélation en divisant le terme en plusieurs, par exemple:
lme4
pour y parvenir. Voir la réponse de @ BenBolker sur SO pour une démonstration de la façon d'y parvenir via un piratage intelligent.Contrairement à ce que vous avez dit, je ne pense pas que Matuschek et al. 2017 recommande spécifiquement # 4. L'essentiel de Matuschek et al. 2017 et Bates et al. 2015 semble être que l'on part du modèle maximal à la Barr et al. 2013 , puis diminue la complexité jusqu'à ce que la matrice de covariance soit pleine. (De plus, ils recommandent souvent de réduire encore plus la complexité, afin d'augmenter la puissance.) Mise à jour: En revanche, Barr et al. recommander de réduire la complexité UNIQUEMENT si le modèle n'a pas convergé; ils sont prêts à tolérer des matrices de covariance singulières. Voir la réponse de @ Henrik.
Si l'on est d'accord avec Bates / Matuschek, alors je pense que c'est bien d'essayer différentes façons de diminuer la complexité afin de trouver celui qui fait le travail en faisant "le moins de dégâts". En regardant ma liste ci-dessus, la matrice de covariance d'origine a 10 paramètres; # 1 a 6 paramètres, # 2 a 4 paramètres, # 3 a 7 paramètres. Il est impossible de dire quel modèle supprimera les corrélations parfaites sans les adapter.
Mais que faire si ce paramètre vous intéresse?
La discussion ci-dessus traite la matrice de covariance à effet aléatoire comme un paramètre de nuisance. Vous vous posez une question intéressante de savoir quoi faire si vous êtes spécifiquement intéressé par un paramètre de corrélation que vous devez «abandonner» afin d'obtenir une solution complète et significative.
Notez que la fixation du paramètre de corrélation à zéro ne donnera pas nécessairement des BLUP (
ranef
) non corrélés; en fait, ils pourraient même ne pas être affectés du tout (voir la réponse de @ Placidia pour une démonstration ). Une option consisterait donc à examiner les corrélations des BLUP et à en rendre compte.Une autre option, peut-être moins attrayante, serait d'utiliser le traitement
subject
comme un effet fixeY~X*cond*subj
, d'obtenir les estimations pour chaque sujet et de calculer la corrélation entre eux. Cela équivaut à exécuter desY~X*cond
régressions distinctes pour chaque sujet séparément et à obtenir les estimations de corrélation à partir d'eux.Voir également la section sur les modèles singuliers dans la FAQ sur les modèles mixtes de Ben Bolker:
la source
(Machine||Worker)
lmer
estimations une variance de plus que pour(Machine|Worker)
. Donc, ce quilmer
fait||
avec les facteurs ne peut pas être décrit par «cela ne supprime que les corrélations entre les facteurs, mais pas entre les niveaux d'un facteur catégoriel». Il modifie la structure des effets aléatoires de manière un peu bizarre (il se dilate(Machine||Worker)
à(1|Worker) + (0+Machine|Worker)
, d' où la variance supplémentaire). N'hésitez pas à modifier ma modification. Mon point principal est que dans ces déclarations, la distinction entre les covariables numériques et catégorielles doit être clairement établie.machines2 <- subset(Machines, Machine %in% c("A", "B")); summary(lmer(score ~ Machine + (Machine || Worker), data=machines2))
. En général, cela ne fonctionne pas avec les facteurs en raison de cette expansion et la façonR
dont les facteurs sont traitésmodel.matrix
.ranef
valeurs pour étudier la corrélation entre les effets aléatoires. Je ne suis pas trop profondément dans ce sujet, mais je sais qu'il n'est généralement pas recommandé de travailler avec des valeurs extraites deranef
, mais plutôt avec des corrélations et des variances estimées. Quelle est votre opinion là-dessus? De plus, je ne sais pas comment expliquer au réviseur que la corrélation dans le modèle n'a pas été postulée, mais nous calculons toujours la corrélation des valeurs extraites. Cela n'a pas de sensJe suis d'accord avec tout ce qui est dit dans la réponse d'amibe, qui fournit un excellent résumé de la discussion actuelle sur cette question. J'essaierai d'ajouter quelques points supplémentaires et, sinon, je ferai référence au polycopié de mon récent cours sur les modèles mixtes qui résume également ces points.
La suppression des paramètres de corrélation (options 2 et 3 dans la réponse de l'amibe) via
||
ne fonctionne que pour les covariables numériques danslmer
et non pour les facteurs. Ceci est discuté en détail avec le code de Reinhold Kliegl .Cependant, mon
afex
package fournit la fonctionnalité pour supprimer la corrélation également entre les facteurs if argumentexpand_re = TRUE
dans l'appel àmixed()
(voir aussi fonctionlmer_alt()
). Il le fait essentiellement en mettant en œuvre l'approche discutée par Reinhold Kliegl (c'est-à-dire en transformant les facteurs en covariables numériques et en spécifiant la structure des effets aléatoires sur ceux-ci).Un exemple simple:
Pour ceux qui ne le savent pas
afex
, la principale fonctionnalité des modèles mixtes est de fournir des valeurs de p pour les effets fixes, par exemple:Dale Barr de Barr et al. (2013), l'article est plus prudent lorsqu'il recommande de réduire la structure à effets aléatoires que ce qui est présenté dans la réponse d'Amoeba. Dans un récent échange sur Twitter, il a écrit:
La prudence est donc de mise.
En tant que critique, je peux également vous expliquer pourquoi nous, les Bates et al. (2015), le document n'a pas été publié. Moi et les deux autres examinateurs (qui ont signé, mais qui resteront sans nom ici) ont critiqué l'approche PCA (semble sans principes et rien ne prouve qu'elle soit supérieure en termes de pouvoir). En outre, je pense que les trois ont critiqué le fait que le document ne se concentre pas sur la question de savoir comment spécifier la structure à effets aléatoires, mais essaie également d'introduire des GAMM. Ainsi, l'article de Bates et al (2015) s'est transformé en Matuschek et al. (2017) , qui aborde la question de la structure à effets aléatoires avec des simulations et Baayen et al. (2017) article présentant les GAMM.
Mon examen complet de Bates et al. brouillon peut être trouvé ici . IIRC, les autres examens avaient en quelque sorte des points principaux similaires.
la source
lmer_alt
fonctionne fondamentalement exactement commelmer
(ou mêmeglmer
) avec la seule différence qu'il autorise la||
syntaxe. Je ne sais donc pas pourquoi vous voudriez éviterafex
à tout prix. Il devrait même fonctionner sans attacher (c.-àafex::lmer_alt(...)
-d.).cbind
aux données. Ensuite, le terme à effets aléatoires dans la formule est remplacé par un nouveau dans lequel chacune des colonnes nouvellement créées est concaténée avec un +. Voir les lignes 690 à 730 dans github.com/singmann/afex/blob/master/R/mixed.R||
, c'est un point vraiment important, merci de l'avoir soulevé et de m'expliquer (j'ai édité ma réponse pour la refléter). J'aime cette fonctionnalité delmer_alt
inafex
. Je vais juste mentionner ici pour être complet que pour obtenir la même sortie avec unlmer
appel vanilla sans aucun prétraitement supplémentaire, on peut par exemple spécifier(1+dummy(Machine,'B')+dummy(Machine,'C') || Worker)
. Cela devient clairement très lourd lorsque la variable catégorielle a plusieurs niveaux.dummy()
ne fonctionne qu'avec les contrastes de traitement par défaut et non lorsque les effets aléatoires utilisent des contrastes somme-à-zéro (que l'on devrait utiliser dans le cas où le modèle a des interactions). Vous pouvez par exemple voir que si vous comparez les composantes de la variance dans l'exemple ci-dessus pour l'lmer_alt
appel avec l'mixed
appel.Moi aussi, j'ai eu ce problème lors de l'utilisation de l'estimation du maximum de vraisemblance - seulement j'utilise l'algorithme Goldstein IGLS tel qu'implémenté via le logiciel MLwiN et non LME4 dans R. Cependant, dans chaque cas, le problème a été résolu lorsque je suis passé à l'estimation MCMC en utilisant le même Logiciel. J'ai même eu une corrélation supérieure à 3 qui s'est résolue lorsque j'ai changé d'estimation. En utilisant IGLS, la corrélation est calculée après estimation comme la covariance divisée par le produit de la racine carrée du produit des variances associées - et cela ne tient pas compte de l'incertitude dans chacune des estimations constituantes.
Le logiciel IGLS ne «sait» pas que la covariance implique une corrélation et calcule simplement les estimations d'une fonction de variance constante, linéaire, quadratique, etc. En revanche, l'approche MCMC est construite sur l'hypothèse d'échantillons d'une distribution normale multivariée qui correspond à des variances et des covariances avec de bonnes propriétés et une propagation d'erreur totale afin que l'incertitude dans l'estimation des covariances soit prise en compte dans l'estimation des variances et vice versa.
MLwin appartient à la chaîne d'estimation MCMC avec les estimations IGLS et la matrice de covariance à variance définie non négative pourrait devoir être modifiée en changeant la covariance à zéro au début avant de commencer l'échantillonnage.
Pour un exemple travaillé, voir
Développer des modèles à plusieurs niveaux pour analyser la contextualité, l'hétérogénéité et le changement à l'aide de MLwiN 3, Volume 1 (mis à jour en septembre 2017); Le volume 2 est également sur RGate
https://www.researchgate.net/publication/320197425_Vol1Training_manualRevisedSept2017
Annexe au chapitre 10
la source