簡體   English   中英

R + ggplot:如何使用自定義平滑器(高斯過程)

[英]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具有yyminymax美學,您可以使用自定義平滑器,如下所示: 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM