Class AbstractMultiBootstrapAlgorithm

java.lang.Object
edu.cmu.tetrad.algcomparison.algorithm.AbstractBootstrapAlgorithm
edu.cmu.tetrad.algcomparison.algorithm.AbstractMultiBootstrapAlgorithm
All Implemented Interfaces:
Algorithm, ReturnsBootstrapGraphs, HasParameters, TetradSerializable, Serializable
Direct Known Subclasses:
Images, ImagesFges

public abstract class AbstractMultiBootstrapAlgorithm extends AbstractBootstrapAlgorithm
A base class for bootstrapping multi-dataset algorithms (such as IMaGES), parallel to AbstractBootstrapAlgorithm for single-dataset algorithms. Each bootstrap iteration resamples rows WITHIN each of the given data sets separately (each data set is resampled to percentResampleSize percent of its own rows, with or without replacement per the usual bootstrapping parameters) and runs the subclass's search on the resampled list; the resulting graphs are aggregated into an edge-frequency graph exactly as in the single-dataset case. Resampling within data sets, rather than pooling them, preserves the multi-dataset structure the algorithm exists for: each subject or session contributes the same number of rows to every bootstrap sample, and rows are never exchanged across data sets.

Subclasses implement runSearch(List, Parameters), the non-resampling core; the inherited single-dataset hook runSearch(DataModel, Parameters) delegates to it with a singleton list, so single-dataset calls (via AbstractBootstrapAlgorithm.search(DataModel, Parameters)) get bootstrapping as well.

Design decisions, deliberate and contestable: (1) Rows are resampled within data sets; an alternative for multi-subject designs is to resample at the DATA SET level (subjects with replacement), which targets between-subject variability instead of within-subject sampling error. That would be a different, additional resampling mode, not a replacement for this one, and is not implemented here. (2) Row resampling treats rows as exchangeable within each data set; for serially dependent rows (see the SERIAL_DEPENDENCE data audit finding) the bootstrap distribution understates uncertainty, the same caveat that applies to row bootstrapping of any single time-series data set.

Version:
$Id: $Id
Author:
josephramsey
See Also: