Missing-Data Mechanisms and Analysis
Analysis of incomplete covariates or defined outcomes under explicit assumptions about why observations are missing, distinguishing missingness from undefined post-death measurements and from population/weight trimming.
On this page
Analysis of incomplete covariates or defined outcomes under explicit assumptions about why observations are missing, distinguishing missingness from undefined post-death measurements and from population/weight trimming. Use whenever a required variable is incompletely observed or outcome follow-up has missing assessments that can affect interpretation.
Definition and scope
Analysis of incomplete covariates or defined outcomes under explicit assumptions about why observations are missing, distinguishing missingness from undefined post-death measurements and from population/weight trimming. The target population, use, and analysis remain protocol decisions; this card explains the choices and their consequences rather than approving a study.
Operational specification
Define the full-data target, variables and time order, missingness indicators, observation opportunities, auxiliary information, and which measurements are undefined rather than merely unobserved. State the MCAR/MAR/MNAR assumptions relative to specified observed information and the substantive analysis. Structural absence of a data domain or benefit needs a data-fitness assessment, not a default zero.
Analysis and diagnostics
Inspect missingness by time, exposure, outcome predictors, and source; choose complete-case, imputation, weighting, likelihood, or other methods based on their conditions for the intended target. Make imputation compatible with interactions, nonlinearities, clustering and longitudinal structure as relevant. Assess departures from MAR with a prespecified sensitivity model and propagate imputation/estimation uncertainty.
When NOT to use and common errors
Do not claim MAR was proved by a statistical test, assume complete-case analysis is valid only under MCAR in every model, use a universal missingness-percentage cutoff, or label post-death clinical values as ordinary missing outcomes awaiting imputation.
Worked example and implementation boundary
A synthetic cohort has 100 eligible people, with 20 missing baseline measurements. Calculate the observed fraction without assuming that it establishes the missingness mechanism. The observed fraction is 0.80. This does not establish MCAR, MAR, or validity of complete-case analysis. The code performs that explicitly stated calculation with synthetic inputs. It is not a complete fitted analysis and does not demonstrate the identification assumptions, estimate sampling uncertainty, or certify application in another population.
Data-source and reporting requirements
Preserve the provenance, dates, units, and observation rule for each input. Claims capture services and transactions under observable benefits; absence of a record is not proof that an event or resource use did not occur. EHR and registry measurements depend on the collection process and may miss care outside the system. Linked sources add reconciliation and selection questions. Primary collection can improve a missing domain but still requires valid measurement and follow-up. Report which of these limitations affects the stated use, which evidence supports the chosen inputs, and what remains uncertain.
Worked example
Scenario
A synthetic cohort has 100 eligible people, with 20 missing baseline measurements. Calculate the observed fraction without assuming that it establishes the missingness mechanism.
Dataset
Synthetic inputs with units defined in the scenario; no patient data.
| input | value |
|---|---|
| eligible | 100 |
| missing | 20 |
Steps
Result
The observed fraction is 0.80. This does not establish MCAR, MAR, or validity of complete-case analysis.
Trade-offs
Code example
Executed example · Python 3.11.15 · 2026-11-01T02:04:28+00:00
Self-contained synthetic calculation for the worked example only. Inputs and units are listed in the dataset; output is the displayed scalar. This does not fit the full study/model, estimate uncertainty, or select an analysis for a real study.
eligible = 100
missing = 20
result = (eligible-missing)/eligible
assert abs(result - 0.8) < 1e-9
print(result)
Executed example · Rscript (R) version 4.6.1 (2026-06-24) · 2026-11-01T02:04:28+00:00
Self-contained synthetic calculation for the worked example only. Inputs and units are listed in the dataset; output is the displayed scalar. This does not fit the full study/model, estimate uncertainty, or select an analysis for a real study.
eligible <- 100
missing <- 20
result <- (eligible-missing)/eligible
stopifnot(abs(result - 0.8) < 1e-9)
print(result)
Illustrative example · execution not verified
Self-contained synthetic calculation for the worked example only. Inputs and units are listed in the dataset; output is the displayed scalar. This does not fit the full study/model, estimate uncertainty, or select an analysis for a real study. SAS source is illustrative until executed in a compatible SAS runtime.
data worked_example;
eligible = 100;
missing = 20;
result = (eligible-missing)/eligible;
put result=;
run;