在 R 中绘制对数正态分布

机器算法验证 r 对数正态分布
2022-04-11 20:23:28

我需要绘制均值为 1 且方差为 0.6 in 的对数正态分布R我尝试使用as中的rlnorm函数来执行此操作R

x= rlnorm(500, log(1), log(0.6))

plot(density(x))

log(0.6)是否定的,这可能是我的代码无法正常工作的原因,但R文档中lnorm说标准偏差的值在日志中给出。如果我理解不正确,请纠正我。有人可以给我正确的R代码吗?

2个回答

正如@ocram 所说,参数meanlogsdlog对应于因此在指定分布的均值和标准差时,您不需要自己获取日志。这是一些修改后的代码,其中绘制了真实密度函数(不必像上面建议的@Glen_b 那样采样)和密度估计。μθ

x = rlnorm(500,1,.6)
grid = seq(0,25,.1)

plot(grid,dlnorm(grid,1,.6),type="l",xlab="x",ylab="f(x)")
lines(density(x),col="red")

legend("topright",c("True Density","Estimate"),lty=1,col=1:2)

在此处输入图像描述

如果,则 XN(μ,θ)Y=exp(X)

E(X)=μ,Var(X)=θ
E(Y)=exp(μ+θ2),Var(Y)=(exp(θ)1)exp(2μ+θ)
dlnorm, 参数meanlogsdlog对应于μθ.