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


R tsboot 時間序列的引導


R語言 tsboot 位於 boot 包(package)。

說明

生成應用於時間序列的統計數據的 R 引導複製。複製時間序列可以使用固定或隨機塊長度生成,也可以是基於模型的複製。

用法

tsboot(tseries, statistic, R, l = NULL, sim = "model",
       endcorr = TRUE, n.sim = NROW(tseries), orig.t = TRUE,
       ran.gen, ran.args = NULL, norm = TRUE, ...,
       parallel = c("no", "multicore", "snow"),
       ncpus = getOption("boot.ncpus", 1L), cl = NULL)

參數

tseries

單變量或多變量時間序列。

statistic

應用於 tseries 時返回包含感興趣統計數據的向量的函數。每次調用 statistic 時,都會傳遞一個長度為 n.sim 的時間序列,該時間序列與原始 tseries 屬於同一類。 statistic 采用的任何其他參數對於每個引導複製都必須保持不變,並且應通過 ... 參數提供給 tsboot

R

一個正整數,給出所需的引導重複次數。

sim

生成複製時間序列所需的模擬類型。可能的輸入值是 "model" (基於模型的重采樣)、"fixed" (具有固定塊長度 l 的塊重采樣)、"geom" (具有均值為 l 的幾何分布的塊長度的塊重采樣)或"scramble"(相位擾亂)。

l

如果sim"fixed",則l 是用於生成複製時間序列的固定塊長度。如果sim"geom",則l 是用於生成塊長度的幾何分布的平均值。 l 應該是小於 tseries 長度的正整數。當 sim"model" 時,不需要此參數,但所有其他模擬類型都需要此參數。

endcorr

指示當sim"fixed"時是否應用結束校正的邏輯變量。當sim"geom"時,endcorr自動設置為TRUE;當 sim"model""scramble" 時,不使用 endcorr

n.sim

模擬時間序列的長度。通常,這將等於原始時間序列的長度,但在某些情況下它會更大。一種明顯的情況是是否需要預測。 n.sim 大於原始長度的另一種情況是 tseries 是某個模型與原始時間序列擬合的殘差時間序列。在這種情況下,n.sim 通常是原始時間序列的長度。

orig.t

一個邏輯變量,指示 statistic 是否應應用於 tseries 本身以及引導複製係列。如果 statistic 預期的時間序列比 tseries 更長,或者如果將 statistic 應用於 tseries 不會產生任何有用的信息,則 orig.t 應設置為 FALSE

ran.gen

這是三個參數的函數。第一個參數是時間序列。如果sim"model",那麽傳遞的將始終是tseries。對於其他模擬類型,它是通過某種方案從 tseries 中選擇 n.sim 觀測值並將結果轉換回與 tseries 形式相同的時間序列(盡管長度為 n.sim )的結果。 ran.gen 的第二個參數始終是值 n.sim ,第三個參數是 ran.args ,用於提供 ran.gen 所需的任何其他對象。如果 sim"model" 則複製時間序列的生成將在 ran.gen 中完成(例如通過使用 arima.sim )。對於其他模擬類型,ran.gen 用於“post-blackening”。默認情況下,該函數僅返回傳遞給它的時間序列。

ran.args

每次調用時都會將其提供給ran.gen。如果 ran.gen 需要任何額外的參數,那麽它們應該作為 ran.args 的組件提供。通過將 ran.args 設為列表可以傳遞多個參數。如果ran.argsNULL,則不應在ran.gen 中使用它,但請注意ran.gen 仍必須有其第三個參數。

norm

一個邏輯參數,指示是否應使用正常裕度進行相位擾亂。如果normFALSE,則使用與精確經驗邊距相對應的邊距。

...

此處可以提供 statistic 的額外命名參數。請注意與上麵列出的 tsboot 參數的部分匹配。

parallel , ncpus , cl

請參閱 boot 的幫助。

細節

如果 sim"fixed",則通過從原始時間序列中取出長度為 l 的塊並將它們端到端放置,直到創建長度為 n.sim 的新序列,找到每個複製時間序列。當 sim"geom" 時,采用類似的方法,隻不過現在塊長度是根據平均值為 l 的幾何分布生成的。通過在 tsboot 調用中包含函數 ran.gen 並將 tseries 作為殘差時間序列,可以對這些複製時間序列執行 Post-blackening。

基於模型的重采樣與參數引導非常相似,所有模擬都必須在用戶指定的函數之一中進行。這避免了選擇塊長度的複雜問題,但依賴於做出的準確模型選擇。

Davison 和 Hinkley (1997) 的第 8.2.4 節說明了相位擾亂。此方法產生合理結果的統計類型非常有限,而其他方法在大多數情況下似乎做得更好。頻域中的其他類型的重采樣可以使用帶有參數 sim = "parametric" 的函數 boot 來完成。

"boot" 的對象,具有以下組件。

t0

如果 orig.tTRUEt0statistic(tseries,...{}) 的結果,否則是 NULL

t

statistic 應用到複製時間序列的結果。

R

提供給 tsbootR 的值。

tseries

原始時間序列。

statistic

提供的函數statistic

sim

用於生成重複的模擬類型。

endcorr

使用的endcorr 的值。僅當 sim"fixed" 時,該值才有意義;對於基於模型的仿真或相位加擾,它會被忽略,並且如果 sim"geom" ,則始終設置為 TRUE

n.sim

使用的n.sim 的值。

l

l 的值用於基於塊的重采樣。如果未使用基於塊的重采樣,這將是NULL

ran.gen

ran.gen 函數用於生成係列或“post-blackening”。

ran.args

傳遞給 ran.gen 的額外參數。

call

tsboot 的原始調用。

例子

lynx.fun <- function(tsb) {
     ar.fit <- ar(tsb, order.max = 25)
     c(ar.fit$order, mean(tsb), tsb)
}

# the stationary bootstrap with mean block length 20
lynx.1 <- tsboot(log(lynx), lynx.fun, R = 99, l = 20, sim = "geom")

# the fixed block bootstrap with length 20
lynx.2 <- tsboot(log(lynx), lynx.fun, R = 99, l = 20, sim = "fixed")

# Now for model based resampling we need the original model
# Note that for all of the bootstraps which use the residuals as their
# data, we set orig.t to FALSE since the function applied to the residual
# time series will be meaningless.
lynx.ar <- ar(log(lynx))
lynx.model <- list(order = c(lynx.ar$order, 0, 0), ar = lynx.ar$ar)
lynx.res <- lynx.ar$resid[!is.na(lynx.ar$resid)]
lynx.res <- lynx.res - mean(lynx.res)

lynx.sim <- function(res,n.sim, ran.args) {
     # random generation of replicate series using arima.sim 
     rg1 <- function(n, res) sample(res, n, replace = TRUE)
     ts.orig <- ran.args$ts
     ts.mod <- ran.args$model
     mean(ts.orig)+ts(arima.sim(model = ts.mod, n = n.sim,
                      rand.gen = rg1, res = as.vector(res)))
}

lynx.3 <- tsboot(lynx.res, lynx.fun, R = 99, sim = "model", n.sim = 114,
                 orig.t = FALSE, ran.gen = lynx.sim, 
                 ran.args = list(ts = log(lynx), model = lynx.model))

#  For "post-blackening" we need to define another function
lynx.black <- function(res, n.sim, ran.args) {
     ts.orig <- ran.args$ts
     ts.mod <- ran.args$model
     mean(ts.orig) + ts(arima.sim(model = ts.mod,n = n.sim,innov = res))
}

# Now we can run apply the two types of block resampling again but this
# time applying post-blackening.
lynx.1b <- tsboot(lynx.res, lynx.fun, R = 99, l = 20, sim = "fixed",
                  n.sim = 114, orig.t = FALSE, ran.gen = lynx.black, 
                  ran.args = list(ts = log(lynx), model = lynx.model))

lynx.2b <- tsboot(lynx.res, lynx.fun, R = 99, l = 20, sim = "geom",
                  n.sim = 114, orig.t = FALSE, ran.gen = lynx.black, 
                  ran.args = list(ts = log(lynx), model = lynx.model))

# To compare the observed order of the bootstrap replicates we
# proceed as follows.
table(lynx.1$t[, 1])
table(lynx.1b$t[, 1])
table(lynx.2$t[, 1])
table(lynx.2b$t[, 1])
table(lynx.3$t[, 1])
# Notice that the post-blackened and model-based bootstraps preserve
# the true order of the model (11) in many more cases than the others.

參考

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

Kunsch, H.R. (1989) The jackknife and the bootstrap for general stationary observations. Annals of Statistics, 17, 1217-1241.

Politis, D.N. and Romano, J.P. (1994) The stationary bootstrap. Journal of the American Statistical Association, 89, 1303-1313.

也可以看看

boot , arima.sim

相關用法


注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Bootstrapping of Time Series。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。