Mik*_*war 10 r machine-learning gaussian ggplot2
我正在使用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
Run Code Online (Sandbox Code Playgroud)
我可以使用以下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))
Run Code Online (Sandbox Code Playgroud)
麻烦的是,更顺畅的是不是我喜欢的 - 95%的置信区间是远离的.我想使用高斯过程(GP)来获得更好的回归和估计我的时间序列的协方差.
我可以使用类似的东西来适应GP
library(tgp)
out <- bgp(X, Y, XX = seq(0, 200, length = 100))
Run Code Online (Sandbox Code Playgroud)
需要时间X,观察Y并在每个点进行预测XX.该对象out包含一系列关于这些预测的东西,包括我可以使用的协方差矩阵代替我得到的95%置信区间(我认为?)ns().
麻烦的是我不是如何包装这个函数来使它与它接口ggplot2::stat_smooth().任何有关如何进行的想法或指示将不胜感激!
它看起来bgp不符合标准R风格的建模功能.这意味着你不能在里面使用它geom_smooth,你需要在ggplot2调用之外拟合模型.您可能还希望通过电子邮件发送tgp包作者并鼓励他们遵循R标准.
Joh*_*son -2
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)),但我还没有尝试过。
| 归档时间: |
|
| 查看次数: |
2269 次 |
| 最近记录: |