
G-Computation Risk-Difference Inference for KK Designs with Binary Responses
Source:R/inference_incidence_KK_marginal.R
InferenceIncidKKGCompRiskDiff.RdFits an all-subject logistic working model \(\mathrm{logit}\,P(Y=1\mid w,x) = \beta_0 + \beta_T w + \beta_X^\top x\) for a KK incidence outcome using treatment \(w\) and, optionally, all recorded covariates \(x\), then estimates the marginal (standardized, g-computation) risk difference \(\hat\theta = n^{-1}\sum_i \{\hat p(1, x_i) - \hat p(0, x_i)\}\) by averaging the fitted-model predicted risks under all-treated and all-control assignments over the empirical covariate distribution (Robins 1986). Matched pairs are treated as clusters and reservoir subjects are treated as singletons when computing the sandwich covariance of the standardized estimator (the delta-method variance of the empirical mean of the two counterfactual-risk contrasts, not the naive logistic-regression coefficient variance).
Details
This estimator has likelihood_tier = "none": the fitted logistic model
is a working model for standardization only, and reported inference is
sandwich/bootstrap-based, not likelihood-based. compute_estimate() fits
the model and returns \(\hat\theta\) on the risk-difference (probability)
scale; compute_estimate_with_bootstrap_weights() refits under
Bayesian-bootstrap subject weights for compute_bayesian_bootstrap_confidence_interval().
Jackknife deletes one cluster (matched pair or singleton reservoir subject) at
a time. If the working model fails to converge or the design has no
treatment-arm variation, the estimate is marked non-estimable via
is_nonestimable().
References
Robins, J. (1986). A new approach to causal inference in mortality studies with a sustained exposure period. Mathematical Modelling, 7(9-12), 1393-1512. doi:10.1016/0270-0255(86)90088-6
See also
InferenceIncidKKGCompRiskRatio
for the risk-ratio analog on the same standardization machinery.
Super class
Inference -> InferenceIncidKKGCompRiskDiff
Methods
Public methods
+ inherited public methods from Inference
Inference$capabilities()Inference$compute_asymp_confidence_interval()Inference$compute_asymp_two_sided_pval()Inference$compute_estimate()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$initialize()Inference$is_nonestimable()Inference$set_optimization_alg()Inference$set_seed()Inference$supports()
Examples
# \donttest{
seq_des = DesignSeqOneByOneKK14$new(n = 10, response_type = 'incidence')
for (i in 1:10) {
seq_des$add_one_subject_to_experiment_and_assign(data.frame(x1 = rnorm(1), x2 = rnorm(1)))
}
seq_des$add_all_subject_responses(rbinom(10, 1, 0.5))
inf = InferenceIncidKKGCompRiskDiff$new(seq_des)
inf$compute_estimate()
#> [1] -0.1481469
# }