我正在使用 R。我在 15 个时间点上有 25 个变量,每个时间点每个变量有 3 个或更多重复。我已经把它melt
编辑成一个data.frame
,我可以使用 ggplot 的facet_wrap()
命令(除其他外)愉快地绘制它。我融化的数据框被称为lis
;这是它的头部和尾部,因此您可以了解数据:
> head(lis)
time variable value
1 10 SELL 8.170468
2 10 SELL 8.215892
3 10 SELL 8.214246
4 15 SELL 8.910654
5 15 SELL 7.928537
6 15 SELL 8.777784
> tail(lis)
time variable value
145 1 GAS5 10.92248
146 1 GAS5 11.37983
147 1 GAS5 10.95310
148 1 GAS5 11.60476
149 1 GAS5 11.69092
150 1 GAS5 11.70777
我可以使用以下 ggplot2 命令获得所有时间序列的漂亮图,以及拟合样条曲线和 95% 置信区间:
p <- ggplot(lis, aes(x=time, y=value)) + facet_wrap(~variable)
p <- p + geom_point() + stat_smooth(method = "lm", formula = y ~ ns(x,3))
问题是我不喜欢更平滑的东西——95% 的置信区间已经很遥远了。我想使用高斯过程 (GP) 为我的时间序列获得更好的回归和协方差估计。
我可以使用类似的东西来安装全科医生
library(tgp)
out <- bgp(X, Y, XX = seq(0, 200, length = 100))
这需要时间X
,观察Y
并在每个点进行预测XX
。该对象out
包含一堆关于这些预测的东西,包括一个协方差矩阵,我可以用它来代替我从ns()
.
问题是我不知道如何包装这个函数以使其与ggplot2::stat_smooth()
. 任何关于如何进行的想法或指示将不胜感激!