当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


R boot.ci 非参数引导置信区间


R语言 boot.ci 位于 boot 包(package)。

说明

该函数生成 5 种不同类型的等尾两侧非参数置信区间。它们是一阶正态近似、基本 Bootstrap 区间、学生化 Bootstrap 区间、Bootstrap 百分位区间和调整 Bootstrap 百分位 (BCa) 区间。可以生成这些间隔的全部或子集。

用法

boot.ci(boot.out, conf = 0.95, type = "all", 
        index = 1:min(2,length(boot.out$t0)), var.t0 = NULL, 
        var.t = NULL, t0 = NULL, t = NULL, L = NULL,
        h = function(t) t, hdot = function(t) rep(1,length(t)),
        hinv = function(t) t, ...)

参数

boot.out

"boot" 的对象,包含引导计算的输出。

conf

包含所需区间置信水平的标量或向量。

type

表示所需间隔类型的字符串向量。该值应该是值 c("norm","basic", "stud", "perc", "bca") 的任何子集,或者只是 "all",它将计算所有五种类型的间隔。

index

这应该是长度为 1 或 2 的向量。 index 的第一个元素指示 boot.out$t0 中感兴趣的变量的位置以及 boot.out$t 中的相关列。第二个元素表示感兴趣变量的方差位置。如果同时提供var.t0var.t,则忽略index 的第二个元素(如果存在)。默认情况下,感兴趣的变量位于位置 1,其方差位于位置 2(只要 boot.out$t0 中有 2 个位置)。

var.t0

如果提供,则用作正态近似和学生化区间统计方差估计的值。如果未提供且length(index) 为2,则var.t0 默认为boot.out$t0[index[2]],否则var.t0 未定义。对于学生化间隔,必须定义var.t0。对于正态近似,如果 var.t0 未定义,则默认为 var(t) 。如果通过参数 h 提供转换,则 var.t0 应是未转换统计量的方差。

var.t

这是感兴趣变量的引导复制的方差向量(长度为 boot.out$R )。它仅用于学生化间隔。如果未提供且 length(index) 为 2,则 var.t 默认为 boot.out$t[,index[2]] ,否则其值未定义,这将导致学生化间隔出错。如果通过参数 h 提供转换,则 var.t 应该是未转换的引导统计信息的方差。

t0

感兴趣的统计量的观测值。默认值为boot.out$t0[index[1]]t0t 的规范允许用户获取可能不在引导程序输出对象中的转换统计数据的间隔。请参阅下面的第二个示例。实现此目的的另一种方法是提供下面的函数 hhdothinv

t

引导程序复制感兴趣的统计数据。它必须是长度为 boot.out$R 的向量。提供 t0t 之一而不提供另一个是错误的。此外,如果需要学生化间隔并且提供了 t0t ,那么应该是 var.t0var.t 。默认值为boot.out$t[,index]

L

观测数据的感兴趣统计量的经验影响值。这些仅用于 BCa 间隔。如果通过参数 h 提供变换,则 L 应该是 t 的影响值; h(t) 的值源自函数内的这些值和hdot。如果未提供L,则在需要时使用empinf 计算这些值。

h

定义转换的函数。间隔按 h(t) 的比例计算,并将反函数 hinv 应用于所得间隔。它必须是仅一个变量的函数,并且对于向量参数,它必须返回相同长度的向量,即 h(c(t1,t2,t3)) 应返回 c(h(t1),h(t2),h(t3)) 。默认为恒等函数。

hdot

一个参数的函数,返回 h 的导数。如果提供了 h 并且需要正常、学生化或 BCa 间隔,则它是必需的参数。该函数用于使用 delta 方法近似 h(t0)h(t) 的方差,也用于查找 BCa 区间的经验影响值。像h 一样,它应该能够接受向量参数并返回相同长度的向量。默认为常数函数 1。

hinv

一个函数,例如 h ,它返回 h 的逆值。它用于将在 h(t) 尺度上计算的间隔转换回原始尺度。默认为恒等函数。如果提供了 h 但未提供 hinv,则返回的间隔将采用转换后的比例。

...

boot.out$statistic 期望的任何额外参数。仅当需要 BCa 间隔且未提供 L 时才需要这些参数,因为在这种情况下,L 是通过调用 empinf 计算的,而 empinf 又调用 boot.out$statistic

细节

计算所依据的公式可以在 Davison 和 Hinkley (1997) 的第 5 章中找到。函数 boot 必须在运行此函数之前运行,以创建要作为 boot.out 传递的对象。

学生化区间需要方差估计。对于正常理论区间,观察到的统计量的方差是可选的。如果未提供,则使用方差的引导估计。正常间隔也使用自举偏差校正。

当需要非整数阶统计量时,使用正常分位数尺度的插值。如果使用的阶次统计量是 boot.out 中 R 值的最小或最大,则会生成警告,并且此类间隔不应被视为可靠。

包含间隔的 "bootci" 类型的对象。它有组件

R

间隔所基于的引导重复次数。

t0

与间隔相同尺度的统计观察值。

call

对生成对象的 boot.ci 的调用。

它还将包含以下一个或多个组件,具体取决于 bootci 调用中使用的 type 的值。

normal

使用正态近似计算的间隔矩阵。它将有 3 列,第一列是水平,另外两列是间隔的上端点和下端点。

basic

使用基本引导方法计算的间隔。

student

使用学生引导法计算的间隔。

percent

使用 bootstrap 百分位数方法计算的间隔。

bca

使用调整引导百分位数 (BCa) 方法计算的间隔。

后四个组件将是具有 5 列的矩阵,第一列包含级别,接下来的两列包含计算中使用的顺序统计数据的索引,最后两列包含计算的端点本身。

例子

# confidence intervals for the city data
ratio <- function(d, w) sum(d$x * w)/sum(d$u * w)
city.boot <- boot(city, ratio, R = 999, stype = "w", sim = "ordinary")
boot.ci(city.boot, conf = c(0.90, 0.95),
        type = c("norm", "basic", "perc", "bca"))

# studentized confidence interval for the two sample 
# difference of means problem using the final two series
# of the gravity data. 
diff.means <- function(d, f)
{    n <- nrow(d)
     gp1 <- 1:table(as.numeric(d$series))[1]
     m1 <- sum(d[gp1,1] * f[gp1])/sum(f[gp1])
     m2 <- sum(d[-gp1,1] * f[-gp1])/sum(f[-gp1])
     ss1 <- sum(d[gp1,1]^2 * f[gp1]) - (m1 *  m1 * sum(f[gp1]))
     ss2 <- sum(d[-gp1,1]^2 * f[-gp1]) - (m2 *  m2 * sum(f[-gp1]))
     c(m1 - m2, (ss1 + ss2)/(sum(f) - 2))
}
grav1 <- gravity[as.numeric(gravity[,2]) >= 7, ]
grav1.boot <- boot(grav1, diff.means, R = 999, stype = "f",
                   strata = grav1[ ,2])
boot.ci(grav1.boot, type = c("stud", "norm"))

# Nonparametric confidence intervals for mean failure time 
# of the air-conditioning data as in Example 5.4 of Davison
# and Hinkley (1997)
mean.fun <- function(d, i) 
{    m <- mean(d$hours[i])
     n <- length(i)
     v <- (n-1)*var(d$hours[i])/n^2
     c(m, v)
}
air.boot <- boot(aircondit, mean.fun, R = 999)
boot.ci(air.boot, type = c("norm", "basic", "perc", "stud"))

# Now using the log transformation
# There are two ways of doing this and they both give the
# same intervals.

# Method 1
boot.ci(air.boot, type = c("norm", "basic", "perc", "stud"), 
        h = log, hdot = function(x) 1/x)

# Method 2
vt0 <- air.boot$t0[2]/air.boot$t0[1]^2
vt <- air.boot$t[, 2]/air.boot$t[ ,1]^2
boot.ci(air.boot, type = c("norm", "basic", "perc", "stud"), 
        t0 = log(air.boot$t0[1]), t = log(air.boot$t[,1]),
        var.t0 = vt0, var.t = vt)

参考

Davison, A.C. and Hinkley, D.V. (1997) Bootstrap Methods and Their Application, Chapter 5. Cambridge University Press.

DiCiccio, T.J. and Efron B. (1996) Bootstrap confidence intervals (with Discussion). Statistical Science, 11, 189-228.

Efron, B. (1987) Better bootstrap confidence intervals (with Discussion). Journal of the American Statistical Association, 82, 171-200.

也可以看看

abc.ci , boot , empinf , norm.ci

相关用法


注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Nonparametric Bootstrap Confidence Intervals。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。