Technical caveats with advanced CI methods (bca, studentized) implemented for block bootstrap methods

Open
#801 1 comment 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

Nobody has claimed this yet.

Assessment

Difficulty
5/5
Estimated time
Over a week
Newbie friendliness
22/100
Issue type
Feature
Clarity
Needs clarification
Activity status
Stale
Tech stack
python
Domain
data

Research direction

The issue questions IID jackknife for BCa and equal inner/outer block lengths for studentized CIs under block bootstrap, citing Götze & Künsch (1996) and Lahiri (2003). Locate the block-bootstrap CI code in the arch package and compare it to those references. Done is a documented rationale, a leave-k-out jackknife, or a separate inner block-length option plus tests; the thread itself does not name files or a required change.

Written by the indexing model from the issue text.

Description

Reading around the topic, if I understand correctly there are some technical caveats to the way this library computes CIs for block bootstrap methods. I wanted to check if you agree and if so if you have any opinion/rationale/citation on whether these are reasonable approximations or how much of a problem they are/aren't in practise

IID jackknife used for BCa intervals with non-IID data

When using method='bca' with block bootstrap methods, it uses a jackknife procedure to estimate the acceleration a, but this is done using the IID jackknife which doesn't account for serial dependence in the data. One suggestion might be to use a leave-k-out moving block jackknife with the same block size as the outer bootstrap, but I'm not sure if anything has been proven about it in this specific context, and wasn't able to find any papers specifically recommending it. I did find a paper [1] recommending a more complicated modification to the BCa method to make it suitable for use in a block bootstrap setting, however this assumes the statistic is a function of a vector mean and that the function's gradient is available.

It seems that common R routines like boot.ci also have the same problem, in that they use the IID jackknife for BCa intervals even when (as is apparently common) applied to the results of time-series bootstraps from tsboot etc. So it seems this practise may be common, but I'd like to understand if there's any justification for it as a reasonable approximation.

[1] Götze, F. & Künsch, H. R. (1996). "Second-order correctness of the blockwise bootstrap for stationary observations". The Annals of Statistics, 24(5), 1914–1933.

Same block length used for nested bootstrap and outer bootstrap with studentized intervals

IIUC the theory around consistency for nested applications of block bootstrap [2] requires that the inner block length must grow at a slower rate than the outer block length as a function of sample size / sequence length. But here you set it the same as the outer block length. Seems one needs at least a way to specify the inner block length (and ideally some automated way to set it, like we have for the outer block length).

[2] Lahiri, S. N. (2003). Resampling Methods for Dependent Data. Springer

Dominant language
Python
Stars
1.6k
Forks
298
Avg merge
14h 46m
Merged PRs (30d)
106

Getting set up

This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from bashtage/arch

All issues in bashtage/arch

Similar issues

More Python issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.