时间序列的bootstrap

 

 

bootstrap是一个很简单的重抽样过程,然而放在时间序列上就没那么简单了。与随机序列不同,时间序列存在时间趋势,不能直接通过原序列进行构造。一般来讲对于时间序列,抽样方式有以下几种:

 

Part 1 块抽样(block bootstrap)

block bootstrap有两种形式,第一种是moving block bootstrap,简称MBB,由学者Künsch在1989年提出。具体方法如下:

首先选取一个长度为n的目标序列,选择长度b作为分割长度的序列(即每次抽取序列的长度)

将原序列(长度为n的序列)尽可能多的分割成长度为b的重叠的(overlaping)子序列,总共可以分割成n-b+1个重叠子序列。

由于每个序列长度为b,总共仅需n/b个序列即可组成与原序列等长的序列。因而在总共n-b+1个序列中随机抽取n/b个序列。

最后,再将抽出来的n/b个序列按照其抽样顺序重新组合,即可得到bootstrap序列。

第二种是Non-overlapping Block(NBB),具体方法与MBB类似,区别在于是否有重叠(overlapping)

 

Part 2 静态抽样(stationary bootstrap)

stataionary boostrap是block bootstrap升级版,目的是为了解决bootstrap序列的stationary的问题(我也不知道什么叫stationary)。将前述的定长b变成一个符合某个分布的(比如正态分布)的一组随机长度,即可解决。

引自:https://en.wikipedia.org/wiki/Bootstrapping_(statistics)

 

Part 3 基于模型的抽样(model based bootstrap)

比较常见的是Sieve Bootstrap方法。具体方法结合R包中的tsboot函数的case进行分析。本文方法参考严方笠(2017)具体方法如下:

首先对原序列利用进行拟合,目的是为了得到原序列根据某一时间序列模型的残差序列res。下例中通过ar模型进行拟合。

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.3 <- tsboot(lynx.res, lynx.fun, R = 99, sim = "model", n.sim = 110,
                 orig.t = FALSE, ran.gen = lynx.sim, 
                 ran.args = list(ts = log(lynx), model = lynx.model))

虽然序列的输入是残差序列,但是输出却是完整的bootstrap序列,主要是因为lynx.sim函数

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.sim函数返回值实质上是原时间序列的均值,加上由lynx.model拟合出的参数所确定的arima模型(本case中只有ar项有值,实质上是AR(1)模型)

 

  • 8
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

粟智豪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值