2016-11-28 55 views
0

我正在尝试为训练目的创建一个假数据集,并希望创建一个匹配某个概率分布的日期向量的函数...即 - 应该有比另一个选定的范围更多的日期。创建一个遵循概率分布的日期向量

我知道,选择一个日期范围,我可以这样做:

seq(as.Date("1940-12-30"), as.Date("2005-01-04"), by="days")

而分配给人口,我可以这样做:

dchisq(x=1:500,df = 100)rlnorm(500,1,.6)

但我在如何使seq()从上面提到的特定概率分布中抽取一个空白。那么如何根据模式绘制日期?

回答

1

如果你可以描述每个日期你想要的概率,你可以用样本做到这一点。以下是一个以2005年年中为中心,采用高斯分布的样本。

Y05 = seq(as.Date("2005-01-01"), as.Date("2005-12-31"), by="days") 
    Prob = dnorm((1:365)*4/365 - 2) 
    sample(Y05, 10, replace=TRUE, prob=Prob) 
+1

需要注意的杂点:sample()中的概率权重不需要加1,但它们必须> 0 –

1

解决此问题的最简单方法可能是将此问题视为一般抽样问题而不是日期抽样问题。例如,如果您认为问题是选择某个固定日期和目标日期之间的偏移量,则已将问题转换为加权整数抽样问题,并且您已经知道如何解决该问题。