robusta - extrayendo coeficientes estandarizados de lm en R
regresion robusta en r (2)
Hay una función de conveniencia en el paquete QuantPsyc
para eso, llamada lm.beta
. Sin embargo, creo que la forma más sencilla es estandarizar las variables. Los coeficientes serán automáticamente los coeficientes "beta" estandarizados (es decir, los coeficientes en términos de desviaciones estándar).
Por ejemplo,
lm(scale(your.y) ~ scale(your.x), data=your.Data)
Te dará el coeficiente estandarizado.
¿Son realmente los mismos? Lo siguiente ilustra que ambos son idénticos:
library("QuantPsyc")
mod <- lm(weight ~ height, data=women)
coef_lmbeta <- lm.beta(mod)
coef_lmbeta
> height
0.9955
mod2 <- lm(scale(weight) ~ scale(height), data=women)
coef_scale <- coef(mod2)[2]
coef_scale
> scale(height)
0.9955
all.equal(coef_lmbeta, coef_scale, check.attributes=F)
[1] TRUE
lo que demuestra que ambos son idénticos, como deberían ser.
¿Cómo evitar nombres de variables torpes? En caso de que no quiera lidiar con estos nombres de variables torpes, como la scale(height)
, una opción es estandarizar las variables fuera de la llamada lm
en el propio conjunto de datos. Por ejemplo,
women2 <- lapply(women, scale) # standardizes all variables
mod3 <- lm(weight ~ height, data=women2)
coef_alt <- coef(mod3)[2]
coef_alt
> height
0.9955
all.equal(coef_lmbeta, coef_alt)
[1] TRUE
¿Cómo puedo estandarizar múltiples variables convenientemente? En el caso probable de que no desee estandarizar todas las variables en su conjunto de datos, podría seleccionar todo lo que ocurre en su fórmula. Por ejemplo, refiriéndose ahora al conjunto de mtcars
mtcars (ya que las women
solo contienen height
y weight
):
Digamos que el siguiente es el modelo de regresión que quiero estimar:
modelformula <- mpg ~ cyl + disp + hp + drat + qsec
Podemos usar el hecho de que all.vars
me da un vector de los nombres de las variables.
all.vars(modelformula)
[1] "mpg" "cyl" "disp" "hp" "drat" "qsec"
Podemos usar esto para subcontratar el conjunto de datos en consecuencia. Por ejemplo,
mycars <- lapply(mtcars[, all.vars(modelformula)], scale)
Me dará un conjunto de datos en el que se han estandarizado todas las variables. Las regresiones lineales que usan mycars
ahora darán betas estandarizadas. ¡Por favor, asegúrese de que la estandarización de todas estas variables tenga sentido, sin embargo!
Mis disculpas por la pregunta tonta ... pero parece que no puedo encontrar una solución simple
Quiero extraer los coeficientes estandarizados de un modelo lineal ajustado (en R), debe haber una forma o función simple que lo haga. me puedes decir que es
EDITAR (siguiendo algunos de los comentarios a continuación): Probablemente debería haber proporcionado más información contextual sobre mi pregunta. Estaba enseñando un taller introductorio de R para un grupo de psicólogos. Para ellos, un modelo lineal sin la capacidad de obtener coeficientes estandarizados es como si no ejecutara el modelo en absoluto (bueno, esto es un poco exagerado, pero se entiende el punto). Cuando hicimos algunas regresiones, esta fue su primera pregunta, que (mi mala) no anticipé (no soy psicóloga). Por supuesto, puedo programarlo yo mismo y, por supuesto, puedo buscar paquetes que lo hagan por mí. Pero al mismo tiempo, creo que esta es una característica básica y obligatoria de los modelos lineales, que en el momento creo que debería haber una función básica que lo haga sin necesidad de instalar más y más paquetes ( que se percibe como una dificultad para los principiantes). Así que pregunté (y esta también fue una oportunidad para mostrarles cómo obtener ayuda cuando la necesitan).
Mis disculpas por aquellos que piensan que hice una pregunta estúpida, y muchas gracias por los que se tomaron el tiempo de responderla.
solo use los nombres de los colonos (datos) con lapply o sapply como: lapply (datos [, colnames (datos)], escala)