微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 R 中绘制对数正态密度有错误的高度

如何解决在 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))

enter image description here

当我将输入范围调整为 0-1 时,高度接近 4:

curve(dlnorm(x,1),6))

enter image description here


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 举报,一经查实,本站将立刻删除。