我可以为该样本假设(对数)正态吗?


11

这是我的样品的QQ图(注意对数Y轴);:n=1000

在此处输入图片说明
正如whuber所指出的,这表明基础分布是左偏斜的(右尾较短)。

使用R中的shapiro.test(对数转换后的数据),我得到的检验统计和的p值,这意味着我们正式拒绝了零假设在95%置信水平下的。5.172 10 - 13W=0.97185.1721013H0:the sample is normal distributed

我的问题是:在实践中,假设(对数)正态性是否足够用于进一步分析?特别是,我想使用Cox和Land的近似方法计算相似样本均值的置信区间(在论文中进行描述:Zou,GY,cindy Yan Huo和Taleban,J.(2009)。对数正态平均值及其与环境应用的差异(环境计量学20,172–180):

ci <- function (x) {
        y <- log(x)
        n <- length(y)
        s2 <- var(y)
        m <- mean(y) + s2 / 2
        z <- qnorm(1 - 0.05 / 2) # 95%
        #z <- qnorm(1 - 0.10 / 2) # 90%
        d <- z * sqrt(s2 / n + s2 * s2 / (2 * (n - 1)))

        return(c(exp(m - d), exp(m + d)))
}

我已经注意到,置信区间倾向于以稍微高于实际样本均值的点为中心。例如:

> mean(x)
[1] 82.3076
> y <- log(x)
> exp(mean(y) + var(y) / 2)
[1] 91.22831

我认为这两个值在下应该相同。H0


1
该分布肯定不适合右尾巴。
Michael R. Chernick

1
此QQ图显示数据的右尾比对数正态分布得多:与对数正态相比,数据偏左。因此,您应该谨慎使用基于对数正态的过程。
ub

@whuber是的,您认为它是左偏斜而不是右偏斜是正确的。我应该更新问题吗?
Vegard

当然:我们感谢您对问题的改进。
ub

2
注意:请注意,“左偏斜”是指尾短,而不是左尾长。通过图右侧的点如何落在参考线以下可以明显看出这一点。由于图左侧的点(相对)接近参考线,因此将这种分布描述为具有“较长的左尾”是不正确的。这种区别很重要,在这里,因为正确的尾巴应该有对估计平均非常大的影响比左边的尾巴做(而这两个尾影响其置信区间)。
ub

Answers:


12

与对数正态分布相比,这些数据的尾巴较短,与Gamma分布相同:

set.seed(17)
par(mfcol=c(1,1))
x <- rgamma(500, 1.9)
qqnorm(log(x), pch=20, cex=.8, asp=1)
abline(mean(log(x)) + .1,1.2*sd(log(x)), col="Gray", lwd=2)

QQ情节

然而,因为数据强右偏,我们可以期待值最大的估计均值和置信区间中发挥了重要的作用。因此,我们应该预期对数正态(LN)估计量将倾向于高估均值和两个置信度极限

让我们检查一下,并进行比较,以使用通常的估计量:即样本均值及其正常理论置信区间。请注意,通常的估计量仅依赖于样本均值的近似正态性,而不依赖于数据,并且在具有如此大的数据集的情况下,可以预期其运作良好。为此,我们需要对ci函数进行一些修改:

ci <- function (x, alpha=.05) {
  z <- -qnorm(alpha / 2)
  y <- log(x); n <- length(y); s2 <- var(y)
  m <- mean(y) + s2 / 2
  d <- z * sqrt(s2 / n + s2 * s2 / (2 * (n - 1)))
  exp(c(mean=m, lcl=m-d, ucl=m+d))
}

这是正常理论估计的并行函数:

ci.u <- function(x, alpha=.05) {
 mean(x) + sd(x) * c(mean=0, lcl=1, ucl=-1) / sqrt(length(x)) * qnorm(alpha/2)
}

应用于此模拟数据集,输出为

> ci(x)
   mean     lcl     ucl 
2.03965 1.87712 2.21626 
> ci.u(x)
   mean     lcl     ucl 
1.94301 1.81382 2.07219 

通过产生的正态理论估计值ci.u看起来更接近的真实均值,但是很难从一个数据集中判断哪个程序趋于更好地工作。为了找出答案,让我们模拟很多数据集:1.9

trial <- function(n=500, k=1.9) {
  x <- rgamma(n, k)
  cbind(ci(x), ci.u(x))
}
set.seed(17)
sim <- replicate(5000, trial())

我们有兴趣将输出与的真实平均值进行比较。在这方面,一组直方图正在揭示:1.9

xmin <- min(sim)
xmax <- max(sim)
h <- function(i, ...) {
  b <- seq(from=floor(xmin*10)/10, to=ceiling(xmax*10)/10, by=0.1)
  hist(sim[i,], freq=TRUE, breaks=b, col="#a0a0FF", xlab="x", xlim=c(xmin, xmax), ...)
  hist(sim[i,sim[i,] >= 1.9], add=TRUE,freq=TRUE, breaks=b, col="#FFa0a0",
                              xlab="x", xlim=c(xmin, xmax), ...)
}
par(mfcol=c(2,3))
h(1, main="LN Estimate of Mean")
h(4, main="Sample Mean")
h(2, main="LN LCL")
h(5, main="LCL")
h(3, main="LN UCL")
h(6, main="UCL")

直方图

现在很明显,对数正态程序倾向于高估均值和置信度极限,而常规程序则做得很好。我们可以估计置信区间过程的覆盖范围:

> sapply(c(LNLCL=2, LCL=5, LNUCL=3, UCL=6), function(i) sum(sim[i,] > 1.9)/dim(sim)[2])
 LNLCL    LCL  LNUCL    UCL 
0.2230 0.0234 1.0000 0.9648 

此计算表明:

  • LN下限将无法在大约22.3%的时间内覆盖真实的平均值(而不是预期的2.5%)。

  • 通常的下限将无法在大约2.3%的时间内覆盖真实的均值,接近预期的2.5%。

  • LN上限将始终超过真实均值(而不是在预期时间的2.​​5%内降至其下限)。这使其成为双向100%-(22.3%+ 0%)= 77.7%的置信区间,而不是95%的置信区间。

  • 通常的上限将无法覆盖约100-96.5 = 3.5%的时间的真实平均值。这比2.5%的预期值略大。因此,通常的限制包括双向100%-(2.3%+ 3.5%)= 94.2%置信区间,而不是95%置信区间。

对数正态区间的名义覆盖率从95%降低到77.7%是可怕的。在通常的时间间隔内减少到94.2%一点也不差,这可以归因于偏斜(原始数据,而不是对数)的影响。

我们不得不得出结论,进一步分析了平均的应该承担对数正态分布。

小心!某些过程(例如预测限制)比这些均值的置信度限制对偏斜更为敏感,因此可能需要考虑其偏斜分布。但是,对数正态程序对于这些数据进行几乎任何预期的分析似乎都无法很好地执行。


哇,这个答案让我震惊。非常感谢!在第一个示例中,您如何使用abline()而不是qqline()(产生不同的行)?
Vegard 2012年

您的trial()函数不使用其参数。
Vegard 2012年


1
不错的工作!要进行引导,请修改trialtrial <- function(y) { x <- sample(y, length(y), TRUE); cbind(ci(x), ci.u(x)) }。然后只发出一个命令sim <- sapply(1:5000, function(i) trial(x))。您可能希望探索sim之后六行的直方图。
ub

1
+1,我特别喜欢这样一个微妙的点,即预测间隔比均值的置信区间对分布形状更敏感。
呱-恢复莫妮卡
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.