dnorm 是如何工作的?

How dnorm works?

我是 Statistics 和 R 的新手。也许这是一个非常微不足道的问题,但我真的不明白它是如何工作的。

假设我使用 dnorm(5, 0, 2.5)。这是什么意思?

我看到一些资源,他们告诉我这个函数计算密度曲线中点的高度。

现在我又读到一个数字在连续分布中的确切概率为 0。所以,我的问题是,如果我能找出某个值的高度或概率,那么它怎么会是0?

我知道我混淆了一些概念。但我无法找到我错的地方。如果你抽出时间让我理解这一点,那就太好了。提前致谢。

密度returns 一个本身不能直接转化为概率的数字。但它给出了曲线的高度,如果在所有可能的数字范围内绘制,则曲线下方的面积加起来为 1。

考虑一下。如果我使向量 x 的均匀 spaced 个数字从 -7.5 到 7.5,相隔 0.1,并得到每个 [=13 的值均值为 0 标准差为 2.5 的正态变量的密度=].

x <- seq(from = -7.5, to = 7.55, by = 0.1)
y <- dnorm(x, 0, 2.5)

由这些密度(我存储为y)形成的曲线下面积的近似值乘以它们之间的距离(0.1)接近1:

> sum(y * 0.1)
[1] 0.9974739

如果你用微积分正确地做到这一点而不是用数字来近似它,它就会正好是一个。

为什么这有用?曲线部分下方的累积面积可用于估计变量出现在特定 范围 中任何位置的概率,即使正如您的一位消息来源指出的那样,任何精确的概率对于连续变量,number 在技术上为零。

考虑这张图。阴影区域 space 显示正态分布变量(均值为零,标准差 2.5)在 -7.5 和 4 之间的概率。这导致许多有用的应用。

制作于:

library(ggplot2)

d <- data.frame(x, y)

ggplot(d, aes(x = x, y = y)) +
  geom_line() +
  geom_point() +
  geom_ribbon(fill = "steelblue", aes(ymax = y), ymin = 0, alpha = 0.5, data = subset(d, x <= 4)) +
  annotate("text", x= -4, y = 0.13, label = "Each point is an individual density\nestimate of dnorm(x, 0, 2.5)") +
  annotate("text", x = -.3, y = 0.02, label = "Filled area under the curve shows the cumulative probability\nof getting a number as high as a given x, in this case 4") +
  ggtitle("Density of a random normal variable with mean zero and standard deviation 2.5")