假设我们从具有参数mu和sigma的对数正态分布中得到大小为n = 8的随机样本。由于它是一个小样本,从非正常人群中我将使用t置信区间。我进行了模拟,以确定90%t-CI的真实(模拟)CI,其中mu = 1,sigma = 1.5
我的问题是我的代码遵循NORMAL分布,它需要是对数正态分布。 我知道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) Sigma = exp(2μ+σ2)(exp(σ2)-1)
我的模拟信心水平为5000.
答案 0 :(得分: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