Función de costo para validar modelos de regresión de Poisson

11

Para los datos de recuento que he recopilado, uso la regresión de Poisson para construir modelos. Hago esto usando la glmfunción en R, donde uso family = "poisson". Para evaluar posibles modelos (tengo varios predictores) utilizo el AIC. Hasta aquí todo bien. Ahora quiero realizar una validación cruzada. Ya logré hacerlo usando la cv.glmfunción del bootpaquete. De la documentación de cv.glmveo que, por ejemplo, para los datos binomiales, debe utilizar una función de costo específica para obtener un error de predicción significativo. Sin embargo, aún no tengo idea para qué función de costo es adecuada family = poisson, y una búsqueda exhaustiva en Google no arrojó ningún resultado específico. Mi pregunta es que cualquiera tiene algo de luz para arrojar sobre qué función de costo es apropiada cv.glmen el caso de Poisson Glm's.

Paul Hiemstra
fuente
1
La función cv.glmneten el paquete se glmnetusa type.measure="deviance"para la familia Poisson.
rcs
Estrictamente, la documentación muestra que tiene sentido usar una función de costo específica para datos binarios.
Corone
@corone of no son datos continuos, ni datos binarios. Entonces estaba buscando una función de costo apropiada para los datos de conteo.
Paul Hiemstra el
1
No creo que la discreción de los datos haga una gran diferencia aquí, a menos que sus recuentos sean muy pequeños. El problema es más bien sobre la distribución de los datos. Para los datos binarios, la predicción es una probabilidad continua entre 0 y 1, pero la respuesta siempre es 0 o 1. En su ejemplo, obligan al costo a ser "correcto" o "incorrecto" y cuentan el número de aciertos y errores. ¿Estás particularmente preocupado por la continuidad? Agregaré un PS a mi respuesta para abordar la continuidad
Corone

Respuestas:

12

Suponiendo que no haya nada especial en su caso particular, creo que hay un buen argumento para usar el valor predeterminado (Error cuadrático medio) o utilizar la media del error de los registros, o incluso el error chi-cuadrado.

El propósito de la función de costo es expresar cuán "molesto" está con las predicciones erróneas, específicamente qué "error" le molesta más. Esto es particularmente importante para las respuestas binarias, pero puede importar en cualquier situación.

Error cuadrático medio (de respuestas)

C=1ni(YiY^i)2

Al usar el MSE, usted es igualmente sensible a los errores de arriba y abajo e igualmente sensible a las predicciones grandes y pequeñas. Esto es algo bastante normal, por lo que no creo que esté mal visto en la mayoría de las situaciones.

Error cuadrático medio (de respuestas de registro)

C=1ni(lnYilnY^i)2

Debido a que está trabajando con datos de conteo, se podría argumentar que no es simétrico ni indiferente al tamaño. Estar fuera por 10 conteos para una predicción de 10 es muy diferente de una predicción de 1000. Esta es una función de costo algo "canónica", porque ha igualado los costos hasta la función de enlace. Esto asegura que los costos coincidan con la distribución de varianza que se supone en el modelo.

Error de Chi cuadrado

C=1ni(YiY^i)2Y^i

Una tercera forma sería usar el error chi-cuadrado. Esto podría ser particularmente atractivo si compara su GLM con otros modelos basados ​​en conteo, especialmente si hay factores en su GLM. Similar a las respuestas del registro de errores, esto se escalará con el tamaño, pero es simétrico alrededor del recuento previsto. Ahora está evaluando la bondad de ajuste en función del porcentaje de error.


Sobre la discreción

La pregunta cita el ejemplo de documentación donde tienen una variable de respuesta binaria, por lo tanto, use una función de costo diferente. El problema para una respuesta binaria es que el GLM pronosticará un número real entre 0 y 1, aunque la respuesta siempre sea exactamente 0 o 1. Es perfectamente válido decir que cuanto más cercano esté ese número a la respuesta correcta, mejor será pronóstico, pero a menudo la gente no quiere esto. El razonamiento es que a menudo uno debe actuar como si fuera 0 o 1, por lo que tomará algo menos que 0.5 como pronóstico para 0. En ese caso, tiene sentido simplemente contar el número de pronósticos "incorrectos". El argumento aquí es que, para una pregunta Verdadero / Falso, solo puede estar bien o mal, no hay gradación de error.

En su caso tiene datos de conteo. Aquí es mucho más común aceptar predicciones que no tienen el mismo soporte que la respuesta. Una predicción de 2.4 niños por familia, por ejemplo, o 9.7 muertes por año. Por lo general, uno no trataría de hacer nada al respecto porque no se trata de estar "correcto" o "equivocado", tan cerca como sea posible. Sin embargo, si realmente debe tener una predicción que sea un número entero, tal vez porque tiene una tasa de conteo muy baja, entonces no hay ninguna razón por la que no pueda redondear la predicción primero y contar el "número entero" o el error. En este caso, las tres expresiones anteriores aún se aplican, pero simplemente necesita redondear primero.Y^

Corone
fuente
En lugar de trabajar con el error cuadrático medio del error cuadrático medio de la respuesta transformada logarítmica, podría ser mejor para los GLM usar el error cuadrático medio ponderado usando 1 / pesos de varianza (dado por la ranura $ pesos de la salida glm de R, para poisson = 1 / E (Y)). Esto funciona, creo, para cualquier tipo de GLM.
Tom Wenseleers