0

假设我们有一个大小为 n = 8 的随机样本,来自对数正态分布,参数为 mu 和 sigma。由于它是一个小样本,因此我将使用非正态总体中的 t 置信区间。我进行了模拟以确定 90% t-CI 的真实(模拟)CI,其中 mu=1 和 sigma=1.5

我的问题是我下面的代码遵循正态分布,它需要是对数正态分布。我知道 rnorm 必须成为 rlnorm 以便随机变量来自对数分布。但我需要改变 mu 和 sigma 是什么。正态分布中的 Mu 和 sigma 在对数分布中不同。

对数分布中的 Mu = exp(μ + 1/2 σ^2)。而 sigma 是 exp (2 (μ+sigma^2)) – exp2 (μ+sigma^2)

我只是对如何将这两个方程合并到我的代码中感到困惑。

顺便说一句-如果您还没有猜到,我对 R 非常陌生。任何帮助将不胜感激!


MC <- 10000 # Number of samples to simulate
result <- c(1:MC)
mu <- 1
sigma <- 1.5
n <- 8; # Sample size
alpha <- 0.1 # the nominal confidence level is 100(1-alpha) percent

    t_criticalValue <- qt(p=(1-alpha/2), df=(n-1))

    for(i in 1:MC){
    mySample <- rlnorm(n=n, mean=mu, sd=sigma)
    lowerCL <- mean(mySample)-t_criticalValue*sd(mySample)/sqrt(n)
    upperCL <- mean(mySample)+t_criticalValue*sd(mySample)/sqrt(n)
    result[i] <- ((lowerCL < mu) & (mu < upperCL))
    }

SimulatedConfidenceLevel <- mean(result)

编辑:所以我尝试用各自的公式替换 mu 和 sd ......

(mu=exp(μ + 1/2 σ2) 西格玛= exp(2μ + σ2)(exp(σ2) - 1)

我得到了 5000 的模拟信心水平。

4

1 回答 1

0

以下是一些可重现的样本数据:

(x <- rlnorm(8, 1, 1.5))
## [1]  3.5415832  0.3563604  0.5052436  3.5703968  7.3696985  0.7737094 12.9768734 35.9143985

您对临界值的定义是正确的:

n <- length(x)
alpha <- 0.1 
t_critical_value <- qt(1 - alpha / 2, n - 1)

ggplot2绘图包中有一个实用函数,用于计算平均值和标准误差。在这种情况下,您可以将其应用于数据日志以查找mu其置信区间。

library(ggplot2)
mean_se(log(x), t_critical_value)    
##          y         ymin     ymax
## 1 1.088481 -0.006944755 2.183907
于 2014-02-19T10:59:57.643 回答