Fits an ordinary least squares regression for continuous responses:
\(Y_i = \beta_0 + \beta_T W_i + X_i^\top \gamma + \epsilon_i\), using the
treatment indicator and, optionally, all recorded covariates as predictors
(uncentered, no treatment-covariate interactions — see
InferenceContinLin for the
centered-covariate, interacted variant). \(\hat\beta_T\) is a mean
difference on the response's natural scale. likelihood_tier =
"full": Wald, score, gradient, and likelihood-ratio tests are all
available (fast_ols_cpp/fast_ols_with_var_cpp),
with the parametric-likelihood bootstrap using the OLS Gaussian-errors
model as the generative null. Standard errors are the closed-form OLS
variance under homoskedastic errors (unlike
InferenceContinLin's HC2
heteroskedasticity-robust SE). Warm starts are disabled
(fit_warm_start_enabled = FALSE set at construction) because OLS is
a closed-form estimator and gains nothing from an iterative optimizer's
warm-started initial values. Validity requires the usual OLS assumptions:
correctly specified linear predictor, and (for the asymptotic/likelihood
inference path specifically) homoskedastic, approximately normal errors;
the randomization-inference path relies only on randomization of \(W\).
References
Rosenbaum, P. R. (2002). Observational Studies (2nd ed.). Springer, for the OLS mean-difference estimator's design-based justification under randomization.
Super class
Inference -> InferenceContinOLS
Methods
+ inherited public methods from Inference
Inference$capabilities()Inference$compute_exact_confidence_interval()Inference$compute_exact_two_sided_pval_for_treatment_effect()Inference$duplicate()Inference$get_analysis_data()Inference$get_covariates()Inference$get_design_object()Inference$get_model_formula()Inference$get_nonestimable_reason()Inference$get_nonestimable_stage()Inference$get_optimization_alg()Inference$get_response()Inference$get_response_type()Inference$get_treatment()Inference$is_nonestimable()Inference$set_optimization_alg()Inference$set_seed()Inference$supports()
InferenceContinOLS$new()
Initialize inference for the OLS model \(Y_i = \beta_0 +
\beta_T W_i + X_i^\top \gamma + \epsilon_i\); see
InferenceContinOLS for the model
form. Disables warm-started optimizer initial values (not applicable to
this closed-form estimator). Does not fit the model; the fit is
deferred to the first call to compute_estimate() or a method
that requires it.
Usage
InferenceContinOLS$new(
des_obj,
model_formula = NULL,
verbose = FALSE,
max_resample_attempts = 50L,
harden = TRUE,
smart_cold_start_default = NULL
)Arguments
des_objA completed
Designobject with a continuous response.model_formulaOptional formula for covariate adjustment. If
NULL(default), the formula from the design object is used and its pre-computed design matrix is reused. If a formula is provided, a new design matrix is constructed from the design's imputed covariates.verboseWhether to print progress messages.
max_resample_attemptsMaximum number of times a single bootstrap replicate may be redrawn when the drawn sample fails validity screening. Default
50L.hardenWhether to apply robustness measures.
smart_cold_start_defaultFlag for consistent API.
InferenceContinOLS$compute_estimate()
Fits the OLS model
(fast_ols_cpp/fast_ols_with_var_cpp) and
returns \(\hat\beta_T\). If not hardened
(private$harden == FALSE), fits directly on the full design
matrix; otherwise uses QR column-dropping hardening to handle
rank-deficient designs. A fit with a non-finite treatment coefficient
is cached as nonestimable rather than returned.
InferenceContinOLS$compute_estimate_with_bootstrap_weights()
Refits the OLS model with subject/block-level weights applied
to a weighted least-squares fit (stats::lm.wfit) — Bayesian-bootstrap
or nonparametric-bootstrap draw weights, expanded to row level via
private$expand_subject_or_block_weights_to_row_weights() — and
returns the reweighted estimate \(\hat\beta_T^{(w)}\). When
estimate_only = FALSE, also computes a weighted-residual variance
estimate for internal bootstrap diagnostics. Rows with non-finite or
non-positive weight, or non-finite response, are dropped from the
weighted fit; if no rows remain, or the fit fails, the estimate is
NA.
InferenceContinOLS$compute_asymp_confidence_interval()
Uses the shared asymptotic confidence-interval contract; see
InferenceAsymp.
InferenceContinOLS$compute_asymp_two_sided_pval()
Uses the shared asymptotic two-sided p-value contract; see
InferenceAsymp.
Examples
# \donttest{
seq_des = DesignSeqOneByOneBernoulli$new(n = 10, response_type = 'continuous')
for (i in 1:10) {
seq_des$add_one_subject_to_experiment_and_assign(data.frame(x1 = rnorm(1)))
}
seq_des$add_all_subject_responses(rnorm(10))
inf = InferenceContinOLS$new(seq_des)
inf$compute_estimate()
#> [1] 0.1260235
# }
