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)?


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.


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)

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)

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.


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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.