我有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
知道如何解决这个问题吗?或者任何其他方法来获得预测的阴影置信区间?