R如何计算预测包中的预测区间?

机器算法验证 r 预测 蒙特卡洛 预测区间
2022-03-25 20:26:56

我有一个大型数据集,其中包含我想预测未来的不同因素。这些预测我稍后将用作蒙特卡洛模拟的输入。我的想法是对不同的变量使用 arima 预测。随后,我将使用得到的预测区间作为蒙特卡罗模拟的输入。

使用 R,(我认为)我通过使用以下内容得到我想要的。

首先,我设置了一些参数 FC_years <- 4 FC_boundaries <- 68 # 这将是 1 sd

接下来,通过以下方式进行预测:fit <- auto.arima(POP) forecast <- data.frame(forecast(fit,FC_years,level=FC_boundaries))

为了将这些结果用于 MC 模拟,现在对我来说非常重要的是了解 R 如何计算预测区间(我已经搜索了很长时间,但我无法得到明确的答案),并且这个间隔是如何分布的(我认为这是正常的,但同样,我无法得到明确的答案)。

例如,可以使用以下数据集:

1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 68235 72498 76700 80326 83195 85447 87276 89004 90858 92894 94995 97015 98742 100031 100830 101219 101344 101418 101597 101932 102384 102911

任何人都可以给我任何提示吗?

2个回答

除非您使用预测函数的 bootstrap = TRUE 选项,否则预测包的 ARIMA 间隔是通过将 ARIMA 对象传递给 predict() 来计算的。区间假定残差是正态分布的。如果您查看 predict.Arima() 的 R 文档,您会发现它使用 KalmanForecast() 来生成它们。

有关如何手动计算 ARIMA 模型的预测区间的详细说明,请参阅以下链接: https ://onlinecourses.science.psu.edu/stat510/node/66

该代码可在 Rob Hyndman 的 github 页面上找到: https ://github.com/robjhyndman/forecast/blob/master/R/arima.R

如果您设置了 lambda(正在使用 Box-Cox 变换),则结果预测区间在点估计周围正常的一个例外情况是,在这种情况下,它们在反向变换后将不正常。

https://www.otexts.org/fpp/2/7进一步详细说明。

95% 的预测区间是yt±1.96σ

80% 的预测区间是yt±1.28σ

在哪里yt是一个预测值并且σ“是对预测分布的标准差的估计”。