我正在使用R.我有超过15个时间点的25个变量,每个时间点每个变量有3个或更多个重复。我有melt
编辑成data.frame
,我可以愉快地使用(除其他外)ggplot的facet_wrap()
命令。我熔化的数据帧被称为lis
;这里是它的头部和尾部,所以你得到的数据的一个想法:R + ggplot:如何使用自定义平滑器(高斯过程)
> 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)来获得更好的回归和我的时间序列的协方差估计。
我能适合使用的东西像GP
library(tgp)
out <- bgp(X, Y, XX = seq(0, 200, length = 100))
这需要时间X
,观察Y
并在XX
每个点使得预测。对象out
包含了一堆关于这些预测的内容,包括我可以用来替代从ns()
得到的(我认为?)的95%置信区间的协方差矩阵。
麻烦是我不是如何包装这个功能,使其与ggplot2::stat_smooth()
接口。任何想法或指示如何进行将不胜感激!