Я использую R. У меня есть 25 переменных, которые более чем 15 моментов времени, с 3 или больше копирует на переменную на момент времени. Я имею melt
редактор это в a data.frame
, который я могу вывести счастливо использование на печать (среди других вещей) ggplot's 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
Я могу получить красивый график все время ряда, наряду с подогнанным шлицом и 95%-ми доверительными интервалами с помощью следующих команд ggplot2:
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
содержит набор вещей о тех прогнозах, включая ковариационную матрицу, которую я могу использовать вместо 95%-го доверительного интервала, который я получаю (я думаю?) от ns()
.
Проблема, я не то, как перенести эту функцию, чтобы заставить ее взаимодействовать через интерфейс с ggplot2::stat_smooth()
. Любые идеи или указатели относительно того, как продолжить двигаться, значительно ценились бы!
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))
, но я не пробовал.
Это выглядит как bgp
не соответствует стандартному стилю R для функций моделирования. Это означает, что вы не можете использовать его внутри geom_smooth
, и вам нужно будет подогнать модель вне вызова ggplot2.Вы также можете отправить электронное письмо автору пакета tgp
и призвать его следовать стандартам R.