Scénario de test & Cas d'usage
Análisis y pronóstico de series temporales univariantes.
Descubrir todas las acciones de uniTimeSeriesCrea una serie de ventas semanales con valores nulos (`.`) en las primeras 3 semanas y en las últimas 2 semanas para simular datos incompletos.
| 1 | DATA mycas.ventas_incompletas; |
| 2 | FORMAT semana date9.; |
| 3 | DO i = 1 to 52; |
| 4 | semana = intnx('week', '01jan2024'd, i); |
| 5 | IF i <= 3 or i > 50 THEN ventas = .; |
| 6 | ELSE ventas = 200 + i*5 + rannor(888)*20; |
| 7 | OUTPUT; |
| 8 | END; |
| 9 | RUN; |
| 1 | PROC CAS; |
| 2 | TABLE.loadTable / |
| 3 | caslib='CASUSER' path='ventas_incompletas.sashdat' |
| 4 | casOut={name='ventas_incompletas', replace=true}; |
| 5 | RUN; |
| 1 | uniTimeSeries.arima / |
| 2 | TABLE={name='ventas_incompletas'}, |
| 3 | timeId={name='semana'}, |
| 4 | interval='week', |
| 5 | series={ |
| 6 | {name='ventas', model={ |
| 7 | {estimate={p=1, diff=1, q=1}}, |
| 8 | {forecast={lead=4}} |
| 9 | }} |
| 10 | }; |
| 1 | uniTimeSeries.arima / |
| 2 | TABLE={name='ventas_incompletas'}, |
| 3 | timeId={name='semana'}, |
| 4 | interval='week', |
| 5 | trimId='BOTH', |
| 6 | series={ |
| 7 | {name='ventas', model={ |
| 8 | {estimate={p=1, diff=1, q=1}}, |
| 9 | {forecast={lead=4}} |
| 10 | }} |
| 11 | }, |
| 12 | outFor={name='pronostico_recortado', replace=true}, |
| 13 | outStat={name='estadisticas_recortado', replace=true}; |
| 1 | TABLE.tableInfo / TABLE={name='pronostico_recortado'}; |
| 2 | RUN; |
| 3 | QUIT; |
| 4 |
El primer intento (paso 2) debe fallar o producir un mensaje de error en el log de SAS indicando que la serie no se puede procesar debido a los valores faltantes. El segundo intento (paso 3) con `trimId='BOTH'` debe ejecutarse correctamente. Se crearán las tablas `pronostico_recortado` y `estadisticas_recortado`. El modelo se ajustará utilizando solo el subconjunto de datos válidos (semanas 4 a 50), y el pronóstico se generará a partir del final de esta serie recortada.