Scénario de test & Cas d'usage
Análisis y pronóstico de series temporales univariantes.
Descubrir todas las acciones de uniTimeSeriesCrea una tabla de ventas diarias para un año. Se simula una tendencia base, una estacionalidad semanal (ventas más altas los viernes y sábados) y ruido aleatorio.
| 1 | DATA mycas.ventas_diarias; |
| 2 | FORMAT fecha date9.; |
| 3 | DO i = 0 to 364; |
| 4 | fecha = '01jan2024'd + i; |
| 5 | dia_semana = weekday(fecha); |
| 6 | factor_semanal = 0; |
| 7 | IF dia_semana in (6, 7) THEN factor_semanal = 200; /* Viernes y Sábado */ |
| 8 | ventas = 1000 + (i * 1.5) + factor_semanal + rannor(123)*50; |
| 9 | OUTPUT; |
| 10 | END; |
| 11 | RUN; |
| 1 | PROC CAS; |
| 2 | TABLE.loadTable / |
| 3 | caslib='CASUSER' path='ventas_diarias.sashdat' |
| 4 | casOut={name='ventas_diarias', replace=true}; |
| 5 | RUN; |
| 1 | uniTimeSeries.arima / |
| 2 | TABLE={name='ventas_diarias'}, |
| 3 | timeId={name='fecha'}, |
| 4 | interval='day', |
| 5 | seasonality=7, |
| 6 | series={ |
| 7 | {name='ventas', model={ |
| 8 | {estimate={p=1, diff={1,7}, q={{factor=1, s=7}}, method='ML'}}, |
| 9 | {forecast={lead=14}} |
| 10 | }} |
| 11 | }, |
| 12 | outFor={name='pronostico_ventas', replace=true}, |
| 13 | outEst={name='estimaciones_modelo', replace=true}, |
| 14 | outStat={name='estadisticas_ajuste', replace=true}; |
| 1 | TABLE.fetch / TABLE={name='pronostico_ventas'}; |
| 2 | RUN; |
| 3 | TABLE.fetch / TABLE={name='estimaciones_modelo'}; |
| 4 | RUN; |
| 5 | TABLE.fetch / TABLE={name='estadisticas_ajuste'}; |
| 6 | RUN; |
| 7 | QUIT; |
La acción debe completarse con éxito. Se deben crear tres tablas en CAS: `pronostico_ventas` con 14 días de pronósticos que reflejen la tendencia y la estacionalidad semanal, `estimaciones_modelo` con los coeficientes del modelo SARIMA, y `estadisticas_ajuste` con métricas como AIC y BIC. El pronóstico debe mostrar valores más altos para los fines de semana.