使用数据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)
我希望通过1983年的实际数据来展示霍特冬天的预测。 这两个问题是:
1)ggplot不了解ts数据。
2)使用HoltWinters()使用ts数据,而不是zoo(日期或xts)。我需要预测&amp;要显示的切割点的实际数据(通常是+ geom_line(aes())就可以了)
如果可能的置信区间很好。
非常感谢,绝对坚持
答案 0 :(得分: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"))