R implementación del coeficiente de determinación parcial

9

¿Alguien tiene sugerencias o paquetes que calculen el coeficiente de determinación parcial?

El coeficiente de determinación parcial puede definirse como el porcentaje de variación que no puede explicarse en un modelo reducido, pero puede explicarse por los predictores especificados en un modelo completo (er). Este coeficiente se utiliza para proporcionar información sobre si uno o más predictores adicionales pueden ser útiles en un modelo de regresión más completo.

El cálculo para el r ^ 2 parcial es relativamente sencillo después de estimar sus dos modelos y generar las tablas ANOVA para ellos. El cálculo para el r ^ 2 parcial es:

(SSEreduced - SSEfull) / SSEreduced

He escrito esta función relativamente simple que calculará esto para un modelo de regresión lineal múltiple. No estoy familiarizado con otras estructuras de modelos en R donde esta función puede no funcionar tan bien:

partialR2 <- function(model.full, model.reduced){
    anova.full <- anova(model.full)
    anova.reduced <- anova(model.reduced)

    sse.full <- tail(anova.full$"Sum Sq", 1)
    sse.reduced <- tail(anova.reduced$"Sum Sq", 1)

    pR2 <- (sse.reduced - sse.full) / sse.reduced
    return(pR2)

    }

Cualquier sugerencia o sugerencia sobre funciones más robustas para lograr esta tarea y / o implementaciones más eficientes del código anterior sería muy apreciada.

Persecución
fuente
2
Sugiero probar los otros modelos y ver si el código funciona o no. R suele ser agradable, por lo que anova debería devolver cosas similares para diferentes modelos. El problema es con tu fórmula inicial. ¿Es válido para otros modelos? Si no lo hace, entonces no tiene sentido hacer que el código funcione, además, el código debe emitir una advertencia de que se usa para modelos donde la fórmula no se cumple.
mpiktas
Realmente no veo la pregunta. Desea una función que calcule R2 parcial, pero ya tiene una. ¿Conoces la sensibilidad del paquete (no hay R2 parcial pero se implementa pcc, que es un caso particular)?
robin girard
@robin - Pido disculpas si mi pregunta no fue clara. Estoy interesado en encontrar un paquete que contenga este cálculo (ya que probablemente contiene muchas otras funciones útiles que podrían ser útiles) y / o sugerencias sobre cómo mejorar la función que escribí anteriormente. Obviamente, carece de verificación de errores y puede no ser aplicable para todos los tipos de modelos.
Chase
Sugiero que esta pregunta se migre a SE. El meollo de la pregunta parece ser un problema de implementación, no estadístico.
Caracal
@caracal - lo que mejor te parezca. Sé que ha habido una buena cantidad de discusión sobre dónde debe trazarse la línea en la arena entre SO y CV con respecto a las preguntas relacionadas con R. No tengo una preferencia fuerte de ninguna manera. Mi trabajo me ha alejado de este problema específico durante el último momento, pero lo volveré a revisar en las próximas semanas para que yo mismo pueda encontrar una solución mejor. También estoy bien dejando que la pregunta se desvanezca en el éter ...
Chase

Respuestas:

0

Bueno, r ^ 2 es realmente una covarianza al cuadrado sobre el producto de las variaciones, por lo que probablemente podría hacer algo como cov (Yfull, Ytrue) / var (Ytrue) var (Yfull) - cov (YReduced, Ytrue) / var (Ytrue ) var (YRed) independientemente del tipo de modelo; marque para verificar que le da la misma respuesta en el caso lm.

http://www.stator-afm.com/image-files/r-squared.gif

Patrick McCann
fuente