给定模式的截断法线

Truncated normal with a given mode

我想生成具有以下属性的随机截断正态分布。

  1. 下限= 3
  2. 更高的债券= 5
  3. 在第一位使用一组固定值(3.0,3.1,3.2,...,4.9,5.0)
  4. 模式=3
  5. 出现 5 的概率应该是出现 3 的概率的 50%。

我能够处理前 3 个步骤,但我正在努力寻找一种方法来设置 mode=3 并在上限和下限的出现上建立固定关系。

library(truncnorm)
library(ggplot2)
set.seed(123)
dist<- as.data.frame(list(truncnorm=round(rtruncnorm(10000, a=3, b=5, mean=3.3, sd=1),1)))
ggplot(dist,aes(x=truncnorm))+
  geom_histogram(bins = 40)+
  theme_bw()

如您所见,我可以创建具有所需边界的截断法线。 这个发行版的问题有两个。

幸运的是,使用截断正态分布可以满足您的所有要求。

low = 3high = 5.

简单地计算均值 low 和标准差 sqrt(2)*(high-low)/(2*sqrt(ln(2)).[=21 的正态分布的密度(在离散点,例如 3.0、3.1、...、4.9、5.0) =]

此标准差是通过以下函数与均值为 0 且标准差为 z 的正态密度成正比的函数得出的:

 f(x) = exp(-(x-0)**2/(2*z**2))

因为 f(0) = 1,我们必须找到必要的标准偏差 z 使得 f(x) = 1/2。解决方案是:

 g(x) = sqrt(2)*x/(2*sqrt(ln(2))

并将high-low代入x得到上面给出的最终标准偏差。