簡體   English   中英

如何使用ggplot迭代繪制auto.arima預測

[英]How to iteratively plot auto.arima forecasts using ggplot

我有以下數據:

df

   repo revrepo bankrate  CRR Callrate
1  9.00    6.75      7.0 8.00     7.49
2  8.75    6.50      7.0 7.50     8.03
3  8.50    6.50      7.0 7.50     7.24
4  8.50    6.50      7.0 7.50     7.19
5  8.50    6.50      7.0 7.50     6.94
6  8.50    6.50      7.0 7.50     7.30
7  8.50    6.50      6.5 7.50     7.40
8  8.50    6.50      6.5 5.75     6.97
9  8.50    6.50      6.5 5.50     7.08
10 8.50    6.50      6.5 5.50     6.63
11 8.50    6.50      6.5 5.50     6.73
12 8.00    6.00      6.5 5.50     6.97
13 8.00    6.00      6.5 5.50     6.58
14 8.00    6.00      6.5 5.50     6.90
15 8.00    5.75      6.5 5.00     6.04

我正在反復繪制ts,如下所示:

y=df
colnames <- dimnames(y)[[2]]

(plots<-lapply(df,function(x) autoplot(fit<-forecast(auto.arima(ts(x,start=c(2001,4),end = c(2002,6),frequency = 12))))+labs(x = 'Time', y = paste(colnames[i])) + ggtitle(paste(colnames[i],'over Time'))+  theme(plot.title = element_text(hjust = 0.5)) +
yaztheme::theme_yaz() ))

我沒有得到正確的地塊名稱。顯示其中一個地塊供參考:

在此處輸入圖片說明

是否有更好的方法來進行時間序列的迭代預測和預測的繪制。

如果我們需要相應的列名,請遍歷各列的順序

lst <- lapply(seq_along(df),function(i) {
autoplot(fit<-forecast(auto.arima(ts(df[[i]],start=c(2001,4),
                end = c(2002,6),frequency = 12))))+
         labs(x = 'Time', y = paste(colnames[i])) +
         ggtitle(paste(colnames[i],'over Time'))+ 
         theme(plot.title = element_text(hjust = 0.5))
  } 
)

lst[[5]]

在此處輸入圖片說明


或與for循環相同

lst <- vector('list', length(df))
for(i in seq_along(df)) {
  lst[[i]] <- autoplot(forecast(auto.arima(ts(df[[i]],
             start=c(2001,4),end = c(2002,6),frequency = 12))))+
           labs(x = 'Time', y = paste(colnames[i])) +
           gtitle(paste(colnames[i],'over Time'))+ 
           theme(plot.title = element_text(hjust = 0.5))

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM