He ejecutado una regresión múltiple en la que el modelo en su conjunto es significativo y explica aproximadamente el 13% de la varianza. Sin embargo, necesito encontrar la cantidad de varianza explicada por cada predictor significativo. ¿Cómo puedo hacer esto usando R?
Aquí hay algunos datos de muestra y código:
D = data.frame(
dv = c( 0.75, 1.00, 1.00, 0.75, 0.50, 0.75, 1.00, 1.00, 0.75, 0.50 ),
iv1 = c( 0.75, 1.00, 1.00, 0.75, 0.75, 1.00, 0.50, 0.50, 0.75, 0.25 ),
iv2 = c( 0.882, 0.867, 0.900, 0.333, 0.875, 0.500, 0.882, 0.875, 0.778, 0.867 ),
iv3 = c( 1.000, 0.067, 1.000, 0.933, 0.875, 0.500, 0.588, 0.875, 1.000, 0.467 ),
iv4 = c( 0.889, 1.000, 0.905, 0.938, 0.833, 0.882, 0.444, 0.588, 0.895, 0.812 ),
iv5 = c( 18, 16, 21, 16, 18, 17, 18, 17, 19, 16 ) )
fit = lm( dv ~ iv1 + iv2 + iv3 + iv4 + iv5, data=D )
summary( fit )
Aquí está la salida con mis datos reales:
Call: lm(formula = posttestScore ~ pretestScore + probCategorySame +
probDataRelated + practiceAccuracy + practiceNumTrials, data = D)
Residuals:
Min 1Q Median 3Q Max
-0.6881 -0.1185 0.0516 0.1359 0.3690
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.77364 0.10603 7.30 8.5e-13 ***
iv1 0.29267 0.03091 9.47 < 2e-16 ***
iv2 0.06354 0.02456 2.59 0.0099 **
iv3 0.00553 0.02637 0.21 0.8340
iv4 -0.02642 0.06505 -0.41 0.6847
iv5 -0.00941 0.00501 -1.88 0.0607 .
--- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.18 on 665 degrees of freedom
Multiple R-squared: 0.13, Adjusted R-squared: 0.123
F-statistic: 19.8 on 5 and 665 DF, p-value: <2e-16
Esta pregunta se ha respondido aquí , pero la respuesta aceptada solo aborda los predictores no correlacionados, y aunque hay una respuesta adicional que aborda los predictores correlacionados, solo proporciona una pista general, no una solución específica. Me gustaría saber qué hacer si mis predictores están correlacionados.
r
regression
variance
baixiwei
fuente
fuente
relaimpo
paquete y el documento que lo acompaña: jstatsoft.org/index.php/jss/article/view/v017i01/v17i01.pdf Utilizo el método "LMG" con frecuencia.Respuestas:
El porcentaje explicado depende del orden ingresado.
Si especifica un orden particular, puede calcularlo trivialmente en R (por ejemplo, mediante las funciones
update
yanova
, ver más abajo), pero un orden de entrada diferente produciría respuestas potencialmente muy diferentes.[Una posibilidad podría ser promediar todos los pedidos o algo así, pero se volvería difícil de manejar y podría no responder una pregunta particularmente útil.]
-
Como señala Stat, con un solo modelo, si busca una variable a la vez, puede usar 'anova' para producir la tabla de sumas incrementales de cuadrados. Esto seguiría de su código:
-
Entonces, tenemos la varianza incremental explicada; ¿Cómo obtenemos la proporción?
Bastante trivial, escalarlos por 1 dividido por su suma. (Reemplace el 1 con 100 para la variación porcentual explicada).
Aquí lo he mostrado como una columna agregada a la tabla anova:
-
Si decide que desea varias órdenes de entrada particulares, puede hacer algo aún más general como esto (que también le permite ingresar o eliminar grupos de variables a la vez si lo desea):
(Tal enfoque también podría automatizarse, por ejemplo, a través de bucles y el uso de
get
. Puede agregar y eliminar variables en múltiples órdenes si es necesario)... y luego escalar a porcentajes como antes.
(NB. El hecho de que explique cómo hacer estas cosas no necesariamente debe tomarse como una defensa de todo lo que explico).
fuente
anova(fit)
summary.lm
Probé que el porcentaje de variación explicado por un predictor dado en una regresión lineal múltiple es el producto del coeficiente de pendiente y la correlación del predictor con los valores ajustados de la variable dependiente (suponiendo que todas las variables se hayan estandarizado para tener media cero y la varianza uno; que es sin pérdida de generalidad). Encuéntralo aquí:
https://www.researchgate.net/publication/306347340_A_Natural_Decomposition_of_R2_in_Multiple_Linear_Regression
fuente
Puede usar la biblioteca hier.part para tener medidas de bondad de ajuste para regresiones de una sola variable dependiente a todas las combinaciones de N variables independientes
fuente