时间序列的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
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Bootstrap区间预测是一种基于自助法(bootstrap)的统计方法,用于估计预测结果的置信区间范围。它适用于各种预测模型,如线性回归、时间序列模型等。 Bootstrap区间预测的基本思想是通过从原始数据中有放回地抽取多个样本,构建多个自助样本集。然后,在每个自助样本集上进行预测,并记录预测结果。通过对多个预测结果进行排序,可以得到置信区间的上界和下界。 具体步骤如下: 1. 从原始数据中有放回地抽取多个自助样本集,每个自助样本集的大小与原始数据集相同。 2. 对每个自助样本集,应用所选的预测模型进行预测。 3. 重复步骤1和步骤2多次,通常重复1000次或更多次,以获得足够的预测结果。 4. 对每个自助样本集的预测结果进行排序,计算置信区间的上界和下界。常用的方法包括百分位法、标准差法等。 通过Bootstrap区间预测,可以获得预测结果的置信区间范围。置信区间反映了预测结果的不确定性,并提供了对预测结果的可信度评估。通常,置信区间越宽,表示预测结果的不确定性越大;置信区间越窄,表示预测结果的不确定性越小。 需要注意的是,Bootstrap区间预测也有一些限制。首先,它假设样本数据是来自总体分布的独立同分布样本,因此对于非独立同分布的数据可能不适用。其次,Bootstrap区间预测仅基于已有数据进行估计,对于未来的未知数据可能存在一定的推广偏差。 综上所述,Bootstrap区间预测是一种灵活且广泛应用的统计方法,可以应用于各种预测模型,并提供了对预测结果不确定性的评估。在实际应用中,需要根据具体问题和数据特征选择合适的方法,并进行适当的参数设置和模型评估。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

粟智豪

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

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

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

打赏作者

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

抵扣说明:

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

余额充值