Author: José Mauricio Gómez Julián
Date: 2026-04-29

# Introduction to HTDV

#### José Mauricio Gómez Julián

#### 2026-04-29

# Overview

`HTDV` provides hypothesis testing and estimation for dependent, unbalanced data through four integrated layers: (i) spectrally-faithful likelihoods (Whittle, composite), (ii) hierarchical Bayesian priors on the dependence nuisance parameters, (iii) Hamiltonian Monte Carlo with mandatory diagnostic gates, and (iv) a Bayesian decision layer (ROPE, bridge-sampling Bayes factors, WAIC, leave-future-out cross-validation, stacking). Finite-sample robustness is delivered by fixed-bandwidth HAR inference, block bootstrap with automatic block length, and adaptive conformal prediction.

# Quick start: long-run variance and fixed-b HAR

    library(HTDV)

    x <- stats::arima.sim(model = list(ar = 0.6), n = 200,
                          rand.gen = stats::rnorm)
    x <- as.numeric(x)

    lrv <- htdv_lrv(x, kernel = "qs", bandwidth = "andrews")
    lrv$lrv

    test <- htdv_fixedb(x, theta0 = 0, B = 0.1,
                        sims = 1000L, seed = 1L)
    test$p_value

# Block bootstrap

    boot <- htdv_boot(x, mean, R = 1999L,
                      type = "stationary",
                      block_length = "auto",
                      seed = 1L)
    boot$ci_percentile
    boot$block_length

# Adaptive conformal

    pred <- function(history) {
      if (length(history) >= 1L) history[length(history)] else 0
    }
    conf <- htdv_conformal(x, pred, alpha_target = 0.1,
                           lambda = 0.05, burn_in = 20L)
    conf$coverage

# Hierarchical Bayesian fit

The default `htdv_fit()` compiles a Stan model on first use and caches it for subsequent calls.

    fit <- htdv_fit(x, model = "tac", chains = 4L, iter = 4000L,
                    refresh = 0L, seed = 1L)
    htdv_summary(fit, rope = c(-0.1, 0.1), target = "theta")
    htdv_diagnostics(fit)$passed
    htdv_ppc(fit, x)

# Envelope across likelihoods

    fit_w <- htdv_fit(x, model = "whittle", chains = 4L, iter = 4000L,
                      refresh = 0L, seed = 2L)
    fit_c <- htdv_fit(x, model = "composite", chains = 4L, iter = 4000L,
                      refresh = 0L, seed = 3L)

    env <- htdv_envelope(list(whittle = fit_w, composite = fit_c),
                         target = "theta")
    env$intervals

# Decision: ROPE, Bayes factor, stacking

    draws <- as.numeric(rstan::extract(fit$stanfit, pars = "theta")$theta)
    htdv_rope(draws, rope = c(-0.1, 0.1))$decision

    if (requireNamespace("bridgesampling", quietly = TRUE)) {
      htdv_bf(fit_w, fit_c)$bf10
    }

    if (requireNamespace("loo", quietly = TRUE)) {
      htdv_stack(list(whittle = fit_w, composite = fit_c))$weights
    }

# Explicit equivalence constants

    htdv_equivalence_constants(gamma = 2, q = 6, n = length(x))

# References

Andrews, D. W. K. (1991). Econometrica 59(3): 817-858.

Berger, J. O. (1994). Test 3(1): 5-124.

Gibbs, I., & Candes, E. (2021). NeurIPS 34: 1660-1672.

Kiefer, N. M., & Vogelsang, T. J. (2005). Econometric Theory 21(6): 1130-1164.

Kruschke, J. K. (2018). Advances in Methods and Practices in Psychological Science 1(2): 270-280.

Patton, A., Politis, D. N., & White, H. (2009). Econometric Reviews 28(4): 372-375.

Varin, C., Reid, N., & Firth, D. (2011). Statistica Sinica 21(1): 5-42.

Vehtari, A., Gelman, A., & Gabry, J. (2017). Statistics and Computing 27(5): 1413-1432.

Watanabe, S. (2010). JMLR 11: 3571-3594.

Whittle, P. (1953). Arkiv foer Matematik 2(5): 423-434.

Yao, Y., Vehtari, A., Simpson, D., & Gelman, A. (2018). Bayesian Analysis 13(3): 917-1007.