La estadística de razón de probabilidad (también conocida como desviación) y la prueba de falta de ajuste (o bondad de ajuste) es bastante sencilla de obtener para un modelo de regresión logística (ajuste usando la función) en R. Sin embargo, puede ser Es fácil tener algunos recuentos de células lo suficientemente bajos como para que la prueba no sea confiable. Una forma de verificar la confiabilidad de la prueba de razón de probabilidad de falta de ajuste es comparar su estadística de prueba y el valor P con los de la prueba de falta de ajuste chi cuadrado de Pearson (o ).χ 2glm(..., family = binomial)
Ni el glm
objeto ni su summary()
método informan el estadístico de prueba para la prueba de chi cuadrado de Pearson por falta de ajuste. En mi búsqueda, lo único que se me ocurrió es la chisq.test()
función (en el stats
paquete): su documentación dice " chisq.test
realiza pruebas de tabla de contingencia chi-cuadrado y pruebas de bondad de ajuste". Sin embargo, la documentación es escasa sobre cómo realizar tales pruebas:
Si
x
es una matriz con una fila o columna, o six
es un vector yy
no se proporciona, se realiza una prueba de bondad de ajuste (x
se trata como una tabla de contingencia unidimensional). Las entradas dex
deben ser enteros no negativos. En este caso, la hipótesis probada es si las probabilidades de la poblaciónp
son iguales o si son iguales sip
no se dan.
Me imagino que podrías usar el y
componente del glm
objeto para el x
argumento de chisq.test
. Sin embargo, no puede usar el fitted.values
componente del glm
objeto para el p
argumento de chisq.test
, porque obtendrá un error: " probabilities must sum to 1.
"
¿Cómo puedo (en R) al menos calcular el estadístico de prueba Pearson por falta de ajuste sin tener que ejecutar los pasos manualmente?
fuente
La estadística de Pearson tiene una distribución degenerada, por lo que no se recomienda en general para la bondad de ajuste del modelo logístico. Prefiero pruebas estructuradas (linealidad, aditividad). Si desea una prueba general, vea el único grado de libertad le Cessie - van Houwelingen - Copas - Hosmer prueba de suma de cuadrados no ponderada tal como se implementa en la función del
rms
paquete R.residuals.lrm
fuente
ResourceSelection
paquete, y su resultado es diferente de lo que obtengo al ejecutarresid(lrm_object, 'gof')
después de ajustar mi modelo de regresión logística comolrm_object <- lrm(...)
. Si son realmente diferentes, ¿puede comentar cómo se compara la prueba HL con la que menciona aquí? ¡Gracias!Gracias, no me di cuenta de que era tan simple como: sum (residuales (f1, type = "pearson") ^ 2) Sin embargo, tenga en cuenta que el residual de Pearson varía dependiendo de si se calcula por grupo covariable o por individuo. Un simple ejemplo:
m1 es una matriz (esta es la cabeza de una matriz más grande):
Donde x1-3 son predictores, obs es no. observaciones en cada grupo, pi es la probabilidad de pertenencia al grupo (predicho a partir de la ecuación de regresión), lev es el apalancamiento, la diagonal de la matriz del sombrero, y el no pronosticado. (de y = 1) en el grupo y y el no real.
Esto te dará Pearson por grupo. Observe cómo es diferente si y == 0: ' 'fun1 <- function(j){
if (m1[j,"y"] ==0){ # y=0 for this covariate pattern
Pr1 <- sqrt( m1[i,"pi"] / (1-m1[i,"pi"]))
Pr2 <- -sqrt (m1[i,"obs"])
res <- round( Pr1 * Pr2, 3)
return(res)
} else {
Pr1 <- m1[j,"y"] - m1[j,"yhat"]
Pr2 <- sqrt( m1[j,"yhat"] * ( 1-(m1[j,"pi"]) ) )
res <- round( Pr1/Pr2, 3)
return(res)
}
}
Así
Si hay un gran número de sujetos con patrones covariables y = 0, entonces el residual de Pearons será mucho mayor cuando se calcule utilizando el método 'por grupo' en lugar del método 'por individuo'.
Véase, por ejemplo, Hosmer & Lemeshow "Regresión logística aplicada", Wiley, 200.
fuente
También puede usar
c_hat(mod)
eso dará el mismo resultado quesum(residuals(mod, type = "pearson")^2)
.fuente
c_hat
encuentra?