Построение нормальной плотности журнала в R имеет неправильную высоту

У меня логнормальная плотность со средним значением -0,4 и стандартным отклонением 2,5.

В x = 0.001 высота больше 5 (я дважды проверил это значение с помощью формулы для логарифмически нормального PDF):

dlnorm(0.001, -0.4, 2.5)

5.389517

Когда я рисую его с помощью функции curve в диапазоне ввода 0-6, он выглядит с высотой чуть более 1,5:

curve(dlnorm(x, -.4, 2.5), xlim = c(0, 6), ylim = c(0, 6))

введите здесь описание изображения

Когда я настраиваю диапазон ввода на 0-1, высота почти равна 4:

curve(dlnorm(x, -.4, 2.5), xlim = c(0, 1), ylim = c(0, 6))

введите здесь описание изображения


Аналогично с ggplot2 (результаты не показаны, но выглядят как графики curve выше):

library(ggplot2)

ggplot(data = data.frame(x = 0), mapping = aes(x = x)) + 
  stat_function(fun = function(x) dlnorm(x, -0.4, 2.5)) + 
  xlim(0, 6) + 
  ylim(0, 6)

ggplot(data = data.frame(x = 0), mapping = aes(x = x)) + 
  stat_function(fun = function(x) dlnorm(x, -0.4, 2.5)) + 
  xlim(0, 1) + 
  ylim(0, 6)

Кто-нибудь знает, почему высота плотности меняется при настройке масштаба по оси x? И почему ни одна из попыток выше не достигает нужной высоты? Я пробовал это только с нормальной плотностью, и этого не происходит.


person LMc    schedule 29.01.2021    source источник


Ответы (1)


curves генерирует набор дискретных точек в указанном вами диапазоне. По умолчанию он генерирует n = 101 баллов, поэтому возникает проблема с шагом. Если вы увеличите количество точек, у вас будет почти правильное значение:

curve(dlnorm(x, -.4, 2.5), xlim = c(0, 1), ylim = c(0, 6), n = 1000)

В первом случае вы предлагаете curve генерировать 101 точку в интервале x <- c(0,6), а во втором случае генерировать 101 точку в интервале x <- c(0,1), поэтому шаг более плотный

person Leonardo    schedule 29.01.2021
comment
И это похожее поведение в ggplot2 тогда? - person LMc; 29.01.2021
comment
Да. Вы также можете изменить n на stat_function (значение по умолчанию всегда n = 101) - person Leonardo; 29.01.2021