dnorm(x,均值=200,标准差=20)的积分不是1

dnorm(x,均值=200,标准差=20)的积分不是1,r,integral,probability-density,R,Integral,Probability Density,我试图计算正态分布密度的积分,期望值为200,标准偏差为20。从-Inf到Inf这应该是1 我得到以下信息: > integrate(dnorm, mean=200, sd=20,-Inf, Inf)$value [1] 1.429508e-08 对于低于169的预期值,我得到正确的值1。 如何为更大的期望值获取正确的值?设置区间有限似乎有帮助 integrate(dnorm, mean=200, sd=20, -1e4, 1e4) # 1 with absolute error <

我试图计算正态分布密度的积分,期望值为200,标准偏差为20。从-Inf到Inf这应该是1

我得到以下信息:

> integrate(dnorm, mean=200, sd=20,-Inf, Inf)$value
[1] 1.429508e-08
对于低于169的预期值,我得到正确的值1。
如何为更大的期望值获取正确的值?

设置区间有限似乎有帮助

integrate(dnorm, mean=200, sd=20, -1e4, 1e4)
# 1 with absolute error < 2e-07
integrate(dnorm,平均值=200,标准差=20,-1e4,1e4)
#1绝对误差<2e-07
或者

integrate(dnorm, mean=200, sd=20, lower= -Inf, upper= Inf, abs.tol = 0)$value
[1] 1

要查看发生了什么,请注意以下细分的数量:

js <- integrate(dnorm, mean=200, sd=20, lower = -Inf, upper = Inf)
as <- integrate(dnorm, mean=200, sd=20, lower = -1e4, upper = 1e4)
cj <- integrate(dnorm, mean=200, sd=20, lower = -Inf, upper = Inf, abs.tol = 0)

str(js)
List of 5
 $ value       : num 1.43e-08
 $ abs.error   : num 2.77e-08
 $ subdivisions: int 2
 $ message     : chr "OK"
 $ call        : language integrate(f = dnorm, lower = -Inf, upper = Inf, mean = 200, sd = 20)
 - attr(*, "class")= chr "integrate"

str(as)
List of 5
 $ value       : num 1
 $ abs.error   : num 2e-07
 $ subdivisions: int 9
 $ message     : chr "OK"
 $ call        : language integrate(f = dnorm, lower = -10000, upper = 10000, mean = 200,      sd = 20)
 - attr(*, "class")= chr "integrate"

str(cj)
List of 5
 $ value       : num 1
 $ abs.error   : num 9.37e-05
 $ subdivisions: int 12
 $ message     : chr "OK"
 $ call        : language integrate(f = dnorm, lower = -Inf, upper = Inf, mean = 200, sd = 20,      abs.tol = 0)
 - attr(*, "class")= chr "integrate"

js当R提供CDF时,为什么要积分正态密度函数,即
pnorm