uniTimeSeries arima

Robustesse du Modèle face à des Données de Capteur Manquantes

Scénario de test & Cas d'usage

Contexte Métier

Une usine utilise des capteurs pour surveiller la pression d'une machine en continu. Les capteurs étant peu fiables, les données transmises contiennent des valeurs manquantes, à la fois de manière sporadique et en blocs au début et à la fin de la période d'enregistrement. L'objectif est de tester la capacité de l'action `arima` à construire un modèle et à prévoir la pression malgré la mauvaise qualité des données.
À propos du Set : uniTimeSeries

Analyse et prévision de séries temporelles univariées.

Découvrir toutes les actions de uniTimeSeries
Préparation des Données

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

Copié !
1DATA 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.;
10RUN;

Étapes de réalisation

1
Chargement des données de capteur avec valeurs manquantes dans CAS.
Copié !
1 
2PROC CASUTIL;
3load
4DATA=casuser.capteur_pression outcaslib='casuser' casout='capteur_pression' replace;
5RUN;
6 
2
Exécution du modèle ARIMA en utilisant `trimId='BOTH'` pour ignorer les valeurs manquantes en début et fin de série, et en appliquant une transformation logarithmique pour tester la robustesse.
Copié !
1PROC 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};
9RUN;
3
Vérification des statistiques d'ajustement pour voir comment les valeurs manquantes ont été gérées.
Copié !
1 
2PROC CAS;
3TABLE.fetch / TABLE={name='stats_pression_mv'};
4RUN;
5 

Résultat Attendu


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.