R dnorm 结果在标准化值和非标准化值之间不同

R dnorm result different between standardized and unstandardized values

我 运行 在使用标准化值与非标准化值计算 R 中的正态分布密度时陷入混乱:

ds <- function(x, mu, var) {dnorm(x, mean = mu, sd = sqrt(var))}
ds1 <- function(x, mu, var) {dnorm((x-mu)/sqrt(var), mean = 0, sd = 1)}

这两个应该给出相同的结果。然而,他们没有:

> ds(0, 1, 2)
[1] 0.2196956
> ds1(0, 1, 2)
[1] 0.3106966

看来可能是因为sqrtdnorm的数值不同造成的,因为如果我设置var = 1,那么结果是一样的:

> ds(0, 1, 1)
[1] 0.2419707
> ds1(0, 1, 1)
[1] 0.2419707
> ds1(0, 1, 1.001)
[1] 0.2420916
> ds(0, 1, 1.001)
[1] 0.2419707

谁能指出这是什么原因?

ds1中,您忘记了1/sqrt(var)项:

ds1 <- function(x, mu, var) {dnorm((x-mu)/sqrt(var), mean = 0, sd = 1)/sqrt(var)}

> ds(1,2,3)
[1] 0.1949697
> ds1(1,2,3)
[1] 0.1949697