计算截断法线的期望值

机器算法验证 r 正态分布 条件期望 截断正态分布 截断分布
2022-03-24 15:05:48

使用米尔斯比结果,让XN(μ,σ2), 然后

E(X|X<α)=μσϕ(aμσ)Φ(aμσ)

但是,在 R 中计算它时,我没有得到正确的结果

> mu <- 1
> sigma <- 2 
> a <- 3 
> x <- rnorm(1000000, mu, sigma) 
> x <- x[x < a] 
> mean(x)
[1] 0.4254786
> 
> mu -  sigma * dnorm(a, mu, sigma) / pnorm(a, mu, sigma)
[1] 0.7124

我究竟做错了什么?

1个回答

您的公式实现是错误的,因为,

ϕ(xμσ)=12πe12(xμσ)2fX,μ,σ(x)=12πσe12(xμσ)2
如您所见,我们有一个额外的σ在分母中fX,μ,σ(x),产生:
ϕ(xμσ)=σfX,μ,σ(x)
dnorm方法给你fX,μ,σ(x), 你需要将它与σ获得ϕ. 由于您的σ=2,这实际上可以通过再次减去第二项来完成,即10.7124=0.2876
10.28760.2876=0.4247
这接近您的估计。