Fit an AR/ARMA noise model (run-aware) and return a whitening plan
fit_noise.RdFit an AR/ARMA noise model (run-aware) and return a whitening plan
Usage
fit_noise(
  resid = NULL,
  Y = NULL,
  X = NULL,
  runs = NULL,
  method = c("ar", "arma"),
  p = "auto",
  q = 0L,
  p_max = 6L,
  exact_first = c("ar1", "none"),
  pooling = c("global", "run", "parcel"),
  parcels = NULL,
  parcel_sets = NULL,
  multiscale = c("pacf_weighted", "acvf_pooled"),
  ms_mode = NULL,
  p_target = NULL,
  beta = 0.5,
  hr_iter = 0L,
  step1 = c("burg", "yw"),
  parallel = FALSE
)Arguments
- resid
 Numeric matrix (time x voxels) of residuals from an initial OLS fit.
- Y
 Optional data matrix used to compute residuals when
residis omitted.- X
 Optional design matrix used with
Yto compute residuals.- runs
 Optional integer vector of run identifiers.
- method
 Either "ar" or "arma".
- p
 AR order (integer or "auto" if method == "ar").
- q
 MA order (integer).
- p_max
 Maximum AR order when
p = "auto".- exact_first
 Apply exact AR(1) scaling at segment starts ("ar1" or "none").
- pooling
 Combine parameters across runs or parcels ("global", "run", "parcel").
- parcels
 Integer vector (length = ncol(resid)) giving fine parcel memberships when
pooling = "parcel".- parcel_sets
 Optional named list with entries
coarse,medium,fineof equal length specifying nested parcel labels for multi-scale pooling.- multiscale
 Multi-scale pooling mode when
parcel_setsis supplied ("pacf_weighted" or "acvf_pooled"), orTRUE/FALSEto toggle pooling.- ms_mode
 Explicit multiscale mode when
multiscaleis logical.- p_target
 Target AR order for multi-scale pooling (defaults to
p_max).- beta
 Size exponent for multi-scale weights (default 0.5).
- hr_iter
 Number of Hannan–Rissanen refinement iterations for ARMA.
- step1
 Preliminary high-order AR fit method for HR ("burg" or "yw").
- parallel
 Reserved for future parallel estimation (logical).
Value
An object of class fmriAR_plan used by whiten_apply().
Examples
# Generate example data with AR(1) structure
n_time <- 200
n_voxels <- 50
phi_true <- 0.5
# Simulate residuals with AR(1) structure
resid <- matrix(0, n_time, n_voxels)
for (v in 1:n_voxels) {
  e <- rnorm(n_time)
  resid[1, v] <- e[1]
  for (t in 2:n_time) {
    resid[t, v] <- phi_true * resid[t-1, v] + e[t]
  }
}
# Fit AR model
plan <- fit_noise(resid, method = "ar", p = 1)
# With multiple runs
runs <- rep(1:2, each = 100)
plan_runs <- fit_noise(resid, runs = runs, method = "ar", pooling = "run")