gpt4 book ai didi

r - 使用 `forecast` 绘制 `dygraphs` 预测

转载 作者:行者123 更新时间:2023-12-04 23:39:01 24 4
gpt4 key购买 nike

我想绘制一个 forecast使用 dygraphs 打包时间序列模型的预测. documentation建议使用以下方法进行实际预测:

hw <- HoltWinters(ldeaths)
p <- predict(hw, n.ahead = 36, prediction.interval = TRUE)
all <- cbind(ldeaths, p)

dygraph(all, "Deaths from Lung Disease (UK)") %>%
dySeries("ldeaths", label = "Actual") %>%
dySeries(c("p.lwr", "p.fit", "p.upr"), label = "Predicted")

导致:
enter image description here

绘制对象的有趣之处 all是它的类:
> class(all)
[1] "mts" "ts" "matrix"
> is.mts(all)
[1] TRUE
> is.ts(all)
[1] TRUE
> is.matrix(all)
[1] TRUE
str提供有关对象的更多信息 all :
> str(all)
Time-Series [1:108, 1:4] from 1974 to 1983: 3035 2552 2704 2554 2014 ...
- attr(*, "dimnames")=List of 2
..$ : NULL
..$ : chr [1:4] "ldeaths" "p.fit" "p.upr" "p.lwr"

更多检查表明 all是一个数组:
> tail(all)
ldeaths p.fit p.upr p.lwr
Jul 1982 NA 1128.3744 1656.127 600.6217
Aug 1982 NA 948.6089 1478.090 419.1282
Sep 1982 NA 960.1201 1491.429 428.8112
Oct 1982 NA 1326.5626 1859.802 793.3235
Nov 1982 NA 1479.0320 2014.306 943.7583
Dec 1982 NA 1929.8349 2467.249 1392.4206
> dim(all)
[1] 108 4
> is.array(all)
[1] TRUE

我无法使用来自 forecast 的预测创建此类对象包裹

用我的 forecast型号 unemp.mod我创建预测:
> f <- forecast(unemp.mod)
> f
Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
Apr 2017 4.528274 4.287324 4.769224 4.159773 4.896775
May 2017 4.515263 4.174337 4.856189 3.993861 5.036664
Jun 2017 4.493887 4.055472 4.932303 3.823389 5.164386
Jul 2017 4.479992 3.936385 5.023599 3.648617 5.311367
Aug 2017 4.463073 3.807275 5.118871 3.460116 5.466030

虽然它看起来与示例中的数组相似,但它是一个完全不同的对象:
> class(f)
[1] "forecast"
> str(f)
List of 10 <truncated>

如果我尝试使用基础 R 生成预测 predict就像在这个例子中一样,我也得到了一个列表对象:
> predict(unemp.mod, n.ahead = 5, prediction.interval = TRUE)
$pred
Apr May Jun Jul Aug
2017 4.528274 4.515263 4.493887 4.479992 4.463073

$se
Apr May Jun Jul Aug
2017 0.1880140 0.2660260 0.3420974 0.4241788 0.5117221

有没有人对如何使用 dygraphs 创建正确的对象进行绘图有任何建议?基于 forecast模型预测?

最佳答案

进一步调查 forecast(model) 生成的列表后我注意到实际值和点预测为 ts对象和上下界的数组格式与dygraphs相同HoltWinters 示例。我创建了一个函数来创建绘图所需的数组,假设 forecast_obj <- forecast(model) .

gen_array <- function(forecast_obj){

actuals <- forecast_obj$x
lower <- forecast_obj$lower[,2]
upper <- forecast_obj$upper[,2]
point_forecast <- forecast_obj$mean

cbind(actuals, lower, upper, point_forecast)
}

请注意,下限和上限是二维数组。自 dygraphs不支持超过一个预测区间我只选择一对(95%)。

然后我使用这样的东西绘制结果数组:
dygraph(ts_array, main = graph_title) %>% 
dyRangeSelector() %>%
dyRangeSelector(height = 40,
dateWindow = c("2011-04-01", "2019-4-01")) %>%
dySeries(name = "actuals", label = "actual") %>%
dySeries(c("lower","point_forecast","upper"), label = "Predicted") %>%
dyLegend(show = "always", hideOnMouseOut = FALSE) %>%
dyHighlight(highlightCircleSize = 5,
highlightSeriesOpts = list(strokeWidth = 2)) %>%
dyOptions(axisLineColor = "navy", gridLineColor = "grey")

导致此图:

enter image description here

关于r - 使用 `forecast` 绘制 `dygraphs` 预测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43624634/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com