прогнозы ggplot & holt winters

Использование данных UKDriverDeaths

Попытка использовать функцию предсказания Холта-Винтерса & 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). Мне нужен прогноз и фактические данные в точке разреза, чтобы показать (обычно это делает + geom_line (aes ()))

Если бы доверительные интервалы были возможны, это было бы здорово.

Большое спасибо, абсолютно застрял


person user3608523    schedule 30.05.2014    source источник


Ответы (1)


Я использую 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"))

введите описание изображения здесь

person tonytonov    schedule 02.06.2014
comment
Если добавить к этому доверительные интервалы, все, что мне потребуется, это: + geom_ribbon (aes (ymin = as.POSIXct (lower), ymax = as.POSIXct (upper)) Я добавляю 2 столбца (верхний, нижний) в df, затем конвертирую назад к ts. Однако появляется ошибка Ошибка: ggplot2 не знает, как работать с данными класса mtstsmatrix. Я преобразовал новую матрицу в серию XT с ограничениями CI. Я что-то упустил? Очень признателен. - person user3608523; 10.06.2014