Как работает dnorm?
Я очень плохо знаком со статистикой и R. Может быть, это очень тривиальный вопрос, но я не совсем понимаю, как это работает.
Предположим, я использую dnorm(5, 0, 2.5)
, Что это значит?
Я видел некоторые ресурсы, где они сказали, что эта функция вычисляет высоту точки на кривой плотности.
Теперь я снова прочитал, что точная вероятность числа 0 в непрерывном распределении. Итак, мой вопрос: если я могу узнать высоту или вероятность определенного значения, то почему это 0?
Я знаю, что перепутал некоторые понятия. Но я не могу найти, где я не прав. Будет здорово, если вы уделите мне время, чтобы я понял это. Заранее спасибо.
1 ответ
Плотность возвращает число, которое само по себе не переводит непосредственно в вероятность. Но он дает высоту кривой, которая, если нарисована по всему диапазону возможных чисел, имеет область под ней, которая в сумме составляет 1.
Учти это. Если я сделаю вектор x
равномерно распределенных чисел от -7,5 до 7,5, с интервалом 0,1, и получить плотность нормальной переменной со средним 0 и стандартным отклонением 2,5 для каждого значения x
,
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. Это приводит ко многим полезным приложениям.
Сделано с:
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")