Comprender la productividad o los gastos a lo largo del tiempo sin ser víctima de interrupciones estocásticas

8

Ayúdame aquí, por favor. Quizás antes de darme una respuesta, tal vez necesites ayudarme a hacer la pregunta. Nunca he aprendido sobre el análisis de series de tiempo y no sé si eso es realmente lo que necesito. Nunca he aprendido sobre promedios suavizados por el tiempo y no sé si eso es lo que realmente necesito. Mis antecedentes estadísticos: tengo 12 créditos en bioestadística (regresión lineal múltiple, regresión logística múltiple, análisis de supervivencia, anova multifactorial pero nunca anova de medidas repetidas).

Así que mira mis escenarios a continuación. ¿Cuáles son las palabras de moda que debería buscar y puede sugerir un recurso para aprender lo que necesito aprender?

Quiero ver varios conjuntos de datos diferentes para propósitos totalmente diferentes, pero común a todos ellos es que hay fechas como una variable. Entonces, un par de ejemplos me vienen a la mente: productividad clínica con el tiempo (como en cuántas cirugías o cuántas visitas al consultorio) o factura de electricidad con el tiempo (como en dinero pagado a la compañía de electricidad por mes).

Para los dos anteriores, la forma casi universal de hacerlo es crear una hoja de cálculo de mes o trimestre en una columna y en la otra columna sería algo como el pago de electricidad o el número de pacientes atendidos en la clínica. Sin embargo, contar por mes genera mucho ruido que no tiene sentido. Por ejemplo, si generalmente pago la factura de electricidad el 28 de cada mes pero en una ocasión lo olvido y solo lo pago 5 días después el 3 del mes siguiente, aparecerá un mes como si hubiera cero gastos y El próximo mes mostrará un gasto descomunal. Dado que uno tiene las fechas reales de pago, ¿por qué uno descarta a propósito los datos muy granulares al incluirlos en gastos por mes calendario?

Del mismo modo, si estoy fuera de la ciudad durante 6 días en una conferencia, ese mes parecerá muy improductivo y si esos 6 días cayeron cerca del final del mes, el mes siguiente estará inusualmente ocupado ya que habrá una lista de espera completa de personas que querían verme pero tuvieron que esperar hasta que volviera.

Luego, por supuesto, están las variaciones estacionales obvias. Los aires acondicionados usan mucha electricidad, así que obviamente uno tiene que adaptarse al calor del verano. Miles de millones de niños me remiten por otitis media aguda recurrente en el invierno y casi ninguno en el verano y principios del otoño. Ningún niño en edad escolar tiene programada una cirugía electiva en las primeras 6 semanas que las escuelas regresan después de las largas vacaciones de verano. La estacionalidad es solo una variable independiente que afecta a la variable dependiente. Debe haber otras variables independientes, algunas de las cuales se pueden adivinar y otras que no se conocen.

Un montón de problemas diferentes surgen cuando se observa la inscripción en un estudio clínico de larga data.

¿Qué rama de las estadísticas nos permite ver esto con el tiempo simplemente mirando los eventos y sus fechas reales pero sin crear cuadros artificiales (meses / trimestres / años) que realmente no existen.

Pensé en hacer que el promedio ponderado contara para cualquier evento. Por ejemplo, el número de pacientes atendidos esta semana es igual a 0.5 * nr visto esta semana + 0.25 * nr visto la semana pasada + 0.25 * nr visto la próxima semana.

Quiero aprender más sobre esto. ¿Qué palabras de moda debo buscar?

Farrel
fuente
1
Sugerencia: ser más conciso probablemente te ayudará a obtener una respuesta.
1
Estoy totalmente de acuerdo contigo. Mi pregunta es larga y vagabunda pero ese es mi problema. Realmente no sé cuál es mi pregunta. ¿Me puedes ayudar?
Farrel
Muy buena pregunta (de alguna manera lo acabo de ver). +1.
user603

Respuestas:

1

Comenzaría con filtros robustos de series temporales (es decir, medianas que varían en el tiempo) porque son más simples e intuitivos.

Básicamente, el filtro de tiempo robusto consiste en suavizar series temporales de lo que es la mediana de la media; un resumen mide (en este caso, uno variable en el tiempo) que no es sensible a las observaciones 'cableadas' siempre que no representen la mayoría de los datos. Para un resumen ver aquí .

Si necesita suavizadores más sofisticados (es decir, no lineales), podría hacerlo con un sólido filtrado de Kalman (aunque esto requiere un nivel ligeramente más alto de sofisticación matemática)

Este documento contiene el siguiente ejemplo (un código para ejecutar bajo R , el software de estadísticas de código abierto):

library(robfilter)
data(Nile)
nile <- as.numeric(Nile)
obj <- wrm.filter(nile, width=11)
plot(obj)

donde la serie temporal original está en negro y la versión filtrada (filtrada por mediana repetida) se superpone en rojo. Los últimos documentos contienen una gran cantidad de referencias a artículos y libros. Otros tipos de filtros se implementan en el paquete, pero la mediana repetida es muy simple.

usuario603
fuente
¿Tienes una URL que me puedas señalar? Nunca he hecho un análisis de series de tiempo en mi vida. Pero parece que esto es lo que necesito enseñarme. ¿Hay algún ejemplo trabajado que pueda ver que use filtros de series temporales?
Farrel
@farel:> si hace clic en las palabras azules, se lo dirigirá a sitios web reales. El último documento en particular contiene ejemplos de trabajo (repetido en la versión editada de mi publicación).
user603
1

Una solución simple que no requiere la adquisición de conocimientos especializados es utilizar gráficos de control . Son ridículamente fáciles de crear y hacen que sea fácil distinguir la variación de causa especial (como cuando estás fuera de la ciudad) de la variación de causa común (como cuando tienes un mes real de baja productividad), que parece ser el tipo de información que desea.

También conservan los datos. Como dice que usará los gráficos para muchos propósitos diferentes, le aconsejo que no realice ninguna transformación en los datos.

Aquí hay una suave introducción . Si decide que le gustan los cuadros de control, es posible que desee profundizar en el tema. Los beneficios para su negocio serán enormes. Los cuadros de control tienen fama de haber contribuido en gran medida al auge económico japonés de la posguerra .

Hay incluso un paquete de R .

Carlos Accioly
fuente
1

He oído hablar de funciones de "vagón de caja basadas en el tiempo" que podrían resolver su problema. Una suma vagón de carga basado en el tiempo de 'tamaño de la ventana' se define en el momento ser la suma de todos los valores entre y . Esto estará sujeto a discontinuidades que puede desear o no. Si desea que los valores más antiguos sean ponderados, puede emplear un promedio móvil simple o exponencial dentro de su ventana basada en el tiempo.t t - Δ t tΔtttΔtt

editar:

tixixif(t)xitf(t)t

t

yiy

w(t)w(t)0tw(0)=1w(t)0htyo,Xyo

F(t)=yo=1norteXyow(El |t-tyoEl |/ /h).
w(t)
  • w(t)=1t10 0
  • w(t)=max(0 0,1-t)
  • un núcleo cuadrático: ;w(t)=max(0 0,1-t2)
  • un núcleo tricubo: ;w(t)=max(0 0,(1-t2)3)
  • un núcleo gaussiano: ;w(t)=Exp(-t2/ /2)

Llamo a estos núcleos, pero están apagados por un factor constante aquí y allá; vea también una lista completa de núcleos .

Algún código de ejemplo en Matlab:

%%kernels
ker0 = @(t)(max(0,ceil(1-t))); %uniform
ker1 = @(t)(max(0,1-t)); %triangular
ker2 = @(t)(max(0,1-t.^2)); %quadratic
ker3 = @(t)(max(0,(1-t.^2).^3)); %tricube
ker4 = @(t)(exp(-0.5 * t.^2)); %Gaussian

%%compute f(t) given x_i,t_i,kernel,h
ff = @(x_i,t_i,t,kerf,h)(sum(x_i .* kerf(abs(t - t_i) / h)));

%%some sample data: irregular electric bills
sdata = [
datenum(2009,12,30),141.73;...
datenum(2010,01,25),100.45;...
datenum(2010,02,23),98.34;...
datenum(2010,03,30),83.92;...
datenum(2010,05,01),56.21;...       %late this month;
datenum(2010,05,22),47.33;...       
datenum(2010,06,14),62.84;...       
datenum(2010,07,30),83.34;...       
datenum(2010,09,10),93.34;...       %really late this month
datenum(2010,09,22),78.34;...
datenum(2010,10,22),93.25;...
datenum(2010,11,14),83.39;...       %early this month;
datenum(2010,12,30),133.82];

%%some irregular observation times at which to sample the filtered version;
t_obs  = sort(datenum(2009,12,01) + 400 * rand(1,400));

t_i = sdata(:,1);x_i = sdata(:,2);

%%compute f(t) for each of the kernel functions;
h   = 60;    %bandwidth of 60 days;

fx0 = arrayfun(@(t)(ff(x_i,t_i,t,ker0,h)),t_obs);
fx1 = arrayfun(@(t)(ff(x_i,t_i,t,ker1,h)),t_obs);
fx2 = arrayfun(@(t)(ff(x_i,t_i,t,ker2,h)),t_obs);
fx3 = arrayfun(@(t)(ff(x_i,t_i,t,ker3,h)),t_obs);
fx4 = arrayfun(@(t)(ff(x_i,t_i,t,ker4,0.5*h)),t_obs);   %!!use smaller bandwidth

%%plot them;
lhand = plot(t_i,x_i,'--rs',t_obs,fx0,'m-+',t_obs,fx1,'b-+',t_obs,fx2,'k-+',...
t_obs,fx3,'g-+',t_obs,fx4,'c-+');
set(lhand(1),'MarkerSize',12);
set(lhand(2:end),'MarkerSize',4);
datetick(gca());
legend(lhand,{'data','uniform','triangular','quadratic','tricube','gaussian'});

El gráfico muestra el uso de algunos núcleos en algunos datos de muestra de facturas eléctricas. texto alternativo

Tenga en cuenta que el núcleo uniforme está sujeto a los "choques estocásticos" que el OP está tratando de evitar. Los núcleos tricubo y gaussiano ofrecen aproximaciones mucho más suaves. Si este enfoque es aceptable, uno solo tiene que elegir el núcleo y el ancho de banda (en general, es un problema difícil, pero dado algunos conocimientos de dominio y algunos bucles de código-prueba-recodificación, no debería ser demasiado difícil).

shabbychef
fuente
Shabbychef:> Creo que Farrel mencionó específicamente un argumento en contra de este enfoque en su pregunta.
user603
La pregunta es algo ambigua; mi conclusión fue que el OP estaba buscando 'palabras de moda'.
shabbychef
Busqué en google el vagón basado en el tiempo y se me ocurrió muy poco. ¿Nos puede señalar un ejemplo trabajado?
Farrel
1

Palabras de moda: interpolación, remuestreo, suavizado.

Su problema es similar al que se encuentra con frecuencia en la demografía: las personas pueden tener recuentos censales desglosados ​​en intervalos de edad, por ejemplo, y dichos intervalos no siempre son de ancho constante. Desea interpolar la distribución por edad. Lo que esto comparte con su problema, aparte del ancho variable (= intervalos de tiempo variables), es que los datos tienden a ser no negativos. Además, muchos de estos conjuntos de datos pueden tener ruido, pero tiene una forma particular de correlación negativa: un recuento que aparece en un contenedor no aparecerá en los contenedores vecinos, pero podría haberse asignado al contenedor incorrecto. Por ejemplo, las personas mayores pueden tender a redondear sus edades a los cinco años más cercanos. No se pasan por alto, pero podrían contribuir al grupo de edad equivocado. Sin embargo, en general, los datos son completos y confiables. En términos de esta analogía nosotros ' estamos hablando de un censo completo; en sus conjuntos de datos tiene facturas de electricidad reales, inscripciones reales, etc. Por lo tanto, es solo una cuestión de distribuir los datos razonablemente a un conjunto de intervalos útiles para un análisis posterior (como tiempos igualmente espaciados para el análisis de series de tiempo): ahí es donde intervienen la interpolación y el remuestreo.

Existen muchas técnicas de interpolación. Los más comunes en demografía se desarrollaron para un cálculo simple y se basan en splines polinomiales. Muchos comparten un truco que vale la pena conocer, independientemente de cómo planee procesar sus datos: no intente interpolar los datos sin procesar; en cambio, interpola su suma acumulativa. Este último aumentará monotónicamente debido a la no negatividad de los valores originales y, por lo tanto, tenderá a ser relativamente suave. Es por eso que las estrías polinómicas pueden funcionar en absoluto. Otra ventaja de este enfoque es que, aunque el ajuste puede desviarse de los puntos de datos (ligeramente, uno espera), en general reproduce correctamente los totales, para que no se pierda o se gane nada neto. Por supuesto, después de ajustar los valores acumulativos (en función del tiempo o la edad), toma las primeras diferencias para estimar los totales dentro de cualquier contenedor que desee.

El ejemplo más simple de este enfoque es una spline lineal: solo conecte puntos sucesivos en la gráfica de acumulativa versus acumulativa por segmentos de línea. Estime los recuentos en cualquier intervalo de tiempo leyendo los valores y de la curva en y respectivamente y usando . Las mejores splines (cúbicas en algunas áreas; quínticas en muchas aplicaciones demográficas) a veces mejoran las estimaciones. Esto es equivalente a su intuición de ponderar los datos y le da una buena interpretación gráfica.t [ t 0 , t 1 ] x 0 x 1 t 0 t 1 x 1 - x 0Xt[t0 0,t1]X0 0X1t0 0t1X1-X0 0

whuber
fuente
Parece interesante. ¿Conoces una implementación simple de R?
Farrel
Estimado @whuber: Realmente quiero implementar esto en R, así que publiqué una pregunta en stackoverflow. Te puede interesar Si utiliza RI amaría a responder de otra manera puede que sólo quieren sentarse y whatch
Farrel