在 tsibble 中设置索引

2024-01-05

您是否曾经回顾过自己的旧问题并感到有点尴尬?我刚刚做到了,现在我也做到了。在某些时候我可能会对这个有同样的感觉。

我正在尝试将我的预测工作转移到fable。在此过程中我尝试使用tsibble。以前与一个ts对象我只是设置了开始年份和频率。现在tsibble正在寻找日期对象。不过,我有一年两次的数据(秋季和春季学期)。而且变量是不规则的(我想保留)。Forecast准确地“预测”它做得很好。我的大学用 3 位数的年份和术语命名术语。因此,2019-2020 学年的秋季是 2204,其中 4 代表秋季。 2207年春天。

基本上,我无法在网上找到索引在不是日期对象意义上不规则的情况的示例?有什么提示吗?谢谢。

好吧,如果这会杀了我,我会尝试解决这个问题。我看到他们添加了一个有序因子作为可能的索引。所以我会尝试一下。

这是我陷入困境的可重现示例。

enroll <- data.frame(term = c(2194L, 2197L, 2204L, 2207L), 
                 ECO110 = c(518, 410, 537, 386), 
                 ECO120 = c(315, 405, 419, 401))

enroll.tb <- enroll %>% 
  mutate(term = ordered(term)) %>%
  select(term, starts_with("ECO")) %>%
  pivot_longer(-term, names_to = "class", values_to = "enroll")

enroll.tb <- as_tsibble(enroll.tb, key = class, index = term)

fc <-  enroll.tb %>% 
  model(arima = ARIMA()) %>%
  forecast(h = 2)

现在它让我制作 tsibble,但是寓言产生了错误:Error: Unsupported index type: logical

米切尔的出色回答below https://stackoverflow.com/a/59871498/1725889.

然而,似乎因素引发了更多问题,事实证明一切都还没有完全解决。 ARIMA 模型效果很好,而购买 ETS 则不行。

fc <-  enroll.tb %>% 
  model(ets = ETS()) %>%
  forecast(new_data = enroll.future)

抛出错误Error: A model specification is trained to a dataset using themodel()function.


这里的问题是你的索引变量是一个有序因子,并且forecast()不知道如何生成该指数的未来值。

我添加了一个更具信息性的错误(02fb2a https://github.com/tidyverts/fabletools/commit/02fb2a44fc02036c416b8443a04b65a8193b1f80),所以现在应该说:

fc <-  enroll.tb %>% 
  model(arima = ARIMA()) %>%
  forecast(h = 2)
#> Model not specified, defaulting to automatic modelling of the `enroll` variable.
#> Override this using the model formula.
#> Error: Cannot automatically create `new_data` from an factor/ordered time index. Please provide `new_data` directly.

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

正如现在的错误所示,要生成预测,您需要在中指定适当的因子水平new_data.


enroll.future <- tsibble(
  term = rep(ordered(c(2214L, 2217L)), 2),
  class = rep(c("ECO110", "ECO120"), each = 2),
  index = term, key = class)

fc <-  enroll.tb %>% 
  model(arima = ARIMA()) %>%
  forecast(new_data = enroll.future)
#> Model not specified, defaulting to automatic modelling of the `enroll` variable.
#> Override this using the model formula.
fc
#> # A fable: 4 x 5 [1]
#> # Key:     class, .model [2]
#>   class  .model term  enroll .distribution
#>   <chr>  <chr>  <ord>  <dbl> <dist>       
#> 1 ECO110 arima  2214    532. N(532, 1380) 
#> 2 ECO110 arima  2217    385. N(385, 1380) 
#> 3 ECO120 arima  2214    385  N(385, 2237) 
#> 4 ECO120 arima  2217    385  N(385, 2237)

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

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

在 tsibble 中设置索引 的相关文章

  • 如何按时间间隔匹配数据帧?

    这是我从数据记录器导入原始数据时经常出现的问题 温度记录仪设置为每十分钟记录一次温度 单独的气体记录仪设置为记录最后十分钟间隔内使用的气体 我想将这两个记录器的数据合并到一个数据框中进行绘图和分析 但时间并不完全一致 我希望每十分钟的时间段
  • 如何纠正 data.frame 上的字符编码

    我有一个像这样的数据框 data names lt data frame DATA c 1 5 rownames data names lt c IV xc1N JOS xc9 LUC xcdA RAM xd3N TO xd1O data
  • 为什么 sapply 的缩放速度比样本大小的 for 循环慢?

    假设我想采用向量 X 2 1 N 并将 e 计算为每个元 素的指数 是的 我认识到最好的方法就是通过向量化 exp X 但这样做的目的是将 for 循环与 sapply 进行比较 我通过逐步尝试三种方法 一种使用 for 循环 两种以不同方
  • 行对名称中具有特定模式的列求和

    我有一个像这样的数据表 DT lt ata table data table ref rep 3L 4L nb 12 15 i1 c 3 1e 05 0 044495 0 82244 0 322291 i2 c 0 000183 0 155
  • 更新 R6 对象实例中的方法定义

    如何更新 R6 类实例的方法定义 正如我所期望的 S3 使用当前的方法定义 对于 R5 参考类 我可以使用 myInstance myInstance copy 在 R6 中 我尝试了 myInstance myInstance clone
  • 在r中的某个阈值处破坏 cumsum() 函数

    例如我有以下代码 cumsum 1 100 我想打破它 如果一个元素 i 1 大于3000 我怎样才能做到这一点 因此 而不是这个结果 1 1 3 6 10 15 21 28 36 45 55 66 78 91 105 120 136 15
  • R Shinydashboard 自定义 CSS 到 valueBox

    我一直在尝试将 valueBox 的颜色更改为自定义颜色 超出 validColors 中可用的颜色 但一直无法这样做 我知道有一种方法可以使用标签来包含自定义 CSS 但是我无法将它们放在正确的位置 ui lt dashboardPage
  • 需要在R中跳过不同数量的行

    我正在使用以下代码来处理我的数据 但最近我意识到使用skip 27 在数据开始之前跳过存储在我的文件中的信息 不是一个好的选择 因为每个文件中要跳过的行数不同我的目标是读取存储在多个文件夹中的各种txt文件 并非所有文件都有相同的列数 列的
  • case_when 与部分字符串匹配和 contains()

    我正在使用一个数据集 其中有许多名为 status1 status2 等的列 在这些列中 它表示某人是否豁免 完整 注册等 不幸的是 豁免投入并不一致 这是一个示例 library dplyr problem lt tibble perso
  • R:如何将字符/数字转为1,NA转为0?

    有没有一种简单的方法可以将列的字符 数字变为 1 将 NA 变为 0 这里有一些示例数据 我想将其应用于 3 4 structure list Item Code c 176L 187L 191L 201L 217L 220L Item x
  • 如何在 R 中的 dygraph 标题中使用 UTF-8 字符

    使用 Rstudio Windows8 当我使用 dygraph 函数绘制时间序列时 在尝试在主标题中使用 UTF 8 字符时遇到问题 library dygraphs dygraph AirPassengers main T tulo 这
  • 扩展数据框以使其具有与原始行中两列的范围一样多的行[重复]

    这个问题在这里已经有答案了 我有一个数据框如下 structure list symbol c u n v i a start c 9L 6L 10L 8L 7L end c 14L 15L 12L 13L 11L Names c symb
  • 如何动态地将 sliderInput 添加到闪亮的应用程序中?

    使用闪亮 我上传一个 csv 文件 并根据列名称 我需要向 ui 添加滑块 sidebarPanel fileInput file1 Upload CSV File to Create a Model accept c text csv t
  • 计算 R 行中的非零条目数

    我有以下类型的数据 mode1 mode2 mode3 1 8 1 0 2 0 0 0 3 6 5 4 4 1 2 3 5 1 1 1 数据使用dput structure list mode1 c 8L 0L 6L 1L 1L mode2
  • 如何像在facet_grid中一样在facet_wrap中定位条带标签

    我想在使用时删除多余的条带标签facet wrap 并用两个变量进行分面 并且都是自由尺度的 例如 这个facet wrap下图的版本 library ggplot2 dt lt txhousing txhousing year in 20
  • StatET调试工具

    我想我只是很密集 但我似乎无法弄清楚如何在 Eclipse 中的 R 中使用调试工具 StatET 插件 有人有关于这个主题的任何提示或教程吗 StatET 2 00 现在对高级 可视化调试提供实验性支持 需要 Eclipse 3 6 或
  • 在 Google Colab 上的 R 笔记本中安装 python 库

    我正在尝试在 Google Colab 上的 R 笔记本中安装 python 库 为此我使用 reticulate 包 library reticulate py install pandas 但我得到的结果是这个错误 Error coul
  • 安装 2.15 后 ggplot2 中的 alpha 通道不起作用

    更新到 R 2 15 后 ggplot 中的 alpha 通道似乎不再起作用 plot rnorm 100 rnorm 100 bg cc000055 pch 21 工作得很好但是 qplot rnorm 100 rnorm 100 col
  • 如何在R中分离两个图?

    每当我运行这段代码时 第一个图就会简单地覆盖前一个图 R中有没有办法分开得到两个图 plot pc title main abc xlab xx ylab yy plot pcs title main sdf xlab sdf ylab x
  • 闪亮井板宽度

    library shiny library shinydashboard ui lt dashboardPage dashboardHeader dashboardSidebar dashboardBody wellPanel tags d

随机推荐