【问题标题】:R dnorm result different between standardized and unstandardized values标准化和非标准化值之间的 R dnorm 结果不同
【发布时间】: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

看来可能是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

谁能指出这是什么原因?

【问题讨论】:

  • 它们不应该相同。声明结束。说真的,虽然这是你对密度与概率的误解,而不是编程问题,所以它不属于这里。 (但这是真的——它们不应该是一样的)
  • 我想你可能会混淆dnormpnorm。如果在示例中将前者替换为后者,则两个函数都返回相同的值。

标签: r statistics numerical-methods normal-distribution


【解决方案1】:

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

【讨论】:

  • 谢谢。几个小时后我想通了。感谢那些指出我误解了概率和密度的人。我的概念可能有点不稳定,但这里的原因是我忘记了雅可比行列式。
猜你喜欢
  • 2021-02-26
  • 2018-12-19
  • 1970-01-01
  • 2023-03-28
  • 2014-12-21
  • 1970-01-01
  • 2012-07-02
  • 2021-06-01
  • 2011-08-26
相关资源
最近更新 更多