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


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。