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

时间:2016-01-24 17:42:33

标签: r statistics numerical-methods normal-distribution

在使用标准化值与非标准化值计算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

有谁可以指出这是什么原因?

1 个答案:

答案 0 :(得分:0)

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