Scénario de test & Cas d'usage
Analyse et prévision de séries temporelles univariées.
Découvrir toutes les actions de uniTimeSeriesCréation d'une série temporelle avec des valeurs manquantes intentionnelles au début, à la fin, et de manière aléatoire au milieu de la série.
| 1 | DATA casuser.capteur_pression; |
| 2 | DO i = 1 to 500; |
| 3 | time_id = '01JAN2025:08:00:00'dt + (i-1)*60; |
| 4 | pression = 100 + 5*sin(i/20) + rannor(6789)*2; |
| 5 | IF i <= 10 or i > 490 THEN pression = . ; /* Blocs manquants début/fin */ |
| 6 | IF ranuni(987) < 0.15 THEN pression = . ; /* 15% de valeurs manquantes sporadiques */ |
| 7 | OUTPUT; |
| 8 | END; |
| 9 | FORMAT time_id datetime18.; |
| 10 | RUN; |
| 1 | |
| 2 | PROC CASUTIL; |
| 3 | load |
| 4 | DATA=casuser.capteur_pression outcaslib='casuser' casout='capteur_pression' replace; |
| 5 | RUN; |
| 6 |
| 1 | PROC CAS; |
| 2 | uniTimeSeries.arima TABLE={name='capteur_pression'}, |
| 3 | timeId={name='time_id'}, |
| 4 | interval='minute', |
| 5 | trimId='BOTH', |
| 6 | series={{name='pression', model={{estimate={p=1, q=1, diff=1, transform='LOG'}, forecast={lead=20}}}}}, |
| 7 | outFor={name='previsions_pression', replace=true}, |
| 8 | outStat={name='stats_pression_mv', replace=true}; |
| 9 | RUN; |
| 1 | |
| 2 | PROC CAS; |
| 3 | TABLE.fetch / TABLE={name='stats_pression_mv'}; |
| 4 | RUN; |
| 5 |
L'action doit s'exécuter avec succès malgré les valeurs manquantes. L'option `trimId='BOTH'` doit assurer que le modèle est construit sur la plage de données valide (de l'observation 11 à 490). Les valeurs manquantes internes doivent être gérées par l'algorithme d'estimation. Les tables `previsions_pression` et `stats_pression_mv` doivent être créées. La table des statistiques doit indiquer le nombre d'observations manquantes utilisées et non utilisées, et le modèle doit produire des prévisions valides.