Pondérations bêta normalisées pour une régression à plusieurs niveaux

11

Comment obtenir des poids de régression normalisés (à effet fixe) à partir d'une régression à plusieurs niveaux?

Et, en tant que "module complémentaire": Quelle est la façon la plus simple d'obtenir ces poids standardisés à partir d'un mer-objet (à partir de la lmerfonction du lme4package dans R)?

Felix S
la source
Plus précisément, ou vous demandez des coefficients de modèle linéaire?
Robert Kubrick
En fait, je suis plus intéressé par la façon de le faire en général (je standardiserais toutes les variables à l'avance, comme dans les modèles linéaires réguliers, mais je ne suis pas sûr que cette approche soit valide dans les MLM). Ci-dessus, j'aimerais voir comment cela se fait avec les objets lme4. J'ai reformulé la question en conséquence!
Felix S
1
Vous pouvez être intéressé par cet article d'Andrew Gelman et Iain Pardoe (2007) Comparaisons prédictives moyennes pour les modèles avec composantes de non-linéarité, d'interactions et de variance .
Andy W

Réponses:

9

Mettez simplement vos variables explicatives à l'échelle pour avoir une moyenne de zéro et une variance de un avant de les mettre dans le modèle. Les coefficients seront alors tous comparables. La nature des effets mixtes du modèle n'a pas d'impact sur ce problème.

La meilleure façon de le faire, et la moins susceptible de se tromper, est d'utiliser scale () avant d'adapter le modèle.

Peter Ellis
la source
Merci, c'est ce que je voulais savoir: recadrer à la moyenne (ignorer la structure du groupe ...).
Felix S
3

Pour obtenir un moyen rapide d'obtenir les coefficients bêta normalisés directement à partir de n'importe quel modèle lm (ou glm) dans R, essayez d'utiliser à lm.beta(model)partir du package QuantPsyc. Par exemple:

library("MASS")
glmModel = glm(dependentResponseVar ~ predictor1 + predictor2, data=myData)
summary(glmModel)

library(QuantPsyc)
lm.beta(glmModel)
CJH
la source
1
Dans cet e-mail, Ben Bolker a traduit cette fonction en "lmer-land".
crsh
Mais le code lié que Ben fournit n'est pas réellement fonctionnel comme écrit dans cet e-mail, il ne ressemble pas. Il comprend des mots / pseudocode .... Edit: La réponse à cette question fournira le code de travail: stats.stackexchange.com/questions/123366/…
Bajcz
2

Pour les modèles linéaires standard régressés avec lm (), vous pouvez soit mettre à l'échelle () vos données de prédicteurs, soit utiliser simplement cette formule simple:

lm.results = lm(mydata$Y ~ mydata$x1)

sd.y = sd(mydata$Y)
sd.x1 = sd(mydata$x1)
x1.Beta = coef(lm.results)["mydata$x1"] * (sd.x1 / sd.y)
Robert Kubrick
la source
1

En supposant que vous avez défini la sortie de votre lmermodèle sur lmer.results, vous fixef(lmer.results)retournerez les coefficients d'effets fixes globaux.

Michelle
la source
2
Mais ils ne seront pas "standardisés", n'est-ce pas? J'ai lu la question comme voulant connaître la taille des effets fixes si les variables explicatives étaient toutes à la même échelle.
Peter Ellis
Je ne sais pas qu'il est possible d'obtenir les coefficients standardisés d'un merobjet - ils n'apparaissent pas dans le résumé, donc je suppose que les lme4méthodes ne les créent pas. fixef()renverra toutes les informations sur les effets fixes disponibles à partir d'un merobjet.
Michelle
1
Comme Peter l'a déjà commenté: la question portait sur les coefficients "standardisés" ...
Felix S