2013-05-02 30 views
8

Tôi có dữ liệu về chỗ đỗ xe miễn phí trong nhiều giờ và nhiều ngày.Chức năng LOESS tròn tròn trên 24 giờ (một ngày)

Dưới đây là một mẫu ngẫu nhiên 100.

sl <- list(EmptySlots = c(7, 6, 20, 5, 16, 20, 24, 5, 24, 24, 15, 11, 
8, 6, 13, 2, 21, 6, 1, 6, 9, 1, 8, 0, 20, 9, 20, 11, 22, 24, 
1, 2, 12, 6, 8, 2, 23, 18, 8, 3, 20, 2, 1, 0, 5, 21, 1, 4, 20, 
15, 24, 12, 4, 14, 2, 4, 20, 16, 2, 10, 2, 1, 24, 9, 22, 7, 6, 
3, 20, 13, 1, 16, 12, 5, 2, 7, 4, 1, 6, 1, 1, 2, 0, 13, 24, 6, 
13, 7, 24, 24, 15, 6, 10, 1, 2, 9, 5, 2, 11, 15), hour = c(8, 
16, 23, 14, 18, 7, 17, 15, 19, 19, 17, 17, 16, 14, 17, 12, 19, 
10, 10, 13, 16, 10, 16, 11, 12, 9, 0, 15, 16, 21, 10, 11, 17, 
11, 16, 15, 23, 7, 16, 14, 18, 14, 14, 9, 15, 2, 10, 9, 19, 17, 
20, 16, 12, 17, 12, 9, 23, 9, 15, 17, 10, 12, 18, 17, 18, 17, 
13, 10, 7, 8, 10, 18, 11, 11, 12, 17, 12, 9, 14, 15, 10, 11, 
10, 10, 20, 16, 18, 15, 21, 18, 17, 13, 8, 11, 15, 16, 11, 9, 
12, 18)) 

Một cách nhanh chóng để tính toán một hàm hoàng thổ qua ggplot2.

sl <- as.data.frame(sl) 
library(ggplot2) 
qplot(hour, EmptySlots, data=sl, geom="jitter") + theme_bw() + stat_smooth(size = 2) 

enter image description here cách tốt nhất để biết các chức năng hoàng thổ mà 0 đến 24 là các nước láng giềng là gì? I.e. dòng bên trái và bên phải phải có cùng giá trị nếu chúng ta ước lượng nó theo cách này.

Con trỏ về nơi bắt đầu sẽ hoạt động tốt.

+4

trùng lắp dữ liệu của bạn ở hai bên, vì vậy bạn có ba bản sao. Sau đó chỉ giữ phần vừa với phần giữa. – joran

Trả lời

9

tôi bị cám dỗ chỉ để sao chép dữ liệu trên cả hai phía:

library(ggplot2) 
empty <- c(7, 6, 20, 5, 16, 20, 24, 5, 24, 24, 15, 11, 8, 6, 13, 2, 21, 6, 1, 6, 9, 1, 8, 0, 20, 9, 20, 11, 22, 24, 1, 2, 12, 6, 8, 2, 23, 18, 8, 3, 20, 2, 1, 0, 5, 21, 1, 4, 20, 15, 24, 12, 4, 14, 2, 4, 20, 16, 2, 10, 2, 1, 24, 9, 22, 7, 6, 3, 20, 13, 1, 16, 12, 5, 2, 7, 4, 1, 6, 1, 1, 2, 0, 13, 24, 6, 13, 7, 24, 24, 15, 6, 10, 1, 2, 9, 5, 2, 11, 15) 
hour <- c(8, 16, 23, 14, 18, 7, 17, 15, 19, 19, 17, 17, 16, 14, 17, 12, 19, 10, 10, 13, 16, 10, 16, 11, 12, 9, 0, 15, 16, 21, 10, 11, 17, 11, 16, 15, 23, 7, 16, 14, 18, 14, 14, 9, 15, 2, 10, 9, 19, 17, 20, 16, 12, 17, 12, 9, 23, 9, 15, 17, 10, 12, 18, 17, 18, 17, 13, 10, 7, 8, 10, 18, 11, 11, 12, 17, 12, 9, 14, 15, 10, 11, 10, 10, 20, 16, 18, 15, 21, 18, 17, 13, 8, 11, 15, 16, 11, 9, 12, 18) 
emptyrep <- rep.int(empty,3) 
hourrep <- c(hour,hour+24,hour-24) 
sl <- data.frame(empty=emptyrep, hour=hourrep) 
qplot(hour, empty, data=sl, geom="jitter") + theme_bw() + geom_smooth(method="loess",size = 1.5,span=0.2) + coord_cartesian(xlim=c(0,24)) 

enter image description here

... giống như Joran nói một vài phút trước đó (woops)

+0

Bạn đã thực hiện công việc legwork, bạn kiếm được đại diện. :) – joran

+0

Điều đó có vẻ giống như giải pháp đơn giản nhất. Tôi cho rằng hiệu quả (không sao chép dữ liệu của bạn) không quan trọng trong thời đại máy tính giá rẻ. – Rico

+0

Nếu bạn có một triệu điểm, điều này chắc chắn sẽ lãng phí. Bạn có thể làm tốt hơn bằng cách chỉ sao chép các điểm "vật chất" - mà nằm trong khoảng thời gian được sử dụng bởi loess. Nhưng nếu bạn đang sử dụng các giá trị mặc định và nó bootstraps khoảng đó, bạn không biết những gì có liên quan kéo dài là một ưu tiên. Cách khác là sử dụng một phương pháp tính toán thực hiện điều này một cách tự động (bạn có thể xem xét periodic.lowess trong nguyên tắc cho một cái gì đó bạn phải chuyển đổi dữ liệu của mình để sử dụng), nhưng giao dịch hiệu quả bộ nhớ cho thời gian tính toán cao hơn nhiều - một sự cân bằng khá phổ biến. –

Các vấn đề liên quan