當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。