我将复习otext Forecasting:Principles and Practice,在第7.1章中,作者编写了一个简单的代码:
us_change %>%
model(TSLM(Consumption ~ Income)) %>%
report()
us_change数据可以通过fpp3包在这里找到。
我正试图将此应用于我自己的数据集,使用圣路易斯零售销售和可支配收入的经济数据。我有一个2013年1月至2021年6月系列的窗口(以防有人想复制我所拥有的(。这是我的代码:
library(tidyverse)
library(readxl)
library(dplyr)
library(report)
library(tsibble)
library(fpp3)
library(fable)
data("us_change")
rs <- read_excel("Retail Sales.xlsx",
sheet = "Retail Sales")
rdpi <- read_excel("RDPI.xlsx",
sheet = "RDPI - Edit")
us_change %>%
model(TSLM(Consumption ~ Income)) %>%
report()
z <- cbind(rs,rdpi)
# both data sets had a "Date" column
z <- z[, !duplicated(colnames(z))]
z <- z %>%
as_tsibble(
key = c(`Retail Sales`,RDPI),
index = Date)
z <- z[order(z$Date),]
z %>%
model(TSLM(`Retail Sales` ~ RDPI)) %>%
report()
最后一行产生";FUN(X[[i]],…(中的错误:找不到对象"Retail Sales";。所以我运行
head(z)
class(us_change)
class(z)
class(us_change$Consumption)
class(z$`Retail Sales`)
"Retail Sales" %in% names(z)
其产生:
> head(z)
# A tsibble: 6 x 3 [?] <UTC>
# Key: Retail Sales, RDPI [6]
Date `Retail Sales` RDPI
<dttm> <dbl> <dbl>
1 2013-01-01 00:00:00 333663 12259.
2 2013-02-01 00:00:00 332471 12225.
3 2013-03-01 00:00:00 374171 12262.
4 2013-04-01 00:00:00 362978 12299
5 2013-05-01 00:00:00 389709 12359.
6 2013-06-01 00:00:00 369355 12362.
> class(us_change)
[1] "tbl_ts" "tbl_df" "tbl" "data.frame"
> class(z)
[1] "tbl_ts" "tbl_df" "tbl" "data.frame"
> class(us_change$Consumption)
[1] "numeric"
> class(z$`Retail Sales`)
[1] "numeric"
> "Retail Sales" %in% names(z)
[1] TRUE
他们是同一个类,我验证了z中存在零售销售列。我遗漏了什么导致了这个错误?我额头上的皱纹比我想承认的要长,所以我很感激任何帮助,谢谢!
当您将Retail Sales
设置为键时,它不再是一个选项。如果您不使用as_tsibble()
设置任何参数,它将正常工作。
z <- z %>% as_tsibble()
z %>%
model(TSLM(`Retail Sales` ~ RDPI)) %>%
report()