2013-05-02 76 views
8

我有數據的時間和日期爲免費停車位。R圓形黃土功能超過24小時(一天)

這裏有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)) 

隨機抽樣的快速方法通過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 什麼是告訴黃土功能0和24是鄰居的最佳方式? I.e.如果我們用這種方式估算的話,左側和右側的線應該是相同的值。

從哪裏開始的指針將會很好。

+4

重複的數據在任何一方,所以你有三份。然後只保留適合中間部分的部分。 – joran 2013-05-02 15:43:28

回答

9

我會忍不住只是複製兩邊的數據:

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

...就像joran說了幾分鐘前(woops)

+0

你做了修腳,你贏得了代表。 :) – joran 2013-05-02 16:19:38

+0

這似乎是最簡單的解決方案。我認爲在廉價計算時代效率(不重複你的數據)並不重要。 – Rico 2013-05-02 23:28:50

+0

如果你有一百萬分,這肯定是浪費。只要複製「重要」的要點 - 即落在黃土使用的範圍內,您可以做得更好。但是,如果您使用默認值並引導該跨度,則您不知道相關跨度是否屬於先驗。另一種方法是使用自動執行此操作的計算方法(您可以查看princurve中的periodic.lowess,以瞭解您需要轉換數據以使用的某些內容),但是這會在更高的計算時間內換取內存效率 - a很常見的折衷。 – 2013-05-03 13:02:32