对于一段时间序列,在置信区间与ggplot之间的着色区域

时间:2018-05-30 20:37:25

标签: r ggplot2 forecasting

我有190个观测的时间序列,我使用前180个执行卡尔曼滤波器,最后10个比较不同模型的前驱。我试图绘制我的数据集的最后20个观测数据的数据,从170到190,然后使用ggplot绘制181到190的预测水平以及它们的置信区间。所以我总共有4个时间序列:20个元素的观测值,预测值和两个置信区间,每个元素有10个元素。

这些是数据

track_28_only_95bpm$bpm[170:190]
[1] 154.2031 150.0625 158.8750 153.0000 147.1250 148.1797 151.0000 150.0000 
153.8125 155.0000
[11] 151.7375 157.1875 155.7500 160.2500 151.3906 149.0000 149.7500 155.1328 
163.0000 162.7500
[21] 160.0000

f_compl[181:190]
152.3169 156.2046 155.8417 159.3604 152.9990 149.8070 149.7615 154.0488 
161.1935 162.4359

upper_compl[181:190]
160.9422 164.8298 164.4670 167.9856 161.6243 158.4323 158.3868 162.6741 
169.8188 171.0612

lower_compl[181:190]
143.6917 147.5793 147.2165 150.7351 144.3737 141.1818 141.1362 145.4235 
152.5683 153.8106

这是我的代码。

df_obs_compl = data.frame(time = seq(170,190,length=21),
                      M = track_62_only_95bpm$bpm[170:190], legend = 
                      "observations")
df_f = data.frame(time = seq(181,190,length=10), M = f_compl[181:190], 
                     legend = "forecast")
df_u_compl = data.frame(time = seq(181,190,length=10), M = 
                        upper_compl[181:190] ,legend = "upper")
df_l_compl = data.frame(time = seq(181,190,length=10), M = 
                        lower_compl[181:190], legend = "lower")
df_compl = rbind(df_obs_compl, df_f, df_u_compl, df_l_compl)

ggplot(df_compl, aes(x = time, y = M, color = legend)) + geom_line() + 
        scale_colour_manual(values=c(observations='black', one_step='red', 
        upper='blue', lower='blue')) 

有了这个,我能够实现我所说的,即我将20个观测结果与10个预测及其置信区间进行对比。现在,我希望将置信区间设置为阴影,我尝试了以下代码。

ggplot(df, aes(x = time, y = M)) + geom_line(colour='black') +
            geom_smooth(aes(x=time, y=M, ymax=upper, ymin=lower), 
            colour='red')      

但是我收到以下错误

 Error: Aesthetics must be either length 1 or the same as the data (51): x, 
 y, ymax, ymin

知道如何解决这个问题吗?或者任何其他方法来获得预测的阴影置信区间?

0 个答案:

没有答案