2

尝试将 geom_points 添加到 autolayer() 行(图片中的“fitted”),这是 Rob Hyndmans 预测包中 ggplot2 的 autoplot() 的包装部分(ggplot2 中也有一个基本的 autoplot/autolayer 所以同样可能适用于那里) .

问题是(我不是 ggplot2 专家,并且 autoplot 包装器使它变得更棘手) geom_point() 适用于主调用,但我如何应用类似于自动层(拟合值)?

像普通的 geom_line() 一样尝试 type="b" 但它不是 autolayer() 中的对象参数。

require(fpp2)

model.ses <- ets(mdeaths, model="ANN", alpha=0.4)
model.ses.fc <- forecast(model.ses, h=5)

forecast::autoplot(mdeaths) +
  forecast::autolayer(model.ses.fc$fitted, series="Fitted") + # cannot set to show points, and type="b" not allowed
  geom_point() # this works fine against the main autoplot call

拟合线需要点

4

1 回答 1

2

这似乎有效:

library(forecast)
library(fpp2)

model.ses <- ets(mdeaths, model="ANN", alpha=0.4)
model.ses.fc <- forecast(model.ses, h=5)

# Pre-compute the fitted layer so we can extract the data out of it with 
# layer_data()
fitted_layer <- forecast::autolayer(model.ses.fc$fitted, series="Fitted")
fitted_values <- fitted_layer$layer_data()

plt <- forecast::autoplot(mdeaths) +
  fitted_layer +
  geom_point() +
  geom_point(data = fitted_values, aes(x = timeVal, y = seriesVal))

在此处输入图像描述

可能有一种方法可以forecast::autolayer直接做你想做的事,但这个解决方案有效。如果您希望图例看起来正确,您需要将输入数据和拟合值合并到一个data.frame.

于 2019-04-13T18:33:39.917 回答