3

使用数据 UKDriverDeaths

尝试使用 Holt-Winters 预测函数和 ggplot()。

基本上再现了ggplot中的数据。

data('UKDriverDeaths')    
past <- window(UKDriverDeaths, end = c(1982, 12))
hw <- HoltWinters(past)
pred <- predict(hw, n.ahead = 10)
plot(hw, pred, ylim = range(UKDriverDeaths))
lines(UKDriverDeaths)

在此处输入图像描述

我想根据实际数据展示 holt winters 从 1983 年开始的预测。2个问题是:

1) ggplot 不理解 ts 数据。

2)使用 HoltWinters() 使用 ts 数据,而不是 zoo(日期或 xts)。我需要在切割点显示预测和实际数据(通常 + geom_line(aes()) 这样做)

如果置信区间是可能的,那就太好了。

非常感谢,完全卡住了

4

1 回答 1

3

我正在使用xts自动合并数据。

library(xts)
ts_pred <- ts(c(hw$fitted[, 1], pred), start = 1970, frequency = 12)
df <- merge(as.xts(ts_pred), as.xts(UKDriverDeaths))
names(df) <- c("predicted", "actual")
ggplot(df, aes(x=as.POSIXct(index(df)))) + 
  geom_line(aes(y=predicted), col='red') + 
  geom_line(aes(y=actual), col='black') + 
  theme_bw() +
  geom_vline(xintercept=as.numeric(as.POSIXct("1982-12-01")), linetype="dashed") + 
  labs(title="Holt-Winters filtering\n", x="Time", y="Observed / Fitted") + 
  theme(plot.title = element_text(size=18, face="bold"))

在此处输入图像描述

于 2014-06-02T07:05:45.573 回答