我需要生成随机值,这些值表示遵循对数正态分布的时间(以秒为单位):
Min: 120 seconds
Max: 1260 seconds
Mean: 356 seconds
SD: 98 seconds我正在生成100个随机数:
library(EnvStats)
sample1 <- rlnormTrunc(100,356,98,120,1260)当我计算平均值时,它不是356,而是更高,大约是490秒。为什么?
我不明白我做错了什么,因为我以为我会得到同样的刻薄。
有人能回答这个问题吗?
发布于 2017-02-08 15:56:46
原因是你比较了不同的分布,所以当你从这些分布中创建随机数时,它们的平均值是不同的。如果我们以正态分布为例
set.seed(111)
sample1 <- rnorm(n=10000,mean=356,sd=98)
mean(sample1) #355.7724这一平均数实际上将接近356。但如果我们取截断正态分布
set.seed(111)
sample2<-rnormTrunc(n=100000,mean=356,sd=98,min=120 ,max=1260)
mean(sample2) #357.9636平均值略有不同,约为358 ,而不是356。之所以差异如此之小,是因为,如直方图所示
hist(rnorm(n=10000,mean=356,sd=98),breaks=100,xlim=c(0,1300))
abline(v=120,col="red")
abline(v=1260,col="red")通过截断,可以取出非常少见的值(小于120,大于1260)。
LogNormal是一个肥尾分布,向右倾斜。这意味着它包含比正态分布少得多的值,远远超过1260。如果您截断120到1260之间的分布
hist(rlnormTrunc(10000,meanlog=356,sdlog=98,min=120,max=1260),breaks=100)你会得到
set.seed(111)
mean(rlnormTrunc(10000,meanlog=356,sdlog=98,min=120,max=1260)) #493.3903在上面的每个例子中,由于分布不同,计算了不同范围的随机值集的平均值,这就是为什么最终得到不同的平均值。
https://stackoverflow.com/questions/33861242
复制相似问题