循环数据密度分布

时间:2015-05-27 09:48:01

标签: r

我正在努力确定一年中80%的鸟类育种观察结果。通常我会通过查找中位数或四分位数来回答这样的问题,但是我如何处理80%的观察结果是从第285天到第366天(闰年)并延伸到第30天的情况?

数据是循环的,第365天与第1天接近第366天。

我正在阅读CircStats的手册和循环,但我真的可以在这方面使用一些帮助。

我的问题是:50%的观察结果的最短天数是多少,该期间的开始日期和结束日是什么时候?

这是一些虚拟数据:

library(CircStats)
#dummy data
obsDay<-c(rep(1:30,10),rep(45:65,2),65:180,
    rep(181:265,2),rep(266:330,4),rep(331:366,6))
#density plot
plot(density(obsDay))
#convert data to Radians
obsRadians <-(obsDay/366*360)*3.1459 / 180
#make a circular plot
circ.plot(obsRadians, stack=TRUE, bins=100,shrink=1.8)

1 个答案:

答案 0 :(得分:3)

我已经找到了解决方案。对于虚拟数据,80%的数据最密集的日期是10月6日到7月23日之间

library(circular)
library(CircStats)
obsDay<-c(rep(1:30,10),rep(45:65,2),65:180,rep(181:265,2),rep(266:330,4),rep(331:366,6))
#density plot
plot(density(obsDay))
#convert data to Radians
obsRadians <-(obsDay/366*360)*pi / 180
#make a circular plot
circ.plot(obsRadians, stack=TRUE, bins=100,shrink=1.8)
quant<-quantile.circular(obsRadians,c(0.10,.90)) ## for interval of 80% of obs
start<-(quant[[1]]*180/pi)/360*366 #convert radians to days - Aug 27
end<-(quant[[2]]*180/pi)/360*366 # March1