dnorm如何运作?

时间:2018-01-28 04:08:08

标签: r statistics probability-distribution

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

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

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

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

我知道我混淆了一些概念。但我无法找到我错的地方。如果你有空的时间让我理解这一点,那将是很棒的。提前谢谢。

1 个答案:

答案 0 :(得分:6)

密度返回的数字本身并不直接转换为概率。但它给出了曲线的高度,如果在整个可能的数字范围内绘制,则其下方的面积加起来为1.

考虑一下。如果我将矢量x的均匀间隔数字从-7.5到7.5,相隔0.1,并获得正常变量的密度,其中x的每个值均值为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

如果你用微积分正确地做了这个,而不是用数字逼近它,它就是一个。

为什么这有用?曲线部分下的累积面积可用于估计变量在特定范围中的任何位置出现的概率,即使您的某个消息来源指出,任何精确数字在技术上的可能性连续变量为零。

考虑这个图形。阴影空间的区域显示了正态分布(平均零,标准差2.5)的变量在-7.5和4之间的可能性。这导致了许多有用的应用。

enter image description here

制作:

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")