R 中日期向量的核密度估计

Kernel Density Estimate in R for Vector of Dates

我有一个包含 195 个日期字段的向量,我将其分配给变量 xvar,如下所示:

xvar <-as.Date(getvars[,3],"%m/%d/%Y") 

我希望能够在生成的直方图上拟合分布,然后从该概率分布中抽样。我可以使用 ggplot2 绘制此日期向量的直方图和密度,但我不知道从结果密度中采样的方法。

我下载了 R 包 ks。它对于实数向量非常有效,但是当我将日期向量传递给它时,在 运行 这些行之后:

xvar <-as.Date(getvars[,3],"%m/%d/%Y") # Vector of Dates
xvnonull <- (na.omit(xvar)) #Remove any NAs
fhat <- kde(xvnonull) #Try to Fit KDE

我收到一条错误消息:

"Error in rep(1, n) : invalid 'times' argument".

我删除了所有 NA 值。

你对如何解决这个问题有什么建议吗?是否有其他 libraries/packages 可以处理日期?

以下是我的绘制方式(没有花里胡哨的东西):

数据

set.seed(1234)
xvar<-
  sample(seq(from=as.Date("2015-01-01"),length.out=100L,by="day")
  )[colSums(matrix(sample(34L,300L,T),nrow=3))-2L]

解决方案

library(ks)
xvar_f<-as.factor(xvar)
xvar_i<-as.integer(xvar_f)
par(mar=c(5.6,4.1,4.1,2.1))
plot(kde(xvar_i),xaxt="n",xlab="",ylab="",
     main="Density of Dates",las=1)
tx=seq(min(xvar_i),max(xvar_i),by=5)
lb=levels(xvar_f)[tx]
axis(side=1,at=tx,labels=lb,las=2)

输出