在R中构建一个带有加权周末的随机日期生成器

我正在进行纱架调查,并试图构建一个随机的日期生成器,该生成器对周末的权重高于工作日的权重。到目前为止,我有一个不考虑日期类型的简单化的随机日期生成器。我们预计周末会有更大的压力(因为那时候会有更多人有时间钓鱼),但没有办法选择不包含偏见的随机日。我想选择给定月份内的15天。

我已经生成了一个简单的随机日期生成器:

dates <- data.frame(seq.Date(as.Date(day.start),as.Date(day.end),by="day"))

dates

sample(dates$seq.Date.as.Date.day.start...as.Date.day.end...by....day..,size = 15,replace = FALSE)     
[1] "2019-11-10" "2019-11-06" "2019-11-04" "2019-11-27" "2019-11-30" "2019-11-15"     
[7] "2019-11-18" "2019-11-21" "2019-11-13" "2019-11-01" "2019-11-19" "2019-11-25"    
[13] "2019-11-07" "2019-11-02" "2019-11-23"

理想情况下,我将拥有一个最终产品,该产品可以让我输入月份的开始和结束并随机输出15天。

hualuofengfei 回答:在R中构建一个带有加权周末的随机日期生成器

下面代码中注释的说明:

# Generate initial data; as in question
day_start <- as.Date("2010-10-01")
day_end   <- as.Date("2010-10-31")
dates <- data.frame(date = seq.Date(day_start,day_end,by="day"))

# Determine inclusion probabilities for each date; give weekend a higher 
# probability.
dates$day     <- as.numeric(format(dates$date,"%u"))
dates$psamp   <- ifelse(dates$day >= 6,0.2,0.1)

# Make sure probabilites add up to requires sample size
samplesize    <- 15
dates$psamp   <- dates$psamp * samplesize/sum(dates$psamp)

# Do not use sample for sampling without replacement with unequal probabilities!
# The sampling package has a large number of routines for sampling without 
# replacement and unequal probabilites. The following gives a fixed size sample
# (sum dates$psamp)
library(sampling)
dates$selected <- UPrandomsystematic(dates$psamp)

关于我不使用sample的原因,请参见https://stat.ethz.ch/pipermail/r-help/2008-February/153601.html

,

这是一个有点常规功能,可以满足您的需求。它以您要在周末放置的开始日期,结束日期和权重(相对于1)作为自己的参数,并传递其他附加参数(project.globals.myvar=another_valuesize等)。 )到replace。除基数R外没有其他依赖项。

但是,如果采样时没有更换,则可能要使用Jan van der Laan的答案中推荐的sample包。

sampling
本文链接:https://www.f2er.com/3163773.html

大家都在问