Background: Randomized trials provide pivotal evidence for evaluation and approval of therapies. Nonetheless, such trials are often plagued by noncompliance, especially in the form of premature discontinuation of treatment. While intent-to-treat (ITT) analysis can provide valid tests of no-effect hypotheses, some trials may make ITT analysis impossible by ceasing follow-up when patients go off assigned treatment. Furthermore, estimates based on ITT, on-treatment, or per-protocol comparisons can seriously understate harm or benefit.
Purpose: To show how g-estimation based on randomization status is a natural generalization of ITT null testing to estimating efficacy from trials with important discontinuation or noncompliance.
Methods: We contrast with an analysis of the effect of a tiotropium inhaler on the occurrence of chronic obstructive pulmonary disease (COPD) events in a six-month double-blind placebo-controlled trial of 1829 patients with good but imperfect compliance.
Results: The covariate-adjusted point estimates, 95% confidence limits (CL), and null P-values comparing expected COPD event times in placebo versus tiotropium patients were: ITT, 1.21, CL = 1.02, 1.43, P = 0.027; on-treatment, 1.27, CL = 1.06, 1.52, P = 0.009; per-protocol, 1.36, CL = 1.13, 1.63, P = 0.001; and g-estimation, 1.31, CL = 1.03,1.72, P = 0.027. Thus g-estimation preserved the ITT test of the null, but exhibited more uncertainty about the size of the tiotropium effect than the other methods. In particular, it allowed for a much larger potential effect than did ITT analysis, but produced a much larger null P than exhibited by per-protocol analysis.
Limitations: Like ITT analysis, g-estimation requires all patients be followed to the end of the trial protocol, regardless of whether they comply with the protocol. Like on-treatment and per-protocol analyses, it also requires accurate compliance information be recorded.
Conclusion: G-estimation should become a standard procedure for the analysis of trials with noncompliance. Software to do so is available in major packages, and the procedure is easily coded for other packages.