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


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