2011-09-30 102 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

对于我发布的综合数据,确实日结和日开始密度不一样。但是我的实际一天更像是“人们刷牙的时间是什么?”,所以它应该平滑过渡边界。 –