均匀分布最大值的蒙特卡洛置信区间方法?

机器算法验证 置信区间 引导程序 蒙特卡洛
2022-04-20 08:24:48

如果有样本来自具有 pdf的连续均匀分布,那么它众所周知,的 MLE是nX1X2...Xnf(x)=1θ,0xθθθ^=Xn

但是,如果使用 bootstrap 估计的置信区间,我们会看到置信区间类似于θ^=Xn[aXn,Xn],0<a<1

我想知道是否有一种蒙特卡洛方法可以提供更合理的置信区间,可能类似于[Xn,bXn],b>1

2个回答

是的,这是引导程序不一致的典型示例,但二次采样会产生有效的推理。参见Swanepoel (1986)Politis 和 Romano (1994)Canty 等。人。(2006 年)

为什么不直接使用置信区间的定义?

您寻求一个置信上限θ, 说1α覆盖范围。因为这无异于估计一个规模和Xn是你的测试统计,你应该寻找一个 UCL 的形式cXn对于一些普遍的常数c. 这一切意味着(根据定义)是

1α=Prθ[cXnθ]=Prθ[Xnθ/c]=1(1c)n.

解决方案是c=α1/n

有趣的是,可以以相同的方式找到的置信下限,形式 with这个置信区间从不包含θbXnb=(1α)1/nθ^=Xn

例如,假设并且我们寻求(对称的)两侧 95% 置信区间,因此因此:我们有 95% 的信心认为,底层均匀分布的极限位于从该分布中提取的 10 个 iid 中最大值的 1.446 到 1.003 倍之间。n=10α=0.025c=1.446126b=1.002535θ

作为测试(在 R 中):

# Specify the confidence.
alpha <- 1 - 0.95

# Create simulated values.
n <- 10                                 # Number of iid draws per trial
nTrials <- 10000                        # Number of trials
theta <- 1                              # Parameter (positive; its value doesn't matter)
set.seed(17)
x <- runif(n*nTrials, max=theta)        # The data
xn <- apply(matrix(x, nrow=n), 2, max)  # The test statistics

# Compute the coverage of the simulated intervals.
ucl.k <- (alpha/2)^(-1/n)
lcl.k <- (1-alpha/2)^(-1/n)
length(xn[lcl.k * xn <= theta & theta <= ucl.k * xn]) / nTrials

这个(可重现的)示例产生 95.05%,尽可能接近 95% 的标称覆盖率。