Equation-to-code QC checklist
EC-IPW (.ec_ipw_borrow_core() in R/ec_ipw.R)
Reference: Zhou et al. (2024b), JRSS-A
Sandwich variance (.ec_ipw_sandwich())
EC-AIPW (.ec_aipw_core() in R/ec_aipw.R)
Reference: Zhou et al. (2024b), JRSS-A
Sandwich variance (.ec_aipw_sandwich())
DID-EC-IPW (.did_ec_ipw_core() in R/did_ec_ipw.R)
Reference: Zhou et al. (2024a), J Biopharm Stats
DID-EC-AIPW (.did_ec_aipw_core() in R/did_ec_aipw.R)
Reference: Zhou et al. (2024a), J Biopharm Stats
DID-EC-OR (.did_ec_or_core() in R/did_ec_or.R)
Reference: Zhou et al. (2024a), J Biopharm Stats
SCM (.scm_subject_sc() + .scm_lambdacv() in R/scm.R)
Reference: Zhou et al. (2024a), J Biopharm Stats
Equation-to-code QC checklist
EC-IPW (
.ec_ipw_borrow_core()inR/ec_ipw.R)Reference: Zhou et al. (2024b), JRSS-A
W00 = pi_S(X)(1-pi_S) / (1-pi_S(X))pi_S:rx <- (pi_SX / (1 - pi_SX)) * ((1 - pi_S) / pi_S)mu_hat_11:mu1 <- colSums(potential[S==1 & A==1,]) / sum(S*A/w11)mu_hat_10:mu10 <- colSums(potential[S==1 & A==0,]) / sum(S*(1-A)/w10)mu_hat_00:mu00 <- colSums(potential[S==0,]) / sum((1-S)*w00)w_opt <- num / (num + denom)tau <- mu1 - ((1-borrow_weight)*mu10 + borrow_weight*mu00)Sandwich variance (
.ec_ipw_sandwich())A_inv %*% B %*% t(A_inv)EC-AIPW (
.ec_aipw_core()inR/ec_aipw.R)Reference: Zhou et al. (2024b), JRSS-A
lm(..., data=df[A==0,])Y-tilde = Y - mu(X):Yr <- Y - Y0mu_hat_11throughmu_hat_00(same as IPW but on residuals)Sandwich variance (
.ec_aipw_sandwich())DID-EC-IPW (
.did_ec_ipw_core()inR/did_ec_ipw.R)Reference: Zhou et al. (2024a), J Biopharm Stats
pi_S(X)and treatment modelpi_A(X)W11 = 1/pi_A,W10 = 1/(1-pi_A),W0 = density ratioDelta_trial: treated OLE weighted mean minus RCT control pre-crossover meanDelta_EC: EC OLE weighted mean minus EC pre-crossover meantau = Delta_trial - Delta_EC:mu_S1A1 - mu_S0A0 - biasDID-EC-AIPW (
.did_ec_aipw_core()inR/did_ec_aipw.R)Reference: Zhou et al. (2024a), J Biopharm Stats
lm(..., data=df[S==0,])Y-tilde = Y - mu(X,S=0,A=0,t):Yr <- Y - Y0tau = Delta_trial - Delta_ECon residualsDID-EC-OR (
.did_ec_or_core()inR/did_ec_or.R)Reference: Zhou et al. (2024a), J Biopharm Stats
lm(outcome_formula_ext[t], data=df[S==0,])lm(outcome_formula_rct_ctrl[t], data=df[S==1 & A==0,])lm(outcome_formula_rct_trt[t], data=df[S==1 & A==1,])Delta_trial = avg_S1[OLE] - mean(avg_S1[pre])Delta_EC = avg_S0A0[OLE] - mean(avg_S0A0[pre])tau = Delta_trial - Delta_ECSCM (
.scm_subject_sc()+.scm_lambdacv()inR/scm.R)Reference: Zhou et al. (2024a), J Biopharm Stats
loss + lambda * penaltywithsum(w)==1, w>=0z_i= stacked covariates + pre-crossover outcomes (matching variables)X00[long_term,] %*% wt_estY_trt - colMeans(y_est_mat).scm_lambdacv()