在 R 中绘制对数正态密度的高度错误
Plotting log normal density in R has wrong height
我的对数正态密度平均值为 -0.4,标准差为 2.5。
在 x = 0.001
高度超过 5(我用对数正态 PDF 的公式仔细检查了这个值):
dlnorm(0.001, -0.4, 2.5)
5.389517
当我在输入范围 0-6 上使用 curve
函数绘制它时,它看起来高度刚好超过 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轴刻度时密度高度会变化吗?为什么以上两种尝试似乎都没有达到正确的高度?我只用正常密度试过这个,但没有发生。
curves
在你给它的范围内生成一组离散点。默认情况下它会生成 n = 101
点,因此存在 step 问题。如果你增加点数,你将得到几乎正确的值:
curve(dlnorm(x, -.4, 2.5), xlim = c(0, 1), ylim = c(0, 6), n = 1000)
第一种情况你建议curve
在区间x <- c(0,6)
内生成101个点,而第二种情况在区间x <- c(0,1)
内生成101个点,所以步长更多密集
我的对数正态密度平均值为 -0.4,标准差为 2.5。
在 x = 0.001
高度超过 5(我用对数正态 PDF 的公式仔细检查了这个值):
dlnorm(0.001, -0.4, 2.5)
5.389517
当我在输入范围 0-6 上使用 curve
函数绘制它时,它看起来高度刚好超过 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轴刻度时密度高度会变化吗?为什么以上两种尝试似乎都没有达到正确的高度?我只用正常密度试过这个,但没有发生。
curves
在你给它的范围内生成一组离散点。默认情况下它会生成 n = 101
点,因此存在 step 问题。如果你增加点数,你将得到几乎正确的值:
curve(dlnorm(x, -.4, 2.5), xlim = c(0, 1), ylim = c(0, 6), n = 1000)
第一种情况你建议curve
在区间x <- c(0,6)
内生成101个点,而第二种情况在区间x <- c(0,1)
内生成101个点,所以步长更多密集