Written and maintained by CASRAI Editorial Board
Last updated
Missing data doesn’t come with a label saying why it’s missing, but the reason determines which analysis method is valid. Donald Rubin’s 1976 taxonomy — missing completely at random (MCAR), missing at random (MAR), and missing not at random (MNAR) — is the classification every modern missing-data method assumes something about. Get the diagnosis wrong and the “fix” (listwise deletion, multiple imputation, FIML) can introduce exactly the bias it was supposed to remove. This page covers what you can actually test, what you cannot, and how to proceed honestly when the data itself won’t settle the question.
The three mechanisms, briefly
- MCAR (missing completely at random) — the probability a value is missing doesn’t depend on any variable in the dataset, observed or unobserved. A survey response lost to a random data-entry glitch is MCAR.
- MAR (missing at random) — the probability a value is missing can depend on other observed variables, but not on the missing value itself once those are accounted for. A participant who skips an income question at a rate that depends on their observed education level, but not on their actual unobserved income once education is conditioned on, is MAR.
- MNAR (missing not at random) — the probability a value is missing depends on the value itself, even after conditioning on everything observed. Someone who skips the income question specifically because their income is unusually high is MNAR.
The stakes: listwise deletion is only unbiased under MCAR (the strongest, least realistic assumption of the three). FIML and multiple imputation both relax that to MAR — correct under MAR, but still biased under MNAR. Nothing on this list fixes MNAR automatically; it needs the mechanism modeled explicitly (a pattern-mixture or selection model) or a sensitivity analysis across a plausible range, not a different estimation method. See the listwise vs. pairwise deletion comparison and tipping-point analysis for what each route actually looks like once you know which one applies.
What you can actually test: Little’s MCAR test
Roderick Little proposed a formal test of the MCAR assumption in 1988 (Little, R.J.A., “A Test of Missing Completely at Random for Multivariate Data with Missing Values,” Journal of the American Statistical Association). The logic: if data really are MCAR, the cases with a given pattern of missingness should look statistically the same, on every variable they do have, as cases with a different missingness pattern. Little’s test formalizes that comparison across all observed missing-data patterns simultaneously into a single chi-square statistic, testing the null hypothesis that the data are MCAR. It’s implemented in R (the mcar_test() function in the naniar/finalfit packages, or md.pattern()-adjacent tooling in mice) and in SPSS’s Missing Value Analysis module.
Read the result carefully — it answers a narrower question than it looks like it does:
- A significant result (typically p < 0.05) rejects MCAR: something about the missingness pattern correlates with the observed data. That rules out the strongest assumption, but does not tell you whether the true mechanism is MAR or MNAR — both produce the same signature on this test.
- A non-significant result does not prove MCAR. It means the test found no evidence against it, which is a much weaker claim — the test is known to have low power with many variables, small samples, or non-normal data, and an MNAR mechanism whose driver has no observed correlate can pass this test too (demonstrated below).
The same logic without dedicated software
Little’s test is a formalization of a simpler idea you can run by hand on any dataset: create a binary missingness indicator for the variable you’re worried about (1 if missing, 0 if observed), then test whether that indicator relates to every other observed variable — a t-test or Mann-Whitney test against each continuous variable, a chi-square test against each categorical one, or a single logistic regression predicting the indicator from all of them at once. If nothing predicts missingness, that’s consistent with MCAR. If something does, MCAR is out and MAR becomes the working assumption — provided you’re willing to condition on whatever you found. This is exactly what the reproducible example below does, one variable at a time, so the logic stays visible.
A reproducible demonstration, including where the test fails
The simulation below generates 300 cases with two independent standard-normal variables, X (always observed) and Y (the target, made missing under three different mechanisms), then runs the missingness-indicator t-test described above — comparing X’s mean between the group missing on Y and the group observed on Y. Full setup: mulberry32 seeded PRNG (seed 20260831), Box-Muller normal draws, Welch’s t-test with a normal approximation for the p-value (valid at this sample size). Every number below is computed directly from that seed, not estimated.
| Mechanism | % missing on Y | Mean X, missing group | Mean X, observed group | t | p | Test’s verdict |
|---|---|---|---|---|---|---|
| MCAR (constant 30% missing probability) | 28.0% | −0.0259 | −0.0799 | 0.407 | 0.684 | Not flagged — correct |
| MAR (missingness probability depends on observed X) | 34.0% | 0.5164 | −0.3642 | 7.684 | <0.0001 | Flagged as not-MCAR — correct |
| MNAR (missingness probability depends on Y’s own value; X independent of Y by construction) | 35.7% | −0.0811 | −0.0558 | −0.196 | 0.844 | Not flagged — test cannot tell this apart from MCAR |
The MAR row shows the test doing exactly what it’s supposed to: missingness on Y is driven by X, X is observed, so the group comparison on X picks it up cleanly (p < 0.0001). The MNAR row is the important one. X and Y were generated independent of each other specifically so that an MNAR mechanism — missingness on Y driven by Y’s own unobserved value — would have no observed variable available to betray it. The test comes back non-significant, identical in shape to the true MCAR row. Nothing in the observed data distinguishes them, because the one thing that would distinguish them — the values that are actually missing — is exactly what’s missing. Adding more observed variables to the test only helps if one of them happens to correlate with Y; it does not close the gap in general.
The wall you cannot test past: MAR vs. MNAR
This is not a limitation of Little’s test specifically, or of the simulation above — it’s a structural property of the problem. MAR permits the missingness probability to depend on observed variables; MNAR requires it to depend on the missing value itself. Any test built entirely from the observed data can only ever check relationships between missingness and things you observed. It has no way to check a relationship with something you didn’t observe, by definition. Formal treatments of the problem note the same conclusion in stronger language: whether a dataset satisfies MAR is an assumption that is impossible to verify statistically from the observed data alone, and has to be argued on substantive grounds instead.
What “substantive grounds” means in practice, for a real study:
- Domain reasoning about the missingness mechanism itself — not the data, the process that generated the gap. A lab assay with a fixed detection floor produces MNAR missingness (values below the floor are unmeasurable specifically because they’re low) whether or not any observed covariate is correlated with it; a lost sample tube produces MCAR regardless of what the observed data show.
- Follow-up on a subsample of nonresponders — if you can go back and obtain even a few of the “missing” values through a different channel (a shorter follow-up survey, a different data source, chart review), you can directly check whether they differ from what the MAR assumption would have predicted.
- Sensitivity analysis across a range of plausible MNAR assumptions, rather than betting the whole analysis on one untestable assumption. See tipping-point analysis for a worked version of this: instead of asking “is it MAR or MNAR,” ask “how much MNAR-ness would it take to change my conclusion,” and report that threshold.
- Collecting strong auxiliary variables at the design stage, specifically chosen because they’re plausible predictors of both the outcome and its missingness — every such variable you can observe and condition on is one you’ve moved from the untestable MNAR side of the ledger to the testable MAR side.
None of this proves MAR the way a hypothesis test proves anything — it can’t, for the structural reason above. What it does is make the MAR assumption an explicit, defended, checkable-by-a-reviewer claim instead of a silent default, which is what a statistical analysis plan is for: state the mechanism you’re assuming, the reasoning behind it, and the analysis method that depends on it, before you’ve seen whether it’s convenient.
Routing the diagnosis to a method
- Data pass Little’s test (or the manual version) and domain knowledge doesn’t contradict it — MCAR is a defensible working assumption. Listwise deletion is unbiased here, though still less efficient than using every available case.
- Data fail Little’s test, and the predictors of missingness are observed — MAR is the working assumption. Use FIML or multiple imputation, conditioning on whatever predicted missingness in the diagnostic step; listwise deletion is no longer unbiased here.
- Domain reasoning points to MNAR (a detection floor, a self-selection mechanism tied to the outcome, a plausible reason values near one end of the distribution would specifically be missing) — treat MAR-based methods as a best-case sensitivity bound, not the answer, and run a sensitivity analysis on how far the conclusion moves under a range of MNAR assumptions.
Frequently asked questions
Does a non-significant Little’s test prove my data are MCAR?
No. It means the test found no evidence against MCAR in the variables it checked — a failure to reject, not a confirmation. The demonstration above shows an actual MNAR dataset producing the same non-significant result, because the variable driving its missingness wasn’t among the ones being tested.
Little’s test came back significant — does that mean my data are MNAR?
No. A significant result only rules out MCAR. It’s equally consistent with MAR (which is the more common real-world case once MCAR is ruled out) and does not, by itself, distinguish MAR from MNAR.
Is there any test that reliably distinguishes MAR from MNAR?
Not from the observed data alone, as a general matter — that’s the structural point this page makes, not a gap in current statistical technique. Model-based approaches exist that can refute MNAR under specific, checkable graphical/causal assumptions about the relationships among variables, but they require assumptions of their own that have to be justified the same way MAR does; they don’t turn the underlying problem into a routine test.
Does having a lot of missing data automatically mean more bias?
No — the mechanism matters more than the amount. A large fraction of MCAR missingness costs statistical power and precision but introduces no bias. A small fraction of MNAR missingness, even 5–10% of cases, can bias an estimate meaningfully if the missingness is tied tightly enough to the outcome. Diagnosing the mechanism correctly matters more than the raw percentage missing.








