【问题标题】:Mean and standard deviation in normal distribution and log-normal distribution正态分布和对数正态分布的均值和标准差
【发布时间】:2016-09-18 05:46:59
【问题描述】:

下面是我的代码:

set.seed(1)


par(mfrow=c(1,2))
lognorm.gen <- function(mu,sigma){
  ns <- rnorm(1000,mu,sigma)
  ns <- exp(ns)

  hist(ns,probability = T, main = expression(paste("Sample Density Curve", mu, sigma)))
  y <- seq(0,15,length=100)
  lines(y,dlnorm(y,mu,sigma))
}

lognorm.gen(0,0.25)

我从正态生成样本,然后将它们转换为对数正态分布。首先,我在rnorm() 中使用musigma 作为参数,然后我应该在dlnorm() 中使用exp(mu)exp(sigma)。但是,该图显示线和直方图偏离了很多。相反,dlnorm() 中的 musigma 可以很好地拟合直方图。所以我想知道为什么我不应该在这种情况下使用exp(mu)

【问题讨论】:

    标签: r statistics


    【解决方案1】:

    请阅读?dlnorm:

     dlnorm(x, meanlog = 0, sdlog = 1, log = FALSE)
     plnorm(q, meanlog = 0, sdlog = 1, lower.tail = TRUE, log.p = FALSE)
     qlnorm(p, meanlog = 0, sdlog = 1, lower.tail = TRUE, log.p = FALSE)
     rlnorm(n, meanlog = 0, sdlog = 1)
    
    meanlog, sdlog: mean and standard deviation of the distribution on the
          log scale with default values of ‘0’ and ‘1’ respectively.
    

    平均值和标准差在对数刻度中指定。这就是为什么您仍然需要在 rnorm 中使用的 musigma,而不是 exp(mu)exp(sigma)

    【讨论】:

    • 我读过?dlnorm,但我误解了meanlog() 的工作原理。谢谢你的帮助。顺便说一句,如果我希望我的标题准确显示 mu 作为值输入而不是两个字符本身,我应该更改什么?
    • 该函数是将值转换为对数刻度还是以对数刻度输入值?例如你会将meanlog 的值设置为mean(x) 还是mean(log(x))
    • @daneshjai mean(log(x))