Series temporales para datos de recuento, con recuentos <20

23

Recientemente comencé a trabajar para una clínica de tuberculosis. Nos reunimos periódicamente para analizar la cantidad de casos de TB que estamos tratando actualmente, la cantidad de pruebas administradas, etc. Me gustaría comenzar a modelar estos conteos para que no solo estemos adivinando si algo es inusual o no. Desafortunadamente, he recibido muy poca capacitación en series de tiempo, y la mayor parte de mi exposición ha sido a modelos para datos muy continuos (precios de acciones) o cantidades muy grandes de conteos (influenza). Pero tratamos con 0-18 casos por mes (media 6.68, mediana 7, var 12.3), que se distribuyen así:

[imagen perdida por las brumas del tiempo]

[imagen comida por un grue]

He encontrado algunos artículos que abordan modelos como este, pero agradecería mucho escuchar sus sugerencias, tanto para los enfoques como para los paquetes R que podría usar para implementar esos enfoques.

EDITAR: La respuesta de mbq me ha obligado a pensar más detenidamente sobre lo que pregunto aquí; Me obsesioné demasiado con los recuentos mensuales y perdí el enfoque real de la pregunta. Lo que me gustaría saber es: ¿la disminución (bastante visible) desde, digamos, 2008 en adelante refleja una tendencia a la baja en el número total de casos? Me parece que el número de casos mensuales desde 2001-2007 refleja un proceso estable; quizás algo de estacionalidad, pero en general estable. Desde 2008 hasta el presente, parece que ese proceso está cambiando: el número total de casos está disminuyendo, a pesar de que los recuentos mensuales pueden tambalearse hacia arriba y hacia abajo debido a la aleatoriedad y la estacionalidad. ¿Cómo puedo probar si hay un cambio real en el proceso? Y si puedo identificar una disminución,

Matt Parker
fuente
2
Los enlaces han muerto. Si puede obtener las imágenes (o regenerarlas), utilice el nuevo sistema que las almacena en imgur.
Glen_b -Reinstalar Monica
Desafortunadamente, estas parcelas eran de hace un par de trabajos. Disculpas!
Matt Parker
1
Dado que esta publicación (# 173) es de hace mucho tiempo cuando el sitio estaba en versión beta, eso no es una sorpresa: pocas personas podrían rehacer una trama de las publicaciones en ese momento. Gracias de cualquier manera.
Glen_b -Reinstalar Monica

Respuestas:

15

Para evaluar la tendencia histórica, usaría un juego con tendencia y componentes estacionales. Por ejemplo

require(mgcv)
require(forecast)
x <- ts(rpois(100,1+sin(seq(0,3*pi,l=100))),f=12)
tt <- 1:100
season <- seasonaldummy(x)
fit <- gam(x ~ s(tt,k=5) + season, family="poisson")
plot(fit)

Luego, summary(fit)le dará una prueba de importancia del cambio de tendencia y la gráfica le dará algunos intervalos de confianza. Los supuestos aquí son que las observaciones son independientes y la distribución condicional es Poisson. Debido a que se permite que la media cambie suavemente con el tiempo, estos no son supuestos particularmente fuertes.

Para pronosticar es más difícil ya que necesita proyectar la tendencia en el futuro. Si está dispuesto a aceptar una extrapolación lineal de la tendencia al final de los datos (que ciertamente es dudosa pero probablemente esté bien durante algunos meses), use

fcast <- predict(fit,se.fit=TRUE,
               newdata=list(tt=101:112,season=seasonaldummyf(x,h=12)))

Para ver los pronósticos en el mismo gráfico:

plot(x,xlim=c(0,10.5))
lines(ts(exp(fcast$fit),f=12,s=112/12),col=2)
lines(ts(exp(fcast$fit-2*fcast$se),f=12,s=112/12),col=2,lty=2)
lines(ts(exp(fcast$fit+2*fcast$se),f=12,s=112/12),col=2,lty=2)

Puede detectar los meses inusuales buscando valores atípicos en los residuos (desviaciones) del ajuste.

Rob Hyndman
fuente
8

Es posible que desee echar un vistazo a strucchange :

Pruebas, monitoreo y datación de cambios estructurales en modelos de regresión (lineal). strucchange presenta pruebas / métodos del marco de prueba de fluctuación generalizada, así como del marco de prueba F (prueba de Chow). Esto incluye métodos para ajustar, trazar y probar procesos de fluctuación (por ejemplo, CUSUM, MOSUM, estimaciones recursivas / móviles) y estadísticas F, respectivamente. Es posible monitorear los datos entrantes en línea utilizando procesos de fluctuación. Finalmente, los puntos de ruptura en los modelos de regresión con cambios estructurales se pueden estimar junto con los intervalos de confianza. Siempre se hace hincapié en los métodos para visualizar los datos ".

PD. Buenos gráficos;)

Hadley
fuente
Tendré que leerlo más a fondo más adelante, pero sí, este paquete definitivamente aborda los tipos de problemas que estoy enfrentando aquí. ¡Gracias! Y también, gracias por las amables palabras sobre las tramas; p
Matt Parker
6

¿Realmente necesita algún modelo avanzado? Según lo que sé sobre la TB, en caso de que no haya epidemia, las infecciones son actos estocásticos y, por lo tanto, el conteo del mes N no debe correlacionarse con el conteo del mes N-1. (Puede verificar esta suposición con autocorrelación). Si es así, analizar solo la distribución de los recuentos mensuales puede ser suficiente para decidir si algún recuento es significativamente más alto de lo normal.
Por otro lado, puede buscar correlaciones con algunas otras variables, como la temporada, el tráfico de viajes o cualquier cosa que pueda imaginar que pueda estar correlacionada. Si encontrara algo como esto, podría usarse para cierta normalización de datos.


fuente
1
Su punto sobre el recuento de N del mes no necesariamente correlacionado con N-1 está bien tomado. Con una enfermedad de crecimiento lento como la tuberculosis, eso es algo que tendría que observar con cuidado, pero estoy bastante seguro de que podría identificar cuánto retraso hay entre el momento en que informamos un caso de origen y el momento en que informamos cualquier secundaria casos.
Matt Parker
1
Sin embargo, su punto sobre el análisis de la distribución de los recuentos mensuales es el núcleo de mi pregunta. Hay una disminución definitiva de la tuberculosis, tanto a nivel nacional en los Estados Unidos como en mi distrito. Por ejemplo, cuando comparo 2009 con los años anteriores, definitivamente hay menos casos. 2010 está en camino de tener menos todavía. Lo que estoy tratando de identificar (lo cual hice un mal trabajo al explicar en la pregunta) es si estas disminuciones son o no parte de una tendencia a la baja en curso, o simplemente un bamboleo a la baja. Gracias, me has hecho pensar mucho más cuidadosamente sobre el problema.
Matt Parker
5

A menudo, los datos de enfermedades como este se realizan con un modelo lineal generalizado, ya que no es necesariamente una gran aplicación del análisis de series de tiempo: los meses a menudo no están tan correlacionados entre sí.

Si me dieran estos datos, esto es lo que haría (y, de hecho, lo habría hecho con datos similares):

Cree una variable de "tiempo" que se describa con mayor precisión como "Meses desde 1/1/2000" si estoy analizando correctamente sus datos. Luego, ejecutaría un modelo lineal general en R usando la distribución de Poisson (o binomio negativo) y un enlace de registro con aproximadamente la siguiente forma:

log(Counts) = b0 + b1*t + b2*(t^2) + b3*cos(2pi*w*t) + b4*sin(2pi*w*t)

Donde t es el tiempo descrito anteriormente, yw es 1/365 para una enfermedad anual como la gripe. Generalmente es 1 / n, donde n es la duración del ciclo de su enfermedad. No sé de antemano qué es para la tuberculosis.

Las dos tendencias temporales le mostrarán, fuera de la variación estacional normal, si tiene una variación significativa a lo largo del tiempo.

Fomite
fuente
4

Puede considerar aplicar un gráfico de Control de Tukey a los datos.

lector de babelproof
fuente
Je, esta fue una de las tramas que hice que no apareció en la publicación. El problema que tuve fue decidir cómo calcular los límites: mi intento inicial fue con los límites de Poisson, con lambda establecida en la media de mis datos, pero la varianza es demasiado alta para ser un Poisson adecuado (¿lo suficientemente alto como para importar en la práctica? no lo sé)
Matt Parker
Otro problema es que el centro de la distribución puede cambiar con el tiempo; por ejemplo, no tendría sentido establecer esos límites utilizando datos de principios de 1900, cuando Colorado era un refugio para pacientes con tuberculosis. Entonces, ¿cuál es la forma adecuada de mantener las líneas actualizadas con los cambios a largo plazo en el proceso, sin dejar de identificar las desviaciones?
Matt Parker
4

Puede intentar modelar sus datos utilizando un Modelo lineal generalizado dinámico (DGLM). En R, puede ajustar este tipo de modelos utilizando paquetes sspir y KFAS. En cierto sentido, esto es similar al enfoque gam sugerido por Rob, excepto que en lugar de suponer que la media logarítmica de las observaciones de Poisson es una función suave del tiempo, se supone que sigue una dinámica estocástica.


fuente
Genial: no sabía sobre el paquete KFAS. También está el dlm y el dse para los enfoques de espacio de estado, y una descripción general para los usuarios de R aquí: cran.r-project.org/web/views/TimeSeries.html
conjugateprior
2
Recomiendo encarecidamente el dlmpaquete. Los DLM no son tan fáciles de usar como otras soluciones, pero lo dlmhacen lo más fácil posible y tiene una bonita viñeta que lo guía a través del proceso.
Wayne
2

Voy a dejar la pregunta principal sola, porque creo que me equivocaré (aunque también analizo los datos de un proveedor de atención médica, y para ser honesto, si tuviera estos datos, los analizaría utilizando técnicas estándar y espero lo mejor, se ven bastante bien para mí).

En cuanto a los paquetes R, he encontrado la biblioteca TSA y su libro acompañante es muy útil. El armasubsetscomando, particularmente, creo que es un gran ahorro de tiempo.

Chris Beeley
fuente
2

Escápese de las estadísticas enumerativas tradicionales, como Deming sugeriría, y aventúrese en las estadísticas analíticas tradicionales, en este caso, cuadros de control. Consulte cualquier libro de Donald Wheeler PhD, en particular sus "Temas avanzados en SPC" para obtener más información.

GTB
fuente
Alguien acaba de hacer una pregunta sobre los gráficos SPC (también conocido como QC) en R en stats.stackexchange.com/questions/15809/… donde proporciono algunas sugerencias de paquetes. No estoy seguro de SPC / QC: me pregunto si fue más útil en la era anterior a la computadora y para los trabajadores en el taller, pero vale la pena considerarlo.
Wayne
En realidad, ¿esta respuesta es redundante con @ babelproofreader's?
Wayne
2

En respuesta a su pregunta directa "¿Cómo puedo evaluar si hay un cambio real en el proceso? Y si puedo identificar una disminución, ¿cómo podría usar esa tendencia y cualquier estacionalidad que haya para estimar el número de casos que podríamos ver en los próximos meses? Desarrolle un Modelo de función de transferencia (ARMAX) que explique fácilmente la dependencia de un período a otro, incluida una estructura ARIMA estacional. Incorpore cualquier cambio de nivel identificable, pulsos estacionales, tendencias de tiempo local y PUlses que puedan haber sido sugeridos por métodos empíricos / analíticos como la detección de intervención. SI ESTE MODELO ROBUSTO INCLUYE UN FACTOR / SERIE que coincida con "rechazos", entonces sus oraciones han sido contestadas. En la alternativa, simplemente agregue una estructura hipotética, por ejemplo, para probar un cambio de tendencia en el tiempo en el punto T1, construya dos dummies X1 = 1,1,2,3 ,,,,,, T y X2 = 0,0,0,0,0,0,0,1,2,3,4,5, .... DONDE LOS CEROES TERMINAN EN EL PERÍODO T1-1. La prueba de la hipótesis de un cambio de tendencia significativo en el período de tiempo T1 se evaluará utilizando el "valor t" para X2.

Editado 22/09/11

A menudo, los datos de enfermedades como este tienen efectos mensuales ya que el clima / temperatura es a menudo una causa no especificada. En la omisión de la verdadera serie caudsal, los modelos ARIMA usan memoria o tontos estacionales como sustituto. Además, series como esta pueden tener cambios de nivel y / o tendencias de tiempo local que reflejan cambios estructurales a lo largo del tiempo. Se ha descubierto que la explotación de la estructura autorregresiva en los datos en lugar de imponer diversos artefactos, como el tiempo y el cuadrado del tiempo y el tiempo cúbico, etc., es bastante útil y menos presuntivo y ad hoc. También se debe tener cuidado para identificar "valores inusuales", ya que a menudo pueden ser útiles para sugerir variables de causa adicionales y, como mínimo, llevar a estimaciones sólidas de los otros parámetros del modelo. Finalmente, hemos encontrado que la variabilidad / los parámetros pueden variar con el tiempo, por lo que estos ajustes del modelo pueden estar en orden.

IrishStat
fuente
¿Cómo se ajusta el valor p para tener en cuenta la identificación de T1 post hoc ( es decir , notarlo después de revisar los datos)?
Whuber
Todas las mejoras, es decir, la verificación de diagnóstico que conduce al aumento, se tratan de la misma forma que la estructura sugerida mientras los datos estaban en el cajón. Agregar un retraso a una variable de predicción basada en la verificación de diagnóstico simplemente agrega otra hipótesis nula a la lista. Esto no difiere de eliminar un coeficiente no significativo.
IrishStat
@Irlandés No sigo eso. T1 no parece ser un retraso: estipula un punto de cambio. ¿No es fácil encontrar cambios "significativos" si se le permite primero inspeccionar los datos para elegir dónde está el punto de cambio?
whuber
@whuber Sí, tienes razón. Pero piense en un proceso progresivo en regresión en el que examine las variables alternativas (omitidas) para la "incorporación potencial". Esto no es diferente en el sentido de que está decidiendo qué "tendencia omitida" debe agregarse al modelo para que el proceso de error resultante sea gaussiano.
IrishStat
@Irlandés Esa es una analogía esclarecedora. Si entiendo, en efecto, usted contempla tener una variable potencial para cada período (designando un posible cambio en ese período) y está invocando un proceso sistemático para determinar cuál de estos debe incluirse en el modelo. Esto sugiere que algunos procedimientos estándar de ajuste de nivel p, como el Bonferroni, podrían aplicarse razonablemente. ¿Sería eso válido?
whuber