[英]R + ggplot : how to use a custom smoother (Gaussian Process)
我正在使用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)來獲得更好的回歸和估計我的時間序列的協方差。
我可以使用類似的東西來適應GP
library(tgp)
out <- bgp(X, Y, XX = seq(0, 200, length = 100))
這需要時間X
,觀察Y
並在XX
中的每個點進行預測。 對象out
包含一堆關於那些預測的東西,包括一個協方差矩陣,我可以用來代替我從ns()
得到的95%置信區間(我認為? ns()
。
問題是我不是如何包裝這個函數使它與ggplot2::stat_smooth()
接口。 任何有關如何進行的想法或指示將不勝感激!
看起來bgp
不符合標准R風格的建模功能。 這意味着您無法在geom_smooth
使用它,並且您需要在ggplot2調用之外擬合模型。 您可能還想通過電子郵件發送tgp
包作者,並鼓勵他們遵循R標准。
Stat_smooth具有y
, ymin
和ymax
美學,您可以使用自定義平滑器,如下所示: http : //had.co.nz/ggplot2/stat_smooth.html 。 您可以使用自定義平滑器中的預測和CI創建數據框,並直接在stat_smooth
使用它(指定新的數據參數)。 您可以使用stat_smooth(method="tgp::bgp",XX=seq(0,200,length=100))
但我還沒有嘗試過。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.