r中id的autoarima
我有一个带有ID的df,一个月的日期和该月的值。下面是一个例子:r中id的autoarima,r,time-series,arima,R,Time Series,Arima,我有一个带有ID的df,一个月的日期和该月的值。下面是一个例子: df<-tibble::tribble( ~ID, ~MonthlyDate, ~value, 1L, "2018-09-01", -29.884, 1L, "2018-10-01", 16.143, 1L, "2018-11-01", 3.785, 1L, "2018-12-01", -264,
df<-tibble::tribble(
~ID, ~MonthlyDate, ~value,
1L, "2018-09-01", -29.884,
1L, "2018-10-01", 16.143,
1L, "2018-11-01", 3.785,
1L, "2018-12-01", -264,
1L, "2019-01-01", -308,
1L, "2019-02-01", 712,
1L, "2019-03-01", -260,
1L, "2019-04-01", -300,
1L, "2019-05-01", -149,
1L, "2019-06-01", -291,
1L, "2019-07-01", -284,
1L, "2019-08-01", -158,
1L, "2019-09-01", -272,
1L, "2019-10-01", -289,
1L, "2019-11-01", -1.268,
2L, "2016-12-01", -489,
2L, "2017-01-01", 7.606,
2L, "2017-02-01", -458,
2L, "2017-03-01", 8.603,
2L, "2017-04-01", 6.298,
2L, "2017-05-01", 2.598,
2L, "2017-06-01", 9.14,
2L, "2017-07-01", 6.004,
2L, "2017-08-01", 3.684,
2L, "2017-09-01", -1.815,
2L, "2017-10-01", 12.487,
2L, "2017-11-01", -1.288,
2L, "2017-12-01", 3.213,
3L, "2018-01-01", 3.447,
3L, "2018-02-01", 3.986,
3L, "2018-03-01", 8.08201,
3L, "2018-04-01", 2.033,
3L, "2018-05-01", 4.401,
3L, "2018-06-01", 3.482,
3L, "2018-07-01", 4.04,
3L, "2018-08-01", 1.607,
3L, "2018-09-01", 694,
3L, "2018-10-01", 4.026,
3L, "2018-11-01", -176,
3L, "2018-12-01", -41,
3L, "2019-01-01", 815,
3L, "2019-02-01", 1.743,
3L, "2019-03-01", -3.433,
3L, "2019-04-01", 4.167,
3L, "2019-05-01", 3.792,
3L, "2019-06-01", -293,
3L, "2019-07-01", -4.666,
3L, "2019-08-01", 835,
3L, "2019-09-01", 5.434,
3L, "2019-10-01", 4.636,
3L, "2019-11-01", 2.731
)
df
# A tibble: 51 x 3
# ID MonthlyDate value
# <int> <chr> <dbl>
#1 1 2018-09-01 -29.9
#2 1 2018-10-01 16.1
#3 1 2018-11-01 3.78
#4 1 2018-12-01 -264
#5 1 2019-01-01 -308
#6 1 2019-02-01 712
#7 1 2019-03-01 -260
#8 1 2019-04-01 -300
#9 1 2019-05-01 -149
#10 1 2019-06-01 -291
但我犯了个错误
as.ts(x)中的错误:参数“y”不存在,没有默认值
我不知道如何将它按id分组,然后转换为ts并应用auto.arima。有人知道怎么做吗?谢谢 这正是
fable
包的设计目的
库(tidyverse)
图书馆(TSIBLE)
图书馆(寓言)
df%
变异(
MonthlyDate=年月(MonthlyDate)
) %>%
as_tsible(索引=月日,键=ID)%>%
填补空白()
df
#>#一个气泡:51 x 3[1M]
#>#Key:ID[3]
#>ID月值
#>
#>2018年9月1日至9月29日
#>2018年10月16日
#>3.1 2018年11月3日78
#>2018年12月4日至264日
#>5.1 2019年1月-308日
#>6.1 2019年2月712日
#>7.1 2019年3月-260日
#>8.1 2019年4月-300日
#>9.1 2019年5月-149日
#>2019年6月10日至291日
#>#……还有41行
df%>%
模型(arima=arima(值~PDQ(P=0,Q=0,D=0)))%>%
预测(h=“12个月”)
#>#寓言:36 x 5[1M]
#>#Key:ID、.model[3]
#>ID.模型月份值.分布
#>
#>1 arima 2019年12月-125日。N(-12569007)
#>2.1 arima 2020年1月-125日。N(-12569007)
#>3.1 arima 2020年2月-125日。N(-12569007)
#>4.1 arima 2020年3月-125日。N(-12569007)
#>5.1 arima 2020年4月-125日。N(-12569007)
#>6.1 arima 2020年5月-125日。N(-12569007)
#>7.1 arima 2020年6月-125日。N(-12569007)
#>8.1 arima 2020年7月-125日。N(-12569007)
#>9.1 arima 2020年8月-125日。N(-12569007)
#>10.1 arima 2020年9月-125日。N(-12569007)
#>#…还有26行
由(v0.3.0)于2020年3月22日创建
请参阅以了解更多信息,或者。如何在不按组应用的情况下直接应用
auto.arima()
!只是一个问题,模型(arima=arima(value~PDQ(P=0,Q=0,D=0))和auto.arima做的一样吗?下面是相同的代码ARIMA(值~PDQ(P=0,Q=0,D=0))
相当于auto.ARIMA(值,季节性=FALSE)
。我只关闭了季节性,以防止样本数据出现错误。有了真实数据,它可能在季节性开启的情况下正常工作。
df2<-split(df,df$ID)
lapply(df2,auto.arima())