La acción `arima` del conjunto de acciones `uniTimeSeries` se utiliza para el análisis y pronóstico de series de tiempo univariadas utilizando modelos ARIMA (Autoregressive Integrated Moving Average). Esta acción permite identificar, estimar y pronosticar modelos para datos de series de tiempo, incluyendo la capacidad de manejar estacionalidad y aplicar transformaciones a los datos.
| Parámetro | Descripción |
|---|---|
| alignId | Especifica la alineación del ID de tiempo. |
| auxData | Especifica las tablas de datos de series de tiempo auxiliares. |
| boundaryAlign | Especifica la alineación de la marca de tiempo de inicio y fin. |
| casOut | Nombra la tabla de datos de salida para contener los pronósticos de las variables. |
| display | Especifica la lista de tablas de visualización que desea que la acción cree. Si no se especifica este parámetro, se crean todas las tablas. |
| interval | Especifica el intervalo de tiempo (o frecuencia). |
| nlFormat | Cuando se establece en True, elige el mejor formato internacional para la variable de marca de tiempo basándose en el intervalo de tiempo de acumulación. Cuando se establece en False, elige el mejor formato basado en el idioma inglés para la variable de marca de tiempo. Esta opción se ignora si especifica el formato de la variable de marca de tiempo directamente. |
| nThreads | Especifica el número de hilos que se utilizan por nodo de trabajo en una sesión de CAS. Los hilos se utilizan para preprocesar y analizar los datos de entrada en paralelo. Debe especificar un valor mayor o igual a 0. Si especifica 0, que es el valor predeterminado, el número de hilos se establece en el número máximo de núcleos con licencia. |
| outEst | Nombra la tabla de datos de salida para contener las estimaciones de los parámetros del modelo y los estadísticos de prueba y valores de probabilidad asociados. |
| outFor | Nombra la tabla de datos de salida para contener los componentes de la serie de tiempo de pronóstico (real, predicho, límite de confianza inferior, límite de confianza superior, error de predicción, error estándar de predicción). |
| outputTables | Especifica la lista de tablas de visualización que desea que se generen como tablas CAS. Si no se especifica este parámetro, no se generan tablas como tablas CAS. |
| outStat | Nombra la tabla de datos de salida para contener los estadísticos de ajuste. |
| seasonality | Especifica el número de períodos de tiempo por ciclo estacional (el valor predeterminado se basa en el intervalo de tiempo). |
| series | Especifica el nombre de la serie a modelar y las opciones de modelado. |
| sumOut | Nombra la tabla de datos de salida para contener los estadísticos de resumen y la suma de pronósticos. |
| table | Especifica la tabla de datos de entrada. |
| tEnd | Especifica el final de la ventana de tiempo. |
| timeId | Especifica la variable de marca de tiempo. |
| trimId | Especifica cómo recortar la serie de tiempo. 'NONE' significa que no se recortan valores faltantes. 'LEFT' recorta los valores faltantes al principio de la serie. 'RIGHT' recorta los valores faltantes al final. 'BOTH' recorta en ambos extremos. |
| tStart | Especifica el inicio de la ventana de tiempo. |
Este bloque de código crea una tabla en memoria llamada `mycas.series` que contiene una serie de tiempo con una variable de fecha (`timeId`) y una variable de valor (`value`). Estos datos se utilizarán para demostrar el funcionamiento de la acción `arima`.
| 1 | DATA mycas.series; |
| 2 | FORMAT timeId date9.; |
| 3 | DO i = 1 to 100; |
| 4 | timeId = intnx('day', '01jan2023'd, i); |
| 5 | value = 50 + 2*i + 10*sin(i/10) + rannor(12345); |
| 6 | OUTPUT; |
| 7 | END; |
| 8 | RUN; |
Este ejemplo realiza un análisis ARIMA simple en la serie `value`. Se ajusta un modelo ARIMA(1,1,1) y se generan pronósticos para los siguientes 12 períodos.
| 1 | PROC CAS; |
| 2 | uniTimeSeries.arima / |
| 3 | TABLE={name='series'}, |
| 4 | timeId={name='timeId'}, |
| 5 | interval='day', |
| 6 | series={ |
| 7 | {name='value', model={ |
| 8 | {estimate={p=1, diff=1, q=1}}, |
| 9 | {forecast={lead=12}} |
| 10 | }} |
| 11 | }, |
| 12 | outFor={name='mycas.forecast_simple', replace=true}; |
| 13 | RUN; |
| 14 | QUIT; |
Este ejemplo demuestra un análisis más complejo. Se aplica una transformación logarítmica a la serie `value`. Se ajusta un modelo ARIMA estacional (SARIMA) con una diferenciación regular de orden 1 y una diferenciación estacional de orden 1 con una estacionalidad de 7 días. El modelo incluye un término autorregresivo de orden 1 y un término de media móvil estacional de orden 1. Se utiliza el método de estimación de Máxima Verosimilitud (ML). Finalmente, se generan pronósticos para 14 períodos y se guardan las estimaciones de los parámetros y los estadísticos de ajuste.
| 1 | PROC CAS; |
| 2 | uniTimeSeries.arima / |
| 3 | TABLE={name='series'}, |
| 4 | timeId={name='timeId'}, |
| 5 | interval='day', |
| 6 | seasonality=7, |
| 7 | series={ |
| 8 | {name='value', model={ |
| 9 | {estimate={transform='log', p=1, diff={1, 7}, q={{factor=1, s=7}}, method='ML'}}, |
| 10 | {forecast={lead=14, alpha=0.95}} |
| 11 | }} |
| 12 | }, |
| 13 | outFor={name='mycas.forecast_detailed', replace=true}, |
| 14 | outEst={name='mycas.estimates', replace=true}, |
| 15 | outStat={name='mycas.fit_stats', replace=true}; |
| 16 | RUN; |
| 17 | QUIT; |
Una cadena de supermercados necesita prever las ventas diarias de un producto de alta rotación para optimizar la gestión de inventario y evitar roturas de stock. Los datos histó...
Una empresa de energía eólica necesita analizar y prever la producción de energía de una turbina a partir de datos de sensores recopilados cada minuto. El objetivo es probar la ...
Una compañía farmacéutica analiza datos de ventas semanales de un nuevo medicamento. Debido a problemas en la recopilación de datos, las primeras y últimas semanas del período d...