uniTimeSeries

arima

Descripción

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.

uniTimeSeries.arima <result=results> <status=rc> / alignId="BEGIN" | "END" | "MIDDLE", auxData={{castable-1} <, {castable-2}, ...>}, boundaryAlign="BOTH" | "END" | "NONE" | "START", casOut={casouttable}, display={displayTables}, interval="string", nlFormat=TRUE | FALSE, nThreads=integer, outEst={casouttable}, outFor={casouttable}, outputTables={outputTables}, outStat={casouttable}, seasonality=integer, series={{arimaSeriesStmt-1} <, {arimaSeriesStmt-2}, ...>}, sumOut={casouttable}, table={castable}, tEnd=double | date | datetime, timeId={casinvardesc}, trimId="BOTH" | "LEFT" | "NONE" | "RIGHT", tStart=double | date | datetime;
Parámetros
ParámetroDescripción
alignIdEspecifica la alineación del ID de tiempo.
auxDataEspecifica las tablas de datos de series de tiempo auxiliares.
boundaryAlignEspecifica la alineación de la marca de tiempo de inicio y fin.
casOutNombra la tabla de datos de salida para contener los pronósticos de las variables.
displayEspecifica 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.
intervalEspecifica el intervalo de tiempo (o frecuencia).
nlFormatCuando 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.
nThreadsEspecifica 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.
outEstNombra 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.
outForNombra 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).
outputTablesEspecifica 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.
outStatNombra la tabla de datos de salida para contener los estadísticos de ajuste.
seasonalityEspecifica el número de períodos de tiempo por ciclo estacional (el valor predeterminado se basa en el intervalo de tiempo).
seriesEspecifica el nombre de la serie a modelar y las opciones de modelado.
sumOutNombra la tabla de datos de salida para contener los estadísticos de resumen y la suma de pronósticos.
tableEspecifica la tabla de datos de entrada.
tEndEspecifica el final de la ventana de tiempo.
timeIdEspecifica la variable de marca de tiempo.
trimIdEspecifica 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.
tStartEspecifica el inicio de la ventana de tiempo.
Creación de Datos de Ejemplo

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`.

¡Copiado!
1DATA 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;
8RUN;

Ejemplos

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.

Código SAS® / CAS Código en espera de validación por la comunidad
¡Copiado!
1PROC 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};
13RUN;
14QUIT;
Resultado :
Una tabla de salida `mycas.forecast_simple` que contiene los valores pronosticados para los próximos 12 días, junto con los límites de confianza superior e inferior.

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.

Código SAS® / CAS Código en espera de validación por la comunidad
¡Copiado!
1PROC 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};
16RUN;
17QUIT;
Resultado :
Se generan tres tablas de salida: `mycas.forecast_detailed` con los pronósticos para 14 días, `mycas.estimates` con las estimaciones de los parámetros del modelo SARIMA, y `mycas.fit_stats` con los estadísticos de bondad de ajuste como AIC y BIC.

FAQ

¿Cuál es el propósito de la acción `arima` en el conjunto de acciones `uniTimeSeries`?
¿Qué parámetros son esenciales para ejecutar la acción `arima`?
¿Cómo se define la estructura de un modelo ARIMA, como los órdenes p, d, y q?
¿Qué métodos de estimación están disponibles y cuál es el predeterminado?
¿Cómo se pueden generar pronósticos y almacenarlos en una tabla de salida?

Escenarios asociados

Caso de uso
Previsión de Demanda Minorista con Estacionalidad Semanal

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ó...

Caso de uso
Análisis de Alto Volumen de Datos de Sensores IoT

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 ...

Caso de uso
Gestión de Series Temporales con Valores Faltantes al Inicio y al Final

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...