将预测集成到ggplot2中

时间:2018-05-12 15:31:55

标签: r ggplot2

我正在尝试使用给定数据的预测来完成基于时间的数据框。我的数据框看起来像这样:

df <- data.frame(duration = c(2000,2001,2002,2003,2004,2005), 
                 values = c(120,130,140,100,150,170), 
                 values2 = c(values = c(10,30,40,10,15,17)))

我已经用以下方法计算了两个变量的预测:

vc <- data.frame(forecast(df$values))
tc <- data.frame(forecast(df$values))

但我的问题是,我想在facet_gridvalues values2的一个折线图中显示预测和观察数据框。

我猜我应该和rbind一起融化它们。但由于数据帧中的行数不同,这是不可能的。

那么对此有正确的解决方法吗?

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

不确定这是forecast背后的功能。 我就是这样做的。

library(reshape2)
library(forecast)
library(ggplot2)
library(dplyr)

vc <- data.frame(forecast(df$values))
tc <- data.frame(forecast(df$values2))

# Bind them
df2 <- rbind(vc,tc)
# Name them
df2$variable <- c(rep('values', 10), rep('values2', 10)) 
# Assign duration for plotting
df2$duration <- rep(2006:2015, 2) # not sure if the years are correct

# Melt original data

m_df <- melt(df, id = 'duration')

我们需要使用full_join()valuesPoint.Estimate合并为不具有相同值的持续时间列

# Plot
ggplot(full_join(m_df, df2),
       aes(duration, value)) +
    facet_wrap(~variable) + 
    geom_point() + 
    geom_line() + geom_line(aes(duration, Point.Forecast), col='red')

结果

enter image description here