Question:
Consider a regression model $Y=m(X)+\epsilon$ for which $\epsilon$ is neither independent of $x$ nor identically distributed.
How would we go about generating prediction intervals in such a scenario? I’m specifically asking in a non-time series context, though if the method is equally applicable there – then even better.
(I.e. A $1-\alpha$ prediction interval $[l,u]$ for $Y|X = x$ such that $\mathbb{P}(l\leq Y \leq u | X=x) = 1-\alpha$.)
Personal Attempt at Finding Answer:
My usual approach would be (for IID noise): generate $N$ bootstrapped samples. For each bootstrapped sample, fit the model and compute the residuals. Make a prediction with the fitted model, and randomly sample from the residuals and add this to the prediction. (This is the approach also used in the video in bullet 3).
However, in the non-IID case, I’ve done a lot of reading and can’t seem to find a concrete answer:
The method offered here, based on Section 6.3.3 of Davidson and Hinckley (1997), I believe requires an OLS model and i.i.d,
Other proposals require transforming the data (such as with heteroskedasticity) – however this would only work in certain circumstances.
The approach provided in this video makes the most intuitive sense and works for i.i.d noise, but on testing on my own synthetic data that does not have i.i.d noise it’s not able to capture the true population distribution.
The most potentially promising bootstrap method I can find is in Cosma Shalizi’s Bootstrap Lecture Notes, see page 13, section 5.4. He describes the “Case Bootstrap” (aka. “Pairs bootstrap”, “x-y bootstrap” or “rows bootstrap”).
Resampling cases makes only very weak assumptions about the data-generating distribution, that all data points ($(x, y)$ pairs) are independent and identically distributed. It does not assume that any $m(x)$ is correct, or that the noise is independent of $x$, or has constant variance.
Now, as Shalizi mentions this x-y pairs method is extensively described by Buja et al (2014).
However, in neither Shalizi or Buja’s can I find a description of the actual method (in Shalizi’s case, I struggle to understand the R code), and more specifically in the context of prediction intervals.
Summary:
Does anyone know how to do the xy bootstrap for prediction intervals and/or know how to actually do prediction intervals for non iid noise?