2011-09-30 46 views
3

我有一個向量表示一系列事件發生的時間(以午夜爲單位),我想繪製一天中這些事件的密度。以下是一種方法:周期函數的密度密度

rs <- 60*60*24*c(rbeta(5000, 2, 5), runif(10000, 0, 1)) 
den <- density(rs, cut=0) 
plot(den, ylim=range(0,den$y)) 

問題是它的端點密度錯誤,因爲這是一個循環函數。如果你連續繪製3個時段,你看到在中間時期的真密度:

den <- density(c(rs, rs+60*60*24, rs+2*60*60*24), cut=0) 
plot(den, ylim=range(0,den$y)) 

我的問題是,是否有一些[好]的方式來獲得從原始數據中塊的密度,無三倍我所做的觀察次數。如果在端點附近沒有任何觀察結果,我當然需要提供這段時間的長度。

+1

你可以看一下'circular'軟件包:http://cran.r-project.org/web/packages/circular/,以便估計一個圓圈(即循環)數據集的密度。 – Iterator

+1

這是一篇博客文章,[圓形或球形數據和密度估算](http://goo.gl/ShjgY),詳細介紹併爲計算和圖形提供了廣泛的R代碼。我不認爲它們是@Iterator提到的相同函數(感謝這種方式的引用),但即使您決定使用該庫,它仍然適用於圖。 –

+0

非常好,謝謝! –

回答

0

我不認爲你的證據表明曲線應該看起來是重複樣條擬合的一部分是令人信服的。您應該在小時邊界處指定中斷的相同對象上檢查hist()的結果。所述logspline功能允許密度估計的計算與HTE數據指定的界限:

hist(c(c(rs, rs+60*60*24, rs+2*60*60*24), breaks= 24*3) 
require(logspline) 
?logspline 
fit <- logspline(c(rs), lbound=0, ubound=60*60*24) 
plot(fit) 

一個更適合,因爲它正確地捕獲的事實,結束的天的密度比所述第一一天的下部,其並沒有真正正確地捕捉到那三天的密度圖。

+0

對於我發佈的綜合數據,確實日結和日開始密度不一樣。但是我的實際一天更像是「人們刷牙的時間是什麼?」,所以它應該平滑過渡邊界。 –