Tengo una pregunta sobre los coeficientes estandarizados (beta) en los modelos lineales. Ya he hecho una pregunta aquí . De las respuestas asumo que debería usar las R scale()
funcionan tanto en la variable dependiente como en todas las variables independientes (IV), para estimar los coeficientes estandarizados del modelo. Pero cuando utilicé la scale()
en una IV, que pertenece a la clase de factor I, recibe el siguiente mensaje de error:
Error in colMeans(x, na.rm = TRUE) : 'x' must be numeric
Para ilustrar mi problema aquí hay una EPM:
Primero el modelo lineal con coeficientes no estandarizados:
> data(ChickWeight)
> aa <- lm(weight ~ Time + Diet, data=ChickWeight)
> summary(aa)
Call:
lm(formula = weight ~ Time + Diet, data = ChickWeight)
Residuals:
Min 1Q Median 3Q Max
-136.851 -17.151 -2.595 15.033 141.816
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 10.9244 3.3607 3.251 0.00122 **
Time 8.7505 0.2218 39.451 < 2e-16 ***
Diet2 16.1661 4.0858 3.957 8.56e-05 ***
Diet3 36.4994 4.0858 8.933 < 2e-16 ***
Diet4 30.2335 4.1075 7.361 6.39e-13 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 35.99 on 573 degrees of freedom
Multiple R-squared: 0.7453, Adjusted R-squared: 0.7435
F-statistic: 419.2 on 4 and 573 DF, p-value: < 2.2e-16
Ahora quiero estimar los coeficientes estandarizados usando el scale
que da como resultado el siguiente mensaje de error:
> bb <- lm(scale(weight) ~ scale(Time) + scale(Diet), data=ChickWeight)
Error in colMeans(x, na.rm = TRUE) : 'x' must be numeric
Como me di cuenta por mí mismo el mensaje de error aparece, porque Diet
pertenece a la clase de factor y no es una variable numérica como se requiere de la scale()
función. Intenté lo siguiente de forma alternativa incluyendo la Diet
variable sin scale()
:
> cc <- lm(scale(weight) ~ scale(Time) + Diet, data=ChickWeight)
> summary(cc)
Call:
lm(formula = scale(weight) ~ scale(Time) + Diet, data = ChickWeight)
Residuals:
Min 1Q Median 3Q Max
-1.92552 -0.24132 -0.03652 0.21151 1.99538
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -0.24069 0.03415 -7.048 5.25e-12 ***
scale(Time) 0.83210 0.02109 39.451 < 2e-16 ***
Diet2 0.22746 0.05749 3.957 8.56e-05 ***
Diet3 0.51356 0.05749 8.933 < 2e-16 ***
Diet4 0.42539 0.05779 7.361 6.39e-13 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.5064 on 573 degrees of freedom
Multiple R-squared: 0.7453, Adjusted R-squared: 0.7435
F-statistic: 419.2 on 4 and 573 DF, p-value: < 2.2e-16
Mi pregunta ahora es, si esta es la forma correcta de estimar los coeficientes estandarizados para un modelo con variables tanto numéricas como factoriales.
Muchas gracias de antemano por la respuesta.
Saludos,
Magnus