Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R fable中的预测功能是否提供一步预测?_R_Forecasting_Fable R - Fatal编程技术网

R fable中的预测功能是否提供一步预测?

R fable中的预测功能是否提供一步预测?,r,forecasting,fable-r,R,Forecasting,Fable R,如上所述,在测试集中进行一步预测是避免随着预测范围的增加而不可避免地增加方差的一种方法。该节中提到的方法是使用已训练的模型对测试集执行一步预测,用于预测包。是否有类似的方法使用较新的fable软件包对测试数据执行一步预测?也许描述的new_data参数可以处理这个问题,但我不确定,因为h=24和new_data=x_test的预测如下所示: > library(fable) > library(fabletools) > x <- USAccDeaths %>% +

如上所述,在测试集中进行一步预测是避免随着预测范围的增加而不可避免地增加方差的一种方法。该节中提到的方法是使用已训练的模型对测试集执行一步预测,用于
预测
包。是否有类似的方法使用较新的
fable
软件包对测试数据执行一步预测?也许描述的
new_data
参数可以处理这个问题,但我不确定,因为
h=24
new_data=x_test
的预测如下所示:

> library(fable)
> library(fabletools)
> x <- USAccDeaths %>%
+   as_tsibble()
> x
# A tsibble: 72 x 2 [1M]
      index value
      <mth> <dbl>
 1 1973 Jan  9007
 2 1973 Feb  8106
 3 1973 Mar  8928
 4 1973 Apr  9137
 5 1973 May 10017
 6 1973 Jun 10826
 7 1973 Jul 11317
 8 1973 Aug 10744
 9 1973 Sep  9713
10 1973 Oct  9938
# … with 62 more rows
> x_train <- x %>% filter(year(index) < 1977)
> x_test <- x %>% filter(year(index) >= 1977)
> fit <- x_train %>% model(arima = ARIMA(log(value) ~ pdq(0, 1, 1) + PDQ(0, 1, 1)))
> fit
# A mable: 1 x 1
                      arima
                    <model>
1 <ARIMA(0,1,1)(0,1,1)[12]>
> nrow(x_test)
[1] 24
> forecast(fit, h = 24)$.mean
 [1]  7778.052  7268.527  7831.507  7916.845  8769.478  9144.790 10004.816  9326.874  8172.226
[10]  8527.355  8015.100  8378.166  7692.356  7191.343  7751.466  7839.085  8686.833  9062.247
[19]  9918.487  9250.101  8108.202  8463.933  7958.667  8322.497
> forecast(fit, new_data = x_test)$.mean
 [1]  7778.052  7268.527  7831.507  7916.845  8769.478  9144.790 10004.816  9326.874  8172.226
[10]  8527.355  8015.100  8378.166  7692.356  7191.343  7751.466  7839.085  8686.833  9062.247
[19]  9918.487  9250.101  8108.202  8463.933  7958.667  8322.497
>库(寓言)
>图书馆(fabletools)
>x%
+as_tsibble()
>x
#A t气泡:72 x 2[1M]
索引值
1973年1月1日9007年1月
1973年2月2日8106
1973年3月3日8928
1973年4月4日1937
1973年5月5日2017年5月10日
1973年6月6日10826
1973年7月11317日
1973年8月8日10744
1973年9月9日9713
1973年10月9938日
#…还有62行
>x_系列%过滤器(年份(指数)<1977年)
>x_试验%过滤器(年份(指数)>=1977)
>拟合%模型(arima=arima(对数(值)~pdq(0,1,1)+pdq(0,1,1)))
>合身
#一个mable:1x1
阿里玛
1.
>nrow(x_测试)
[1] 24
>预测(拟合,h=24)$平均值
[1]  7778.052  7268.527  7831.507  7916.845  8769.478  9144.790 10004.816  9326.874  8172.226
[10]  8527.355  8015.100  8378.166  7692.356  7191.343  7751.466  7839.085  8686.833  9062.247
[19]  9918.487  9250.101  8108.202  8463.933  7958.667  8322.497
>预测(拟合,新数据=x检验)$平均值
[1]  7778.052  7268.527  7831.507  7916.845  8769.478  9144.790 10004.816  9326.874  8172.226
[10]  8527.355  8015.100  8378.166  7692.356  7191.343  7751.466  7839.085  8686.833  9062.247
[19]  9918.487  9250.101  8108.202  8463.933  7958.667  8322.497
答案和代码
{forecast}
包中许多模型可用的
model
参数相当于
{fable}
包中的
refit()
方法。与未来数据一起使用时,它可用于从模型生成多个一步预测

库(预测)
适合%
auto.arima()
拟合检验%
Arima(模型=拟合)
精度(拟合检验)
#>我是我的朋友
#>训练集22.45098167.064885.597240.2382773 0.9327587 0.3298545
#>ACF1
#>训练集-0.0968173
图书馆(寓言)
图书馆(dplyr)
美国意外死亡。型号。键入ME RMSE MAE MPE MAPE MASE RMSSE ACF1
#>                        
#>1 ARIMA(价值)培训22.5 167。85.6 0.238 0.933 0.330 0.490 -0.0968
由(v0.3.0)于2020年10月13日创建

解释 模型的
fitted()。然而,有一个陷阱——模型的估计参数是基于整个训练集的,因此训练精度比预期的要好(模型包含一些关于其拟合的未来的信息)


forecast()
函数用于生成模型从未见过的未来时间点的预测。您可以使用
forecast(,h=1)
生成单个一步预测。但是,这只生成一个预测。相反,我们希望生成一个提前一步的预测,向模型中添加一个新观测值,然后在新观测值之外生成另一个提前一步的预测(重复,直到数据用完)


这就是
refit()
功能有用的地方。它接受现有模型,并将其应用于新数据集。此重新装配过程涉及对数据(已装配的
fitted()
值)进行一步预测。通过设置
reestimate=FALSE
,模型的估计系数将不会更新以更好地适应新的“未来”数据。这解决了模型系数的问题,该模型系数包含有关我们正在测试预测精度的未来值的一些信息。

“相反,我们希望生成一个提前一步的预测,向模型添加一个新观测…”因此我们得到了提前一步的预测,但是,添加到模型中的新观察值是来自测试集的实际结果值,还是我们刚刚预测的值?“新观察值”是重新安装模型时的实际观察值。这是允许您生成多个提前一步的预测的原因,因为它们比实际观测数据早一步。这与前面的多个步骤不同,在多个步骤中,您的最佳猜测是预测值。