首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将ggfortify自动绘图与更改点包函数(cpt.meanvar)相结合

将ggfortify自动绘图与更改点包函数(cpt.meanvar)相结合
EN

Stack Overflow用户
提问于 2019-04-03 22:27:01
回答 1查看 278关注 0票数 1

我正在使用ggfortify包中的autoplot函数来绘制带有预测和拟合的时间序列图,下面是我是如何做的

代码语言:javascript
复制
library(forecast)
library(ggplot2)
library(ggfortify)
fc <- forecast(fdeaths)
autoplot(fc)
autoplot(fc) + geom_line(aes(y = fitted(fc)), col = "red")

现在我想在上面的图中显示均值发生变化的时间段,以及在位移之前和之后的均值

我可以使用'changepoint‘包单独完成,语法如下

代码语言:javascript
复制
library(changepoint)
autoplot(cpt.mean(fdeaths))

plot(cpt.mean(fdeaths),cpt.col='blue')

所有这些的组合视图将提供非常强大的洞察力,请求帮助

]1

EN

回答 1

Stack Overflow用户

发布于 2019-04-23 22:17:08

这里有一个小例子。但是,它必须自动循环绘制线段(geom_segment)和vline (geom_vline)。

代码语言:javascript
复制
library(forecast)
library(ggplot2)
library(ggfortify)
library(changepoint)
library(lubridate)

fc <- forecast(fdeaths)
cp <- changepoint::cpt.mean(fdeaths)
plot(cp,cpt.col='blue')
# plot(x = 1:length(c(fdeaths)), y = c(fdeaths), type = "l")
Vikram <- data.frame(ts = c(fdeaths),
                     Obs = seq(lubridate::ymd('1974-01-01'),
                               lubridate::ymd('1979-12-01'), by = "1 month"),
                     fitted = fitted(fc))
Vikram_md <- changepoint::param.est(cp)[[1]] # mean
# cp@cpts  # change-points
cp_ <- cp@cpts

autoplot(fc) + geom_line(aes(y = fitted(fc)), col = "red") +
  geom_segment(x = Vikram$Obs[1], 
               y = Vikram_md[1], yend = Vikram_md[1],
               xend = Vikram$Obs[1] %m+% months(cp_[1]), 
               size = 1.2, col = "blue") +
  geom_segment(x = Vikram$Obs[1] %m+% months(cp_[1]), 
               y = Vikram_md[2], yend = Vikram_md[2],
               xend = Vikram$Obs[1] %m+% months(cp_[2]), 
               size = 1.2, col = "blue") +
  geom_vline(aes(xintercept = Vikram$Obs[1] %m+% months(cp_[2])),
             linetype = "dashed", colour = "red")

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55497557

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档