预测:方法与实践(第三版)
预测:方法与实践(第三版)
在预测分析中,评估预测分布的准确性是至关重要的。本文将介绍几种评估分布预测准确性的方法,包括分位数、Winkler分数和连续秩概率得分(CRPS)。通过Google股票价格示例,我们将详细解释这些评估方法的计算和应用。
5.9评估分布预测准确性
在评估分布预测时,我们需要使用一些其他措施。以下是几种常用的评估方法:
分位数
考虑上一节中的Google股票价格示例。图5.23显示了Naïve方法预测的80%预测区间。
google_fc |>
filter(.model == "Naive") |>
autoplot(bind_rows(google_2015, google_jan_2016), level=80)+
labs(y ='美元',title = "谷歌收盘价",x='日' )
图5.23: 2016 年 1 月谷歌股价的Naïve预测以及80%的预测区间
此预测区间的下限给出了预测分布的第10个百分位数(或0.1分位数),因此我们预计实际值在大约10%的时间内低于下限,在大约90%的时间内高于下限。当我们比较实际值与这个百分位时,需要考虑到它更有可能高于而不是低于这一事实。
更一般地说,假设我们对未来时间(t)的概率(p)的分位数预测感兴趣,并用(f_{p,t})表示。也就是说,我们期望观测值(y_t)小于(f_{p,t})的概率为(p)。例如,第10个百分位将为(f_{0.10,t})。如果(y_{t})表示时间(t)的观察值,则分位数是
[ Q_{p,t} = \begin{cases} 2(1 - p) \big(f_{p,t} - y_{t}\big), & \text{如果 $y_{t} < f_{p,t}$}\ 2p \big(y_{t} - f_{p,t}\big), & \text{如果 $y_{t} \ge f_{p,t}$.} \end{cases} ]
这有时被称为“弹球损失函数”,因为它的图形类似于球在弹球台上的轨迹。乘数2经常被省略,但包括它会使解释更容易一些。(Q_{p,t})的值较低表示对分位数的估计更好。
分位数分数可以解释为绝对误差。事实上,当(p=0.5)时,分位数分数(Q_{0.5,t})与绝对误差相同。对于(p)的其他值,“误差”((y_t - f_{p,t}))被加权以考虑其为正或负的可能性。如果(p>0.5),(Q_{p,t})在观察值大于估计分位数时比在观察值小于估计分位数时给出更重的惩罚。(p<0.5)则相反。
在图5.23中,向前一步的10%分位数预测(2016年1月4日)是(f_{0.1,t} = 744.54)和观测值是(y_t = 741.84)。
[ Q_{0.1,t} = 2(1-0.1) (744.54 - 741.84) = 4.86. ]
这可以使用带有quantile_score()函数的accuracy()轻松计算:
google_fc |>
filter(.model == "Naive", Date == "2016-01-04") |>
accuracy(google_stock, list(qs=quantile_score), probs=0.10)
#> # A tibble: 1 × 4
#> .model Symbol .type qs
#> <chr> <chr> <chr> <dbl>
#> 1 Naive GOOG Test 4.86
Winkler 分数
评估预测区间而不是几个分位数通常很有趣,Winkler (1972)提出的Winkler分数就是为此目的而设计的。如果在时间(t)的(100(1-\alpha))%预测区间由([\ell_{\alpha,t}, u_{\alpha,t}])给出,则Winkler分数定义为如果观测值超出区间,则区间长度加上惩罚:
[ W_{\alpha,t} = \begin{cases} (u_{\alpha,t} - \ell_{\alpha,t}) + \frac{2}{\alpha} (\ell_{\alpha,t} - y_t) & \text{如果 } y_t < \ell_{\alpha,t} \ (u_{\alpha,t} - \ell_{\alpha,t}) & \text{如果 } \ell_{\alpha,t} \le y_t \le u_{\alpha,t} \ (u_{\alpha,t} - \ell_{\alpha,t}) + \frac{2}{\alpha} (y_t - u_{\alpha,t}) & \text{如果 } y_t > u_{\alpha,t}. \end{cases} ]
对于落在区间内的观测值,Winkler分数就是区间的长度。所以低分与窄间隔相关联。但是,如果观察值落在区间之外,则惩罚适用,惩罚与观察值超出区间的距离成正比。
预测区间通常通过设置(\ell_{\alpha,t} = f_{\alpha/2,t})和(u_{\alpha,t} = f_{1-\alpha/2,t})。如果我们把相应的分位数分数相加并除以(\alpha),我们得到温克勒分数:
[ W_{\alpha,t} = (Q_{\alpha/2,t} + Q_{1-\alpha/2,t})/\alpha. ]
2016年1月4日图5.23中显示的前一步80%区间为[744.54, 773.22],实际值为741.84,所以inkler分数是
[ W_{\alpha,t} = (773.22 - 744.54) + \frac{2}{0.2} (744.54 - 741.84) = 55.68. ]
使用accuracy()和winkler_score()函数可以很容易计算:
google_fc |>
filter(.model == "Naive", Date == "2016-01-04") |>
accuracy(google_stock,
list(winkler = winkler_score), level = 80)
#> # A tibble: 1 × 4
#> .model Symbol .type winkler
#> <chr> <chr> <chr> <dbl>
#> 1 Naive GOOG Test 55.7
连续秩概率得分
通常我们对整个预测分布感兴趣,而不是特定的分位数或预测区间。在这种情况下,我们可以对(p)的所有值的分位数得分进行平均,以获得连续秩概率得分或CRPS(Gneiting & Katzfuss, 2014)。
在Google股票价格示例中,我们可以计算测试集中所有日期的平均CRPS值。CRPS值有点像从整个预测分布计算出的加权绝对误差,其中加权考虑了概率。
google_fc |>
accuracy(google_stock, list(crps = CRPS))
#> # A tibble: 3 × 4
#> .model Symbol .type crps
#> <chr> <chr> <chr> <dbl>
#> 1 Naive GOOG Test 26.5
#> 2 平均法 GOOG Test 76.7
#> 3 漂移法 GOOG Test 33.5
在这里,Naïve方法比漂移或均值方法提供更好的分布预测。
使用技能分数进行无标度比较
与点预测一样,能够比较不同尺度上跨系列的几种方法的分布预测准确性是很有用的。对于点预测,我们为此使用了比例误差。另一种方法是使用技能分数。这些可用于点预测准确性和分布预测准确性。
通过技能分数,我们计算了相对于某些基准方法的预测准确性度量。例如,如果我们使用Naïve方法作为基准,并使用漂移方法计算预测,我们可以计算漂移方法相对于Naïve方法的CRPS技能得分为
[ \frac{\text{CRPS}{\text{Naive}} - \text{CRPS}{\text{Drift}}}{\text{CRPS}_{\text{Naive}}}. ]
这给出了漂移方法比基于CRPS的Naïve方法改进的比例。使用accuracy()函数很容易计算。
google_fc |>
accuracy(google_stock, list(skill = skill_score(CRPS)))
#> # A tibble: 3 × 4
#> .model Symbol .type skill
#> <chr> <chr> <chr> <dbl>
#> 1 Naive GOOG Test 0
#> 2 平均法 GOOG Test -1.90
#> 3 漂移法 GOOG Test -0.266
当然,Naïve方法的技能分数是0,因为它无法自我改进。其他两种方法的CRPS值都比naive大,所以技能得分是负的;漂移方法方法比naive方法差26.6%。
skill_score()函数将始终为适当的基准预测计算CRPS,即使这些不包括在内 在“fable”对象中。当数据具有季节性时,使用的基准是季节性朴素法而不是Naïve方法。为确保相同的训练数据用于基准预测,重要的是提供给accuracy()函数的数据与训练数据同时开始。
skill_score()函数可用于任何准确度测量。例如,skill_score(MSE)提供了一种比较不同系列的MSE值的方法。然而,重要的是测试集足够大以允许可靠地计算误差度量,尤其是在分母中。出于这个原因,MASE或RMSSE通常是点预测准确性的首选无标度度量。
参考文献
Gneiting, T., & Katzfuss, M. (2014). Probabilistic forecasting.Annual Review of Statistics and Its Application,1(1), 125–151.DOI
Winkler, R. L. (1972). A decision-theoretic approach to interval estimation.Journal of the American Statistical Association,67(337), 187–191.DOI