Estoy buscando una función (preferiblemente en SAS) que pueda leer datos diarios/semanales/mensuales de varios años y seleccionar las dos mejores fechas para separar el año en dos temporadas (no necesariamente de igual longitud), cada una con su propia tendencia.
Respuestas
¿Demasiados anuncios?Tu mejor opción probablemente sea un bucle doble muy simple para una búsqueda exhaustiva.
Recorre las posibles fechas en un año (o comienzos de semanas, o comienzos de meses para datos semanales o mensuales). Llama a esto $t_1$.
Recorre las posibles fechas más tarde (comienzos de semanas, comienzos de meses) en un año. Llama a esto $t_2$. Es posible que desees comenzar tu bucle en $t_1+\Delta$ para alguna longitud mínima de temporada $\Delta$.
Para cada par $(t_1, t_2)$, calcula las observaciones promedio $\overline{y}_i$ ("en temporada") entre $t_1$ y $t_2$, y las observaciones promedio $\overline{y}_o$ ("fuera de temporada") entre $t_2$ y $t_1$ (del siguiente año). Ten en cuenta los límites de tu serie temporal (por eso trabajar con promedios en temporadas, no totales). Calcula la diferencia absoluta $|\overline{y}_i-\overline{y}_o|$.
Finalmente, elige el par $(t_1, t_2)$ con la mayor diferencia $|\overline{y}_i-\overline{y}_o|$.
Esto debería ser fácil de implementar en cualquier tipo de software, mucho más fácil que enseñarle a un algoritmo de ML a producir intervalos de tiempo. A menos que necesites esto en tiempo real para una gran cantidad de series temporales (en cuyo caso espero que no estés preguntando aquí), también debería ser absolutamente competitivo en cuanto a tiempo de ejecución.
Esto podría ser solo un comentario, pero lo ofrezco como una respuesta seria.
He experimentado varias versiones de este problema, cuando algo como la nieve en Escocia o el sol en Sídney muestra un pico cerca del giro del calendario convencional común y usar el calendario convencional para gráficos y/o estadísticas resumen es menos que ideal.
Vale la pena señalar que los años no calendario (es decir, años que no empiezan el 1 de enero) son completamente estándar en muchas áreas, incluidos los años religiosos, hidrológicos, fiscales y académicos.
La respuesta es de hecho algún tipo de año no calendario pero en la práctica
-
Si comienzas el año cuando los valores son bajos, o no son de interés, no debería importar mucho cuándo comiences.
-
Si intentas optimizar, estableces un problema subsidiario de qué criterio o criterios usar, cómo optimizar, y qué hacer cuando tus máquinas indican diferentes comienzos en diferentes años, y así sucesivamente. A menos que tu problema lo haga natural, o sea una buena idea, definir "años" con diferentes longitudes, la solución puede crear tantos problemas como resuelve, y hay un riesgo real de que lo que debería ser solo un detalle operativo se convierta en una gran distracción. Y tus problemas no terminan ahí, ya que tendrás que explicar lo que hiciste, incluso a otros investigadores que pueden pensar que es una mala idea o que tienen una idea mejor.
-
Permito que la conveniencia y la consistencia predominen sobre todas las soluciones matizadas y opto por cortes como (el comienzo de) julio.
Hay una miscelánea de comentarios y ejemplos en este artículo. Se me ocurrió el título del artículo algunos años antes de saber lo que diría.
Nota: Dos estaciones, cada una con su propia tendencia, me parece un objetivo falso. Si las subidas y bajadas fueran esencialmente o incluso aproximadamente triangulares, eso tendría sentido, pero en mi experiencia, encajar tendencias más suaves sin discontinuidades con sinusoides suele ser una apuesta mejor. (Los economistas tienen su propia forma de respuesta, arrojando muchas variables indicadoras en el ajuste.)