如何解决在 R 中绘制对数正态密度有错误的高度
我有一个对数正态密度,平均值为 -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,1),6))
与 ggplot2
类似(输出未显示,但看起来像上面的 curve
图):
library(ggplot2)
ggplot(data = data.frame(x = 0),mapping = aes(x = x)) +
stat_function(fun = function(x) dlnorm(x,2.5)) +
xlim(0,6) +
ylim(0,6)
ggplot(data = data.frame(x = 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 个点,因此步骤更密集
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。