R 中的 rtruncnorm 函数生成相同的观察结果

rtruncnorm function in R generates same observations

我正在尝试在 R 中使用截断的正态分布函数来生成上下界之间的数字。这是我正在使用的语句:

rtruncnorm(4,1494396000,1494397800, 6360,2640)

4 - 我需要的观察次数, 1494396000 - 纪元时间(实际时间:2017-05-10 02:00:00), 1494397800 - 纪元时间(实际时间:2017-05-10 02:30:00), 6360 - 平均 106 分钟(106*60 = 6360 秒), 2640 - SD 44 分钟(44*60 = 2640 秒)

理想情况下,这应该给我 5 月 10 日 02:00:00 和 02:30:00 之间的 4 个纪元时间观测值 但我得到的输出是:1494396000 1494396000 1494396000 1494396000 这是 2017-05-10 02:00:00

我不明白为什么 rtruncnorm 给我 4 个完全相同的观察结果。我尝试使用 msm 包中的 rtnorm 函数,结果是一样的。

我们将不胜感激在正确方向上的推动

截断下限 1,494,396,000 比均值 6,360 高出 566,057 个标准差。看起来当您指定一个导致所有模拟值都低于截断下限的均值时,该函数只是 returns 每个值的截断下限。我认为您一定是想在截断限制之间指定一个平均值。

library(truncnorm)

rr = c(1494396000, 1494397800)

hist(rtruncnorm(10000, 1494396000, 1494397800, 1494396000, 500), 
     breaks=seq(rr[1],rr[2], length=40), xlim=rr, main="Mean=1494396000", xlab="")

hist(rtruncnorm(10000, 1494396000, 1494397800, 6360, 500), 
     breaks=seq(rr[1],rr[2], length=40), xlim=rr, main="Mean=6360", xlab="")

(Eipi10 先发制人,这个答案是对他们答案的补充,解释了 为什么 R 的行为方式)

您实际上试图做的是从标准偏差相对于您的限制也非常大的分布尾部的末端提取值。我在 MSPaint 中制作了一张可怕的快速图片来帮助演示。

鉴于听起来您只是想要介于上限和下限之间的一些随机值 - 您确定需要定义均值和标准差(或者甚至知道它们可能是什么?)如果您不知道不需要建模,你最好只使用:

runif(4, min = 1494396000, max = 1494397800)