我尝试使用循环for()来预测我使用ARIMA的所有数据,但是我得到了一个错误。
请参见以下脚本:
library(forecast)
Exval<-c("CLI", "SPY", "USDEUR", "CPI", "CONSCONF", "FEDFUNDS", "HOUST", "UNRATE", "INDPRO", "VIX")
fcst<-c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
for(i in Exval)
{for (y in fcst){
fit_arima<-auto.arima(DATA$i,d=1,D=1,stepwise = FALSE,approximation = FALSE, trace = TRUE)
y<-forecast(fit_arima,h=36)
print(summary(y))}}Error in ts(x) : 'ts' object must have one or more observations
在我看来,错误来自于i。循环立即执行next i,而许多观察必须在相同的I上进行。例如,当我不使用循环时,结果是:
> fit_arima<-auto.arima(DATA$VIX,d=1,D=1,stepwise = FALSE,approximation = FALSE, trace = TRUE)
ARIMA(0,1,0) : 2017.494
ARIMA(0,1,0) with drift : 2019.493
ARIMA(0,1,1) : 2014.853
ARIMA(0,1,1) with drift : 2016.861
ARIMA(0,1,2) : 1997.6
ARIMA(0,1,2) with drift : 1999.6
ARIMA(0,1,3) : 1991.777
ARIMA(0,1,3) with drift : 1993.766
ARIMA(0,1,4) : 1992.797
ARIMA(0,1,4) with drift : 1994.786
ARIMA(0,1,5) : 1994.604
ARIMA(0,1,5) with drift : 1996.598
ARIMA(1,1,0) : 2016.692
ARIMA(1,1,0) with drift : 2018.701
ARIMA(1,1,1) : 1990.448
ARIMA(1,1,1) with drift : 1992.359
ARIMA(1,1,2) : 1989.871
ARIMA(1,1,2) with drift : 1991.819
ARIMA(1,1,3) : 1991.932
ARIMA(1,1,3) with drift : 1993.892
ARIMA(1,1,4) : 1993.856
ARIMA(1,1,4) with drift : 1995.819
ARIMA(2,1,0) : 2007.087
ARIMA(2,1,0) with drift : 2009.103
ARIMA(2,1,1) : 1989.959
ARIMA(2,1,1) with drift : 1991.912
ARIMA(2,1,2) : 1991.932
ARIMA(2,1,2) with drift : 1993.894
ARIMA(2,1,3) : Inf
ARIMA(2,1,3) with drift : Inf
ARIMA(3,1,0) : 2002.725
ARIMA(3,1,0) with drift : 2004.75
ARIMA(3,1,1) : 1991.889
ARIMA(3,1,1) with drift : 1993.845
ARIMA(3,1,2) : Inf
ARIMA(3,1,2) with drift : Inf
ARIMA(4,1,0) : 2002.643
ARIMA(4,1,0) with drift : 2004.677
ARIMA(4,1,1) : 1993.877
ARIMA(4,1,1) with drift : 1995.839
ARIMA(5,1,0) : 2002.835
ARIMA(5,1,0) with drift : 2004.879
Best model: ARIMA(1,1,2)然后,我想问你们,我怎样才能做一个关于观察序列的循环。
提前谢谢你。
亚历克斯
发布于 2022-03-07 15:19:04
不能使用DATA$i引用数据帧的列,其中i是字符串。相反,使用DATA[[i]]作为向量提取列。
https://stackoverflow.com/questions/71382725
复制相似问题