【发布时间】:2016-04-30 23:14:02
【问题描述】:
在使用标准化值与非标准化值计算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
谁能指出这是什么原因?
【问题讨论】:
-
它们不应该相同。声明结束。说真的,虽然这是你对密度与概率的误解,而不是编程问题,所以它不属于这里。 (但这是真的——它们不应该是一样的)
-
我想你可能会混淆
dnorm和pnorm。如果在示例中将前者替换为后者,则两个函数都返回相同的值。
标签: r statistics numerical-methods normal-distribution