偏态分布的均值是否存在可靠的非参数置信区间?


30

极偏斜的分布(例如对数正态分布)不会导致准确的引导置信区间。这是一个示例,说明无论您在R中尝试哪种引导方法,左右尾部区域都离理想的0.025较远:

require(boot)
n    <- 25
B    <- 1000
nsim <- 1000
set.seed(1)
which <- c('basic', 'perc', 'norm', 'bca', 'stud')
mul <- 0; sdl <- 1.65   # on log scale
dist <- c('normal', 'lognormal')[2]
switch(dist, normal    = {g <- function(x) x; mu <- mul},
             lognormal = {g <- exp; mu <- exp(mul + sdl * sdl / 2)})
count <- matrix(0, nrow=length(which), ncol=2,
                dimnames=list(which, c('lower', 'upper')))
stat <- function(x, j) {
## See http://www.psychology.mcmaster.ca/bennett/boot09/percentileT.pdf
  x <- x[j]
  m <- mean(x)
  s <- sd(x)
  n <- length(x)
  sem <- s / sqrt(n)
  m.var <- sem ^ 2
  c(m, m.var)
}
for(i in 1 : nsim) {
  if(i %% 100 == 0) cat(i, '')
  x <- g(rnorm(n, mul, sdl))
  b  <- boot(x, stat, R=B)
  ci <- boot.ci(b, type=which)
  for(w in which) {
    nam <- switch(w, perc='percent', norm='normal', basic='basic',
                  stud='student', bca='bca')
    z <- rev(rev(ci[[nam]])[1:2])
    count[w, 'lower'] <- count[w, 'lower'] + (z[1] > mu)
    count[w, 'upper'] <- count[w, 'upper'] + (z[2] < mu)
  }
}
cat('\n')
count / nsim

结果如下:

      lower upper
basic 0.000 0.329
perc  0.003 0.257
norm  0.000 0.287
bca   0.015 0.185
stud  0.005 0.129

对于单个引导程序仍然无法提供足够准确的覆盖率:ñ=400

      lower upper
basic 0.001 0.114
perc  0.005 0.093
norm  0.002 0.102
bca   0.017 0.067
stud  0.011 0.058

从对数正态分布采样时,经验似然也无法提供准确的置信区间。

是否有不依赖于预先知道分布的通用方法?有没有人试图通过将数据拟合到Tukey广义分布(此分布高度灵活)来获取均值的置信区间?对于CDF使用Kolmogorov-Smirnov置信带怎么办?计算CDF上下限的均值会非常保守吗?如果一种方法具有广泛的适用性,我会接受一些保守主义。λ

为了重申目标,我正在寻求一种普遍适用的方法来获得总体均值的置信区间,从而

  1. 如果原始数据分布不对称,则间隔不对称
  2. 该间隔在两个尾部具有正确的覆盖范围(例如,两个尾部具有0.025的错误概率)
  3. 该程序不需要分析师指定有关基础分布或使分布对称所需的变换的任何信息

注意这里的中心极限定理是无关紧要的。我有一个固定的小样本量,并且置信区间必须不对称才能在两条尾巴上都准确。在和的对数正态模型下,基于参数的置信区间仍然具有较差的覆盖率(左尾误差为0.012,右为0.047,两者均应为0.025)。Ťμ=0σ=1.65ñ=20000

在继续考虑这一问题时,有两种广泛的方法可以将我想讨论的问题概念化。

  1. 平均值不是至少在需要推理准确性时才适合非参数推理的数量。样本中位数对于任何连续分布都是有意义的,我们对中位数有一个简单的准确置信区间。在正态分布的大小为的样本中,中位数的置信区间比平均值的确切基于的置信区间长(请参见下面的代码)。也许这个1.28的系数是为健壮性和完全分配自由度付出的合理价格。ñ=201.28׍
  2. 即使没有单个引导程序会为来自极偏斜分布的样本给出足够准确的置信度限制,但双引导程序仍可以显着提高两条尾巴的置信度覆盖范围。 Nankervis取得了一些不错的结果,并提供了出色的计算算法。但是我找不到能实现此目的的软件。

上面的R代码说明了1 .:

## Exact CI for median from DescTools package SignTest.default
## See also ttp://www.stat.umn.edu/geyer/old03/5102/notes/rank.pdf,
## http://de.scribd.com/doc/75941305/Confidence-Interval-for-Median-Based-on-Sign-Test
cimed <- function(x, alpha=0.05, na.rm=FALSE) {
  if(na.rm) x <- x[! is.na(x)]
  n <- length(x)
  k <- qbinom(p=alpha / 2, size=n, prob=0.5, lower.tail=TRUE)
  ## Actual CL: 1 - 2 * pbinom(k - 1, size=n, prob=0.5) >= 1 - alpha
  sort(x)[c(k, n - k + 1)]
}

n <- 20
m <- 20000
cil <- cilt <- 0
z <- qt(0.975, n - 1)

for(i in 1 : m) {
  x <- rnorm(n)
  cil  <- cil + diff(cimed(x))
  cilt <- cilt + 2 * z * sqrt(var(x) / n)
}
cil  <- cil / m
cilt <- cilt / m

c(cil, cilt, cilt / cil, cil / cilt)

1
这是计算密集型的,但是如果您采用经验CDF,会开始随机生成布朗桥。每个布朗桥代表ecdf和一些假设的cdf之间的增量。使用假设的cdf计算平均值,然后按KS检验指定的因子对其加权。重复一会儿,您将获得一个加权的均值数据集并可以计算置信区间。
尼尔·弗里德曼

我没有假设的CDF。如果仅使用KS的上下0.95置信区域并从中计算出平均值,那将会发生什么,即,这将是非常保守的吗?
Frank Harrell 2015年

通过将随机生成的布朗桥添加到经验CDF中来引入假设CDF。另外,我不建议从置信区间取平均值。我建议通过生成许多假设分布(经过适当加权)然后获得置信区间来获得多种方法。基本上,这只是引导的一种不同方法,我认为结果可能会有所不同。
弗里德曼

有趣的是,它的编程效率如何,置信区间覆盖范围的准确性如何。谢谢你的建议。我想知道贝叶斯引导是否会模仿这一点。我在其他情况下尝试了贝叶斯引导程序,但它并没有改善置信区间的覆盖范围。
Frank Harrell 2015年

Answers:


11

我对这种非参数方法有些悲观,至少没有对基础分布引入某种约束。

ññ

αααñα

因此,如果您正在寻找适当的渐近覆盖范围,那么CLT当然可以实现。但是,您的问题意味着您(相当合理)对有限覆盖范围感兴趣。如我的示例所示,总会有病理情况破坏任何有限长度的CI。

现在,您仍然可以拥有一个非参数CI,它可以通过向分布中添加约束来实现良好的有限覆盖。例如,对数凹约束是非参数约束。但是,这似乎不足以解决您的问题,因为对数常态不是对数凹入的。

α


2
很棒的想法。我犹豫是否需要这些约束,因为我经常看到双峰分布和其他复杂性。
Frank Harrell 2015年

1
@FrankHarrell:已经完成了具有非参数对数凹面组件的混合模型的工作。但是,我目前无法想象有一种好的方法可以建立总体均值的置信度,尤其是在未知组件数的情况下。
悬崖AB

2

任何样本的基本假设之一就是代表性。分布的尾部越长,对于任何可靠地解决CI的方法来说,小样本就没有足够的代表性,因为样本无法代表分布。

例如,在样本数为250的指数分布上运行简单的perc CI可以得到很好的结果。尽管仍不理想,但它们比25个样本的a要好得多。

我同意Cliff AB的观点,不会有一个通用的解决方案,但您不必假设极端分布。不会有任何适用于小样本的东西。在某些情况下,样本可能必须非常大(但最好是错的)。

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.