我正在使用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()
接口。任何想法或指示如何進行將不勝感激!