【问题标题】:Kernel Density Estimate in R for Vector of DatesR中日期向量的核密度估计
【发布时间】:2015-11-14 06:57:11
【问题描述】:

我有一个包含 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 值。

您对如何解决这个问题有什么建议吗?是否有可用于日期的替代库/包?

【问题讨论】:

  • 请插入导致错误的确切代码行。
  • xvar
  • 我建议在 getvars[,3] 上运行 kde,然后使用 as.Date 位更改绘图的标签。
  • 执行 fhat
  • kde(factor(getvars[,3]))怎么样

标签: r date kde


【解决方案1】:

这是我将如何绘制的(没有花里胡哨的):

数据

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)

输出

【讨论】:

  • 谢谢先生。完美运行。很抱歉这个基本问题。需要好好学习...
  • @Rhack 因素可能很痛苦,我知道。
  • 如果您有多年时间并想考虑季节性因素怎么办?
猜你喜欢
  • 2021-01-25
  • 2021-01-21
  • 2015-06-09
  • 2021-05-01
  • 2019-02-13
  • 2016-12-10
  • 2014-03-22
  • 2013-01-11
  • 1970-01-01
相关资源
最近更新 更多