如何确定时间序列的可预测性?


10

预报员面临的重要问题之一是给定的序列是否 可以预报?

我偶然发现了彼得·卡特(Peter Catt)题为“ 熵作为可预测性的先验指标 ”的文章,该文章使用近似熵(ApEn) 作为确定给定时间序列的相对度量是可预测的。

文章说,

“较小的ApEn值表示一组数据后面将跟随相似数据的可能性较大(规则性)。相反,较大的ApEn值表示重复相似数据的可能性较小(规则性)。因此,较大的ApEn值会带来更多混乱,随机性和系统复杂性。”

然后是用于计算ApEn的数学公式。这是一个有趣的方法,因为它提供了一个可用于相对意义上评估可预测性的数值。我不知道“近似熵”的含义,我正在阅读有关它的更多内容。

有一个叫包pracmaR,可以让你计算近似熵。为了说明目的,我使用了3个不同的时间序列并计算了ApEn数。

  1. 系列1:著名的AirPassenger时间序列-具有高度确定性,我们应该能够轻松进行预测。
  2. 系列2:黑子时间序列-定义明确,但比系列1更难预测。
  3. 系列3:随机数无法预测此系列。

因此,如果我们计算ApEn,则系列1应该小于系列2,而系列3应该非常非常少。

以下是为所有三个系列计算ApEn的R代码段。

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

这不是我所期望的。随机序列的数目比定义明确的AirPassenger序列的数目要少。即使将随机数增加到100,我仍然得到以下值,该值小于定义明确的2 / Sunspot.yealry系列。

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

以下是我的问题:

  1. 计算ApEn(mr)有2个参数?如何确定它们。R上面的代码中使用了默认值。
  2. 我在做错什么,这是错误地表明,对于随机数,ApEn相对于定义明确的序列(例如sunspot.yearly)而言较低。
  3. 我应该对系列进行反季节化/反趋势化,然后估算ApEn。但是作者将ApEn直接应用于该系列。
  4. 还有其他方法可以确定该系列是否可预测?

如文章中所述,近似熵不应用于N <200的短时间序列。更重要的是,本文使用样本熵而不是近似熵。Pracma包含两者。谢谢

它解释了解释变量吗?例如,如果您预测一家公司的客户流失,则可能与营销支出相关,并且支出是高度可预测的,实际上,这是未来几个月的计划。在提议的方法中将如何解释?
阿克萨卡(Aksakal)

@Aksakal,不,没有解释变量。我一直在寻找大型单变量(无解释变量)时间序列预测,因此我们需要一种客观的方法来评估可预测性。同样,在许多情况下,单变量预测比使用解释变量构建的模型更为准确。
天气预报员


1
我的感觉是,这个问题比建议的重复问题要狭窄得多。投票保持开放状态,但建议OP考虑更具体的标题,以免混淆两者。说“如何使用近似熵确定时间序列的可预测性?”
肖恩·复活节

Answers:


7

时间序列的近似熵(ApEn)的计算所涉及的参数m和是窗口(序列)长度容差(滤波器值)。实际上,在以下方面,以及(数量的数据点),近似熵定义为“长度的重复图案的相对流行程度的自然对数与那些长度的比较”(Balasis,Daglis,Anastasiadis&Eftaxias,2011 ,第215页):rmrNmm + 1

一个pËñ[Rñ=Φ[R-Φ+1个[R

哪里 

Φ[R=Σ一世ñC一世[R/ñ-+1个

因此,似乎改变容差r允许控制确定时间序列的熵的(时间)粒度。不过,在包的熵函数调用中使用mr参数的默认值都pracma可以正常工作。要查看所有三个时间序列的正确熵值关系(对于更好定义的序列而言,较低的熵,对于更多随机数据而言,较高的熵),唯一需要解决的方法增加随机数据向量的长度

 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 

结果如预期-由于波动的可预见性降低,从最确定的series1到最随意series 3,它们的熵相应地增加:ApEn(series1) < ApEn(series2) < ApEn(series3)

关于其他可预测性度量,您可能需要检查平均绝对标度误差(MASE) - 有关更多详细信息,请参见此讨论可预测成分分析似乎也是确定时间序列可预测性的一种有趣且新的方法。并且,预计会有一个软件包以及ForeCAR

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

Ω[01个]ΩwH一世ŤËñØ一世sË=0Ωs一世ñüsØ一世d=100

参考文献

Balasis,G.,Daglis,IA,Anastasiadis,A.,&Eftaxias,K.(2011)。使用熵概念和重新缩放的范围分析来检测Dst时间sSeries中动态复杂性的变化。参见 W. Liu和M. Fujimoto(编辑),《动态磁层》,IAGA特殊Sopron丛书,第3卷,第211页。doi:10.1007 / 978-94-007-0501-2_12。施普林格。取自http://members.noa.gr/anastasi/papers/B29.pdf

Georg M.Goerg(2013):可预测的成分分析。JMLR,W&CP(2)2013:64-72。http://machinelearning.wustl.edu/mlpapers/papers/goerg13


我还测试了该pracma::sample_entropy()功能,并且在该场景中,在整个时间序列中正确的结果关系也是如此。
Aleksandr Blekh

@forecaster:不客气。
2015年

1
另请参见此文件notsoirrational.files.wordpress.com/2015/04/schulz15.pdf ,该文件使用实验数据来证明其可预测性的依据。它还将某些工作与本文中提到的F​​oreCA工作相关
Georg M. Goerg 2015年

@ GeorgM.Goerg:感谢您的建议,链接和编辑。
Aleksandr Blekh

@forecaster:我很高兴。
Aleksandr Blekh '16

0

每个时间序列都由3个部分组成:趋势,季节性和随机。如果数据显示出强劲的趋势或高度季节性,则预测将相对容易。如果数据大部分是随机的,那么根据定义,您将无法预测任何事情。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.