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

2024-02-28

如上所述here https://otexts.com/fpp2/forecasting-on-training-and-test-sets.html,在测试集中进行一步预测是避免随着预测范围的增加而不可避免地增加方差的一种方法。该部分提到的是使用已经训练好的模型对测试集执行一步预测的方法,对于forecast包裹。是否有类似的方法使用较新的方法对测试数据执行一步预测fable包裹?或许是new_data参数描述在这里,例如 https://fable.tidyverts.org/reference/forecast.ARIMA.html处理这个问题,但我不确定,因为两者的预测h = 24 and 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

答案和代码

The model参数可用于许多模型{forecast}包相当于refit()方法中的{fable}包裹。当与未来数据一起使用时,它可用于从模型生成多个一步预测。

library(forecast)
fit <- head(USAccDeaths, -24) %>% 
  auto.arima()
fit_test <- tail(USAccDeaths, 24) %>% 
  Arima(model = fit)
accuracy(fit_test)
#>                    ME     RMSE      MAE       MPE      MAPE      MASE
#> Training set 22.45098 167.0648 85.59724 0.2382773 0.9327587 0.3298545
#>                    ACF1
#> Training set -0.0968173

library(fable)
library(dplyr)
us_accidental_deaths <- as_tsibble(USAccDeaths)
fit <- head(us_accidental_deaths, -24) %>% 
  model(ARIMA(value))
fit_test <- refit(fit, tail(us_accidental_deaths, 24), reestimate = FALSE)
accuracy(fit_test)
#> # A tibble: 1 x 10
#>   .model       .type       ME  RMSE   MAE   MPE  MAPE  MASE RMSSE    ACF1
#>   <chr>        <chr>    <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>   <dbl>
#> 1 ARIMA(value) Training  22.5  167.  85.6 0.238 0.933 0.330 0.490 -0.0968

Created on 2020-10-13 by the reprex package https://reprex.tidyverse.org (v0.3.0)

解释

The fitted()模型的值是一步预测,可用于评估“训练准确性”性能(训练数据的预测准确性)。然而有一个问题 - 模型的估计参数基于整个训练集,因此训练精度比预期的要好(模型包含有关其拟合的未来的一些信息)。

The forecast()函数用于生成模型从未见过的未来时间点的预测。您可以使用以下方法生成单个一步预测forecast(<mable>, h = 1)。然而,这只能产生一个预测。相反,我们希望生成一个超前预测,向模型添加一个新观测值,然后在该新观测值之外生成另一个超前预测(重复操作,直到用完数据)。

这就是refit()功能很有用。它采用现有模型,并将其应用到新数据集。这一改装过程涉及计算数据的一步预测(fitted()值)。通过设置reestimate = FALSE,模型的估计系数将不会更新以更好地适应新的“未来”数据。这解决了模型系数的问题,其中包含有关我们正在测试预测准确性的未来值的一些信息。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

fable 中的预测功能是否提供一步预测? 的相关文章

  • 使用神经网络包进行多项分类

    这个问题应该很简单 但文档没有帮助 我正在使用 R 我必须使用neuralnet多项式分类问题的包 所有示例均针对二项式或线性输出 我可以使用二项式输出进行一些一对一的实现 但我相信我应该能够通过使用 3 个单元作为输出层来做到这一点 其中
  • R 中的点图每行有多个值

    我有以下 R 输入文件 car 1 car 2 car 3 car2 1 car2 2 car2 3 然后 我使用以下命令来绘制图表 autos data 点图 autos data V2 autos data V1 但这将每个汽车和 ca
  • 将模式的所有元素与向量以相同的顺序匹配

    我创建了一个函数yes seq需要两个参数 一个模式pat和数据dat 该函数以相同的顺序查找数据中是否存在模式 例如 dat lt letters 1 10 dat 1 a b c d e f g h i j pat lt c a c g
  • 如何不显示 ggplot 轴上的所有标签?

    I m trying to using ggplot2 to plot this But as you can see on the x axis you can t read anything 那么如何在 x 轴上显示每 10 年的值呢
  • R 无法回忆起内存中的对象

    我正在构建一个包含多个步骤的函数 其中每个步骤都会创建一个对象 某个步骤失败 temp3 并且无法找到前面的步骤对象 错误 未找到对象 temp2 我不知道为什么 我有类似的函数 遵循完全相同的结构 每个步骤都遵循先前创建的对象 在函数内
  • 如何对范围内的行进行分组并考虑第三列?

    我有一个遗传数据集 我想对基因组中物理上靠近的遗传变异 行进行分组 我想对每条染色体基因组中某些点范围内的基因进行分组 chrom 我的 点 数据集包含变体 行需要在一定范围内的位置 如下所示 chrom low high 1 500 17
  • 使用矢量相应地更改传单线条的颜色

    无论如何 是否可以根据某些变量的值更改传单线条的颜色 我用谷歌搜索 发现了这个link http hgoebl github io Leaflet MultiOptionsPolyline demo 然而 我想知道是否有一种简单的方法可以在
  • 如果值大于或小于,则替换数据框中的值

    我在 R 中操作数据帧时遇到问题 这是 R 中的基本内容 但我找不到执行此类操作的最佳命令 虚拟示例 Var1 20 300 39 Var2 49 23 91 Var3 0 239 210 我怎样才能用10如果值小于 则在第 2 列中10
  • Matlab 中是否有相当于 R 的 dput() 的函数?

    Matlab 中是否有相当于 R 的 dput 的函数 dput 将 R 对象的 ASCII 文本表示形式写入文件或连接 UPDATE 1 添加了递归和对单元格的支持 UPDATE 2 添加了对结构的支持 UPDATE 3 增加了对逻辑 整
  • ggplot:类似于scale_color_steps()的有序因子的色标

    With scale color steps 我们可以通过设置low和high争论 一个例子 df lt data frame x rnorm 99 y rnorm 99 col rnorm 99 ggplot df aes x y col
  • 在 R 中计算大矩阵的零空间

    我找不到任何函数或包来计算 a 的零空间或 QR 分解 bigmatrix from library bigmemory 在 R 中 例如 library bigmemory a lt big matrix 1000000 1000 typ
  • R xts 对象中从每日时间序列到每周时间序列

    我正在使用 Zoo 和 xts 包来分析财务数据 ts 包不太合适 因为金融系列有周末 没有可用数据 我读到了 xts 包中可用的 apply 函数 apply daily x FUN apply weekly x FUN apply mo
  • 按新年拆分日期行

    我有来自一家医院的包含许多变量的数据 以及每行的起始日期和截止日期 这告诉我们每行何时 有效 每行的有效期最长为一年 test data frame ID c 10 10 10 12 12 Disease c P P P D P Pass
  • 是否可以创建根据输入对象名称自行命名的列表?

    能够创建 R 列表对象而无需指定每个元素的名称对我来说非常有帮助 例如 a1 lt 1 a2 lt 20 a3 lt 1 20 b lt list a1 a2 a3 inherit name TRUE gt b a1 1 1 a2 1 20
  • 使用栅格包下载 SRTM 数据?

    我正在尝试使用 获取 SRTM 数据 raster R 中的包 但一旦我选择SRTM在 getData 命令中 我会收到以下错误 library raster srtm lt getData SRTM lon 16 lat 48 tryin
  • 如何自动替换多个文件的文本内容中的字符?

    我有一个文件夹 myfolder包含许多乳胶表 我需要替换其中每个字符 即替换任何minus sign by an en dash 只是为了确定 我们正在替换连字符INSIDE该文件夹中的所有 tex 文件 我不关心 tex 文件名 手动执
  • R 中 optim() 的优化(L-BFGS-B 需要“fn”的有限值)

    我在 R 中使用 optim 来求解涉及积分的可能性时遇到一些问题 我收到一条错误消息 optim par c 0 1 0 1 LLL method L BFGS B lower c 0 L BFGS B 需要 fn 的有限值 中的错误 下
  • 更快地评估从右到左的矩阵乘法

    我注意到以二次形式评估矩阵运算右到左明显快于左到右在 R 中 取决于括号的放置方式 显然它们都执行相同的计算量 我想知道为什么会这样 这与内存分配有什么关系吗 A 5000 5000 B 5000 2 A matrix runif 5000
  • R中的for循环和if函数

    我正在用 R 中的 if 函数编写一个循环 表格如下 ID category 1 a 1 b 1 c 2 a 2 b 3 a 3 b 4 a 5 a 我想使用 for 循环和 if 函数添加另一列来计算每个分组的 ID 如下所示的计数列 I
  • R - 加速近似日期匹配。 idata.frame?

    我正在努力有效地执行两个数据帧之间的 关闭 日期匹配 这个问题探索了一个解决方案 使用idata frame来自plyr包 但我也对其他建议的解决方案感到非常满意 这是两个数据框的非常简单的版本 sampleticker lt data f

随机推荐