2010-06-04 8 views
9

Tôi đang sử dụng R. Tôi có 25 biến trên 15 điểm thời gian, với 3 hoặc nhiều lần lặp lại cho mỗi biến trên mỗi điểm thời gian. Tôi đã melt chỉnh sửa số này thành một data.frame, mà tôi có thể vẽ một cách vui vẻ bằng cách sử dụng (trong số những thứ khác) lệnh ggplot's facet_wrap(). Khung dữ liệu được làm nóng của tôi được gọi là lis; đây là người đứng đầu và đuôi của nó, vì vậy bạn sẽ có được một ý tưởng về dữ liệu:R + ggplot: cách sử dụng tùy chỉnh mượt mà hơn (Quy trình Gaussian)

> 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 

tôi có thể có được một cốt truyện đẹp của tất cả các chuỗi thời gian, cùng với một spline được trang bị và 95% khoảng tin cậy sử dụng các lệnh ggplot2 sau:

p <- ggplot(lis, aes(x=time, y=value)) + facet_wrap(~variable) 
p <- p + geom_point() + stat_smooth(method = "lm", formula = y ~ ns(x,3)) 

Sự cố là mượt mà không theo ý thích của tôi - khoảng tin cậy 95% bị tắt. Tôi muốn sử dụng quá trình Gaussian (GP) để có được một hồi quy tốt hơn và ước tính hiệp phương sai cho chuỗi thời gian của tôi.

tôi có thể phù hợp với một GP sử dụng một cái gì đó giống như

library(tgp) 
out <- bgp(X, Y, XX = seq(0, 200, length = 100)) 

mà cần có thời gian X, quan sát Y và làm cho dự đoán tại mỗi điểm trong XX. Các đối tượng out chứa một loạt các điều về những dự đoán, bao gồm một ma trận hiệp phương sai tôi có thể sử dụng thay cho khoảng tin cậy 95% tôi nhận được (tôi nghĩ?) Từ ns().

Vấn đề là tôi không phải cách quấn chức năng này để làm cho giao diện với ggplot2::stat_smooth(). Bất kỳ ý tưởng hoặc con trỏ nào về cách tiến hành sẽ được đánh giá rất nhiều!

Trả lời

-3

Stat_smooth có y, yminymax thẩm mỹ mà bạn có thể sử dụng với tùy chỉnh mượt mà hơn, như được ghi ở đây: http://had.co.nz/ggplot2/stat_smooth.html. Bạn tạo một khung dữ liệu với các dự đoán và CI từ tùy chỉnh của bạn mượt mà hơn và sử dụng trực tiếp trong stat_smooth (chỉ định một đối số dữ liệu mới). Bạn có thể sử dụng stat_smooth(method="tgp::bgp",XX=seq(0,200,length=100)) nhưng tôi chưa thử.

6

Có vẻ như bgp không tuân theo kiểu R chuẩn cho các chức năng lập mô hình. Điều này có nghĩa là bạn không thể sử dụng nó bên trong geom_smooth và bạn sẽ cần phải phù hợp với mô hình bên ngoài cuộc gọi ggplot2. Bạn cũng có thể gửi email cho tác giả gói tgp và khuyến khích họ tuân theo các tiêu chuẩn R.