Comment déterminer la prévisibilité des séries chronologiques?

10

L'un des problèmes importants auxquels sont confrontés les prévisionnistes est de savoir si la série donnée peut être prévue ou non?

Je suis tombé sur un article intitulé " L'entropie comme indicateur a priori de la prévisibilité " de Peter Catt qui utilise l' entropie approximative (ApEn) comme mesure relative pour déterminer qu'une série chronologique donnée est prévisible.

L'article dit,

"Des valeurs ApEn plus petites indiquent une plus grande chance qu'un ensemble de données soit suivi de données similaires (régularité). Inversement, une valeur plus élevée d'ApEn indique une probabilité plus faible de répétition de données similaires (irrégularité). Par conséquent, des valeurs plus grandes véhiculent plus de désordre , le caractère aléatoire et la complexité du système. "

Et est suivi de formules mathématiques pour calculer ApEn. Il s'agit d'une approche intéressante car elle fournit une valeur numérique qui peut être utilisée pour évaluer la prévisibilité au sens relatif. Je ne sais pas ce que signifie Entropie approximative, j'en lis plus à ce sujet.

Il y a un paquet appelé pracma en Rqui vous permet de calculer EnAp. À des fins d'illustration, j'ai utilisé 3 séries chronologiques différentes et calculé les nombres ApEn.

  1. Série 1: La célèbre série chronologique AirPassenger - est hautement déterministe et nous devrions être en mesure de prévoir facilement.
  2. Série 2: Sunspot Time Series - est très bien définie mais devrait être moins prévisible que la série 1.
  3. Série 3: nombre aléatoire Il n'y a aucun moyen de prévoir cette série.

Donc, si nous calculons ApEn, la série 1 devrait être inférieure à la série 2 devrait être très très inférieure à la série 3.

Ci-dessous, l'extrait R qui calcule ApEn pour les trois séries.

library("pracma")
> series1 <- approx_entropy(AirPassengers)
> series1
[1] 0.5157758
> series2 <- approx_entropy(sunspot.year)
> series2
[1] 0.762243
> series3 <- approx_entropy(rnorm(1:30))
> series3
[1] 0.1529609

Ce n'est pas ce à quoi je m'attendais. La série aléatoire a un nombre inférieur à la série AirPassenger bien définie. Même si j'augmente le nombre aléatoire à 100, j'obtiens toujours ce qui suit qui est inférieur à la série bien définie série 2 / Sunspot.yealry.

> series3 <- approx_entropy(rnorm(1:100))
> series3
[1] 0.747275

Voici mes questions:

  1. Il y a 2 paramètres dans le calcul de ApEn ( met r)? Comment les déterminer. J'ai utilisé les valeurs par défaut dans le Rcode ci-dessus.
  2. Qu'est-ce que je fais de manière incorrecte qui montre que de manière incorrecte, ApEn est inférieur pour les nombres aléatoires par rapport à une série bien définie telle que sunspot.yearly.
  3. Dois-je désaisonnaliser / décourager la série, puis estimer ApEn. L'auteur a cependant appliqué directement ApEn à la série.
  4. Existe-t-il un autre moyen de déterminer si la série est prévisible?
prévisionniste
la source
Comme indiqué dans l'article, l'entropie approximative ne doit pas être utilisée sur de courtes séries temporelles, N <200. Plus important encore, l'article utilise l'entropie échantillon et non l'entropie approximative. Pracma contient les deux. Merci
Tient-il compte des variables explicatives? Par exemple, si vous prévoyez l'attrition du compte d'une entreprise, elle peut être corrélée aux dépenses de marketing, et les dépenses sont très prévisibles, en fait, elles sont planifiées des mois à l'avance. Comment cela serait-il pris en compte dans l'approche proposée?
Aksakal
@Aksakal, non il n'y a pas de variables explicatives. Je cherchais des prévisions chronologiques à grande échelle univariées (sans variable explicative) où nous avons besoin d'une mesure objective pour évaluer la prévisibilité. De plus, dans de nombreux cas, la prévision univariée est beaucoup plus précise que les modèles construits avec des variables explicatives.
prévisionniste
1
Mon sentiment est que c'est une question beaucoup plus étroite que le doublon suggéré. Laisser le vote ouvert, mais suggérer au PO d'envisager un titre plus spécifique pour éviter de confondre les deux. Dites: "Comment déterminer la prévisibilité des séries chronologiques en utilisant l'entropie approximative ?"
Sean Easter

Réponses:

7

Les paramètres met r, impliqués dans le calcul de l' entropie approximative (ApEn) des séries chronologiques, sont la longueur de la fenêtre (séquence) et la tolérance (valeur du filtre) , en conséquence. En fait, en termes de m, rainsi que de N(nombre de points de données), ApEn est défini comme «logarithme naturel de la prévalence relative des modèles répétitifs de longueur mpar rapport à ceux de longueur m + 1» (Balasis, Daglis, Anastasiadis & Eftaxias, 2011 , p. 215):

UNEpEn(m,r,N)=Φm(r)-Φm+1(r),

où 

Φm(r)=ΣjelnCjem(r)/(N-m+1)

Par conséquent, il apparaît que le changement de la tolérance rpermet de contrôler la granularité (temporelle) de la détermination de l'entropie des séries chronologiques. Néanmoins, l'utilisation des valeurs par défaut pour les deux paramètres met rdans pracmales appels de fonction d'entropie du package fonctionne correctement. Le seul correctif qui doit être fait pour voir la relation correcte des valeurs d'entropie pour les trois séries temporelles (entropie inférieure pour des séries plus bien définies, entropie supérieure pour des données plus aléatoires) est d' augmenter la longueur du vecteur de données aléatoires :

 library(pracma)
 set.seed(10)
 all.series <- list(series1 = AirPassengers,
                    series2 = sunspot.year,
                    series3 = rnorm(500)) # <== size increased
 sapply(all.series, approx_entropy)
  series1   series2   series3 
  0.5157758 0.7622430 1.4741971 

Les résultats sont attendus - comme la prévisibilité des fluctuations diminue de plus déterminé series1à plus aléatoire series 3, leur entropie augmente en conséquence: ApEn(series1) < ApEn(series2) < ApEn(series3).

En ce qui concerne les autres mesures de la prévisibilité , vous voudrez peut-être vérifier les erreurs d'échelle absolues moyennes (MASE) - voir cette discussion pour plus de détails. L'analyse des composants prévisibles semble également être une approche nouvelle et intéressante pour déterminer la prévisibilité des séries chronologiques. Et, on peut s'y attendre, il existe également un Rpackage pour cela - ForeCA .

library(ForeCA)
sapply(all.series,
       Omega, spectrum.control = list(method = "wosa"))
 series1   series2   series3 
 41.239218 25.333105  1.171738 

Ω[0,1]Ω(whjetenojese)=0%Ω(sjenusoje)=100%

Références

Balasis, G., Daglis, IA, Anastasiadis, A., et Eftaxias, K. (2011). Détection des changements de complexité dynamique dans la série Dst time en utilisant des concepts d'entropie et une analyse de gamme redimensionnée. Dans W. Liu et M. Fujimoto (éd.), The Dynamic Magnetosphere, IAGA Special Sopron Book, Series 3, 211. doi: 10.1007 / 978-94-007-0501-2_12. Springer. Extrait de http://members.noa.gr/anastasi/papers/B29.pdf

Georg M. Goerg (2013): Analyse des composants prévisibles. JMLR, W&CP (2) 2013: 64-72. http://machinelearning.wustl.edu/mlpapers/papers/goerg13

Aleksandr Blekh
la source
J'ai également testé la pracma::sample_entropy()fonction et la relation de résultats correcte à travers la série chronologique est également valable dans ce scénario.
Aleksandr Blekh
@forecaster: vous êtes les bienvenus.
Aleksandr Blekh
1
Voir également cet article notsoirrational.files.wordpress.com/2015/04/schulz15.pdf qui utilise des données expérimentales pour justifier leurs mesures de prévisibilité. Il relie également une partie du travail au travail ForeCA mentionné dans ce post
Georg M. Goerg
@ GeorgM.Goerg: Merci pour les suggestions, liens et modifications.
Aleksandr Blekh
@forecaster: Mon plaisir.
Aleksandr Blekh
0

Chaque série chronologique est composée de 3 composants: tendance, saisonnalité et aléatoire. Si les données présentent une tendance forte et / ou sont fortement saisonnières, la prévision sera relativement facile. Si les données sont principalement aléatoires, par définition, vous ne pouvez rien prédire.

Modèle de Markov caché
la source