Prévision de séries chronologiques irrégulières (avec R)

8

Il existe plusieurs méthodes pour faire des prévisions de séries chronologiques équidistantes (par exemple Holt-Winters, ARIMA, ...). Cependant, je travaille actuellement sur l'ensemble de données espacées irrégulières suivant, qui a un nombre variable de points de données par an et aucun intervalle de temps régulier entre ces points:

Graphique: terrain Exemples de données:

structure(list(date = structure(c(664239600, 665449200, 666658800, 
670888800, 672184800, 673394400, 674517600, 675727200, 676936800, 
678146400, 679356000, 680565600, 682984800, 684194400, 685404000, 
686613600, 687823200, 689036400, 690246000, 691455600, 692665200, 
695084400, 696294000, 697503600, 698713200, 699922800, 701132400, 
703548000, 705967200, 707176800, 708472800, 709682400, 710805600, 
712015200, 713224800, 714434400, 715644000, 716853600, 718063200, 
719272800, 720486000, 721695600, 722905200, 724114800, 726534000, 
727743600, 728953200, 730162800, 732668400, 733788000, 734911200, 
737416800, 739144800, 741650400, 744069600, 746575200, 751413600, 
756169200, 761612400, 766533600, 771285600, 776124000, 780962400, 
785804400, 790642800, 795481200, 800316000, 805154400, 808869600, 
813708000, 818463600, 823302000, 828741600, 833580000, 838418400, 
843256800, 848098800, 853542000, 858380400, 863215200, 868053600, 
872892000, 875311200, 880153200, 884991600, 892291920, 897122048, 
901956780, 907055160, 912501900, 917083860, 919500720, 924354660, 
929104882, 934013100, 938851554, 948540840, 958809480, 963647580
), class = c("POSIXct", "POSIXt"), tzone = ""), y = c(3.36153, 
-0.48246, 5.21884, 18.74093, 37.91793, 28.54938, 33.61709, 63.06235, 
68.65387, 77.23859, 87.11039, 84.03281, 93.62154, 99.91251, 100.50264, 
93.77179, 84.5999, 67.36365, 41.30507, 18.19424, 0.958, -15.81843, 
-14.5947, 5.63223, 6.98581, 4.49837, 12.14337, 26.38595, 38.18156, 
39.49169, 45.91298, 64.2627, 65.20289, 95.34555, 98.09912, 102.53325, 
101.76982, 95.17178, 93.00834, 81.43244, 59.84896, 44.55941, 
22.71526, 8.64943, 12.36012, -3.73631, -1.29231, -1.24887, 27.38948, 
33.22064, 28.50297, 39.53514, 52.27092, 64.83294, 79.8159, 107.36236, 
69.52707, 12.95026, 13.36662, 27.65264, 61.13918, 82.24249, 85.89012, 
13.9803, -11.97099, 8.03575, 55.61148, 93.62154, 107.10067, 88.11689, 
18.06141, -32.83151, 18.01798, 60.92196, 100.39437, 112.40503, 
54.1048, 2.59809, 31.10314, 56.46477, 58.4749, 124.68055, 100.5016, 
43.5316, -7.5386, 35.20915, 37.08925, 83.0716, 83.22325, 29.5081, 
-32.7452, -50.63345, 29.00605, 58.2997, 85.3864, 110.4178, -38.66195, 
16.16515, 71.64925)), .Names = c("date", "y"), row.names = c(NA, 
-99L), class = "data.frame")

Ma première pensée a été d'agréger les données en calculant des moyennes mensuelles. Cependant, cela entraînera de nombreux mois avec des valeurs manquantes et deuxièmement, la précision sera perdue si plusieurs valeurs dans un mois sont remplacées par un agrégat moyen. Pour résoudre le premier problème, on pourrait proposer de calculer des agrégats trimestriels. Mais dans ce cas, l'échantillon de données deviendrait relativement petit.

Ma question est donc de savoir à quoi ressemblerait votre approche pour faire une prévision du prochain point de données pour l'ensemble de données donné (si possible avec R). Existe-t-il des meilleures pratiques pour gérer les séries chronologiques espacées irrégulières?

Aeck
la source

Réponses:

4

Les modèles d'espace d'états prennent très bien en charge les données manquantes. jetez un oeil à la section 6.4 «Modifications des données manquantes» dans l' analyse des séries temporelles et ses applications avec les exemples R , 3e éd., par Shumway et Stoffer. Ils ont des exemples dans http://www.stat.pitt.edu/stoffer/tsa3/

Aksakal
la source