在使用标准化值与非标准化值计算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
似乎可能是因为sqrt
和dnorm
导致的数值差异,因为如果设置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
有谁可以指出这是什么原因?
答案 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