R 从fable包预处理TSIBLE以运行时间序列模型

R 从fable包预处理TSIBLE以运行时间序列模型,r,fable-r,tsibble,R,Fable R,Tsibble,我试图在一些月度时间序列数据上运行一些模型。时间序列数据长度不相等,也不从/在同一个月开始/结束。我有一个数字月份列和一个数字年份列。我用这两个变量创建了一个时间序列,并用它制作了一个tsibble,这样我就可以使用fable包了。这就是我处理时间序列数据的方法 我在这里发布模拟数据 # Packages library(tidyverse) library(tsibble) library(fable) library(fabletools) # Simulated data id <

我试图在一些月度时间序列数据上运行一些模型。时间序列数据长度不相等,也不从/在同一个月开始/结束。我有一个数字月份列和一个数字年份列。我用这两个变量创建了一个时间序列,并用它制作了一个
tsibble
,这样我就可以使用
fable
包了。这就是我处理时间序列数据的方法

我在这里发布模拟数据

# Packages
library(tidyverse)
library(tsibble)
library(fable)
library(fabletools)

# Simulated data
id <- c(rep (222, 28), rep(111, 36), rep(555, 16))
year <- c(rep(2014, 12), rep(2015, 12), rep(2016, 4), 
          rep(2014, 12), rep(2015, 12), rep(2016, 12), 
          rep(2015, 12), rep(2016, 4))
mnt <- c(seq(1, 12, by = 1), seq(1, 12, by = 1), seq(1, 4, by = 1),
         seq(1, 12, by = 1), seq(1, 12, by = 1), seq(1, 12, by = 1),
         seq(1, 12, by = 1), seq(1, 4, by = 1))
value <- rnorm(80, mean = 123, sd = 50)
dataf <- data.frame(id, mnt, year, value)
将月份和年份相加

dataf %>% unite("time", mnt:year, sep = " ")
做一个泡泡

tsbl <- as_tsibble(dataf, index = time, key = id)
tsbl-tsbl%
模型(
arima=arima(值),
)
适合
#提前一个月预测
fc%
预测(h=1)
足球俱乐部
#精度测量

精度表在创建
time
列时,存在两个小问题。首先,您没有将结果重新分配回
dataf
dataframe,而只是将结果发布到控制台。解决此问题将修复您发布的错误

下一个问题是您需要一个兼容的数据类型。一个字符是不够的,您需要像
tsibble
函数
yearmonth()
这样的函数来完成任务。为此,您将看到我翻转了
unit()
调用的顺序

相关文章:

dataf <- dataf %>% unite("time", c(year, mnt), sep = " ") %>%
  mutate(time = yearmonth(time))
dataf%unite(“时间”,c(年份,mnt),sep=“”)%>%
变异(时间=年月(时间))
> tsbl <- as_tsibble(dataf, index = time, key = id)
Error: `var` must evaluate to a single number or a column name, not a function
Call `rlang::last_error()` to see a backtrace.
# Fitting arima 
fit <- tsbl %>%
  fill_gaps(b = 0) %>% 
  model(
    arima = ARIMA(value),
  )
fit

# One month ahead forecast
fc <- fit %>%
  forecast(h = 1)
fc

# Accuracy measure
accuracy_table <- accuracy(fit)
dataf <- dataf %>% unite("time", c(year, mnt), sep = " ") %>%
  mutate(time = yearmonth(time))