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


R tilt.boot 非参数倾斜引导


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

说明

此函数将运行具有相等重采样概率(如果需要)的初始引导程序,并将使用初始运行的输出来查找将统计值置于所需值的重采样概率。然后,它使用计算出的概率作为重采样分布来运行重要性重采样引导程序。

用法

tilt.boot(data, statistic, R, sim = "ordinary", stype = "i", 
          strata = rep(1, n), L = NULL, theta = NULL, 
          alpha = c(0.025, 0.975), tilt = TRUE, width = 0.5, 
          index = 1, ...)

参数

data

数据为向量、矩阵或 DataFrame 。如果它是矩阵或 DataFrame ,则每一行都被视为一个(多变量)观察。

statistic

应用于数据时返回包含感兴趣统计数据的向量的函数。它必须至少有两个参数。第一个参数始终是data,第二个参数应该是说明引导样本的索引、权重或频率向量。任何其他参数都必须提供给tilt.boot,并且每次调用时都将原封不动地传递给统计信息。

R

所需的引导程序重复次数。这通常是一个向量,第一个值表示在初始阶段要执行多少次统一引导模拟。 R 的其余值是从每个重新加权分布执行重采样的模拟次数。 R 的第一个值必须始终存在,值为 0 意味着不执行统一重采样。因此 length(R) 应始终等于 1+length(theta)

sim

这是一个字符串,指示所需的引导模拟类型。只能采用两个可能的值: "ordinary""balanced" 。如果初始未加权引导程序需要其他模拟类型,则需要运行 boot ,适当计算权重,然后使用计算出的权重再次运行 boot

stype

指示 statistic 所需的第二个参数类型的字符串。 stype 可以采用的可能值为"i"(索引)、"w"(权重)和"f"(频率)。

strata

表示多样本问题的层的整数向量或因子。

L

感兴趣统计的经验影响值。当 tiltTRUE 时,它们仅用于指数倾斜。如果tiltTRUE 并且未提供它们,则tilt.boot 使用empinf 来计算它们。

theta

倾斜分布所需的参数值。每个非均匀分布都应该有一个 theta 值。如果 R[1] 为 0 theta 是必需参数。否则,可以根据初始统一引导程序和 alpha 中的值来估计 theta 值。

alpha

需要倾斜的 alpha 级别。如果 R[1] 为 0 或提供了 theta,则忽略此参数,否则该参数用于查找 theta 的值作为初始均匀引导的分位数。在这种情况下, R[1] 应该足够大,以至于 min(c(alpha, 1-alpha))*R[1] > 5 ,如果不是这样,则会生成警告,表明 theta 是极值,因此倾斜输出可能不可靠。

tilt

一个逻辑变量,如果TRUE(默认值)表示应使用指数倾斜,否则使用局部频率平滑(smooth.f)。如果tiltFALSE,则R[1] 必须为正数。事实上,在这种情况下,R[1] 的值应该相当大(在 500 或更大的范围内)。

width

仅当 tiltFALSE 时才使用此参数,在这种情况下,它会原封不动地传递给 smooth.f 作为平滑操作的标准化带宽。该值一般应在 (0.2, 1) 范围内。有关更多详细信息,请参阅smooth.f

index

statistic 输出中感兴趣的统计数据的索引。默认情况下,使用 statistic 输出的第一个元素。

...

statistic 所需的任何其他参数。每次调用时,它们都会原封不动地传递给statistic

"boot" 的对象,具有以下组件

t0

原始数据统计量的观测值。

t

引导程序的值复制了统计数据。其中会有 sum(R),第一个 R[1] 对应于统一引导程序,其余部分对应于倾斜引导程序。

R

自举重复次数的输入向量。

data

提供的原始数据。

statistic

提供的statistic 函数。

sim

引导程序中使用的模拟类型,可以是 "ordinary""balanced"

stype

提供的统计数据类型,与输入值 stype 相同。

call

tilt.boot 的原始调用的副本。

strata

所提供的地层。

weights

使用的权重矩阵。如果 R[1] 大于 0,则第一行将是均匀权重,后续各行将是倾斜权重。如果R[1]等于0,则忽略均匀权重,仅输出倾斜权重。

theta

theta 的值用于倾斜分布。这些是输入值或从统一引导程序和 alpha 派生的值。

例子

# Note that these examples can take a while to run.

# Example 9.9 of Davison and Hinkley (1997).
grav1 <- gravity[as.numeric(gravity[,2]) >= 7, ]
grav.fun <- function(dat, w, orig) {
     strata <- tapply(dat[, 2], as.numeric(dat[, 2]))
     d <- dat[, 1]
     ns <- tabulate(strata)
     w <- w/tapply(w, strata, sum)[strata]
     mns <- as.vector(tapply(d * w, strata, sum)) # drop names
     mn2 <- tapply(d * d * w, strata, sum)
     s2hat <- sum((mn2 - mns^2)/ns)
     c(mns[2]-mns[1],s2hat,(mns[2]-mns[1]-orig)/sqrt(s2hat))
}
grav.z0 <- grav.fun(grav1, rep(1, 26), 0)
tilt.boot(grav1, grav.fun, R = c(249, 375, 375), stype = "w", 
          strata = grav1[,2], tilt = TRUE, index = 3, orig = grav.z0[1]) 


#  Example 9.10 of Davison and Hinkley (1997) requires a balanced 
#  importance resampling bootstrap to be run.  In this example we 
#  show how this might be run.  
acme.fun <- function(data, i, bhat) {
     d <- data[i,]
     n <- nrow(d)
     d.lm <- glm(d$acme~d$market)
     beta.b <- coef(d.lm)[2]
     d.diag <- boot::glm.diag(d.lm)
     SSx <- (n-1)*var(d$market)
     tmp <- (d$market-mean(d$market))*d.diag$res*d.diag$sd
     sr <- sqrt(sum(tmp^2))/SSx
     c(beta.b, sr, (beta.b-bhat)/sr)
}
acme.b <- acme.fun(acme, 1:nrow(acme), 0)
acme.boot1 <- tilt.boot(acme, acme.fun, R = c(499, 250, 250), 
                        stype = "i", sim = "balanced", alpha = c(0.05, 0.95), 
                        tilt = TRUE, index = 3, bhat = acme.b[1])

参考

Booth, J.G., Hall, P. and Wood, A.T.A. (1993) Balanced importance resampling for the bootstrap. Annals of Statistics, 21, 286-298.

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

Hinkley, D.V. and Shi, S. (1989) Importance sampling and the nested bootstrap. Biometrika, 76, 435-446.

也可以看看

boot , exp.tilt , Imp.Estimates , imp.weights , smooth.f

相关用法


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