R

計算截斷法線的期望值

  • April 23, 2019

使用米爾斯比結果,讓 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

我究竟做錯了什麼?

您的公式實現是錯誤的,因為, ϕ(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
這接近您的估計。

引用自:https://stats.stackexchange.com/questions/404582