🎉 75% of content is free forever — Unlock Premium from $10/mo →
CW
Search courses…
💼 Servicesℹ️ About✉️ ContactView Pricing Plansfrom $10

Missing Data — MCAR, MAR, MNAR, Imputation

StatisticsData Quality🟢 Free Lesson

Advertisement

Missing Data — MCAR, MAR, MNAR, Imputation

Statistics

Understanding Why Data Is Missing and How to Handle It

The mechanism generating missing values — MCAR, MAR, or MNAR — determines which methods produce valid inferences. Naive deletion can bias results, while principled approaches preserve information and validity.

  • Clinical Research — Handle patient dropout that may be related to outcomes

  • Survey Analysis — Address item nonresponse that varies across demographic groups

  • Social Science — Deal with attrition in longitudinal panel studies

How data goes missing matters as much as how much is missing.


Missing data is ubiquitous in real-world research. Understanding the mechanism that generates missing values is critical for choosing appropriate handling methods.


Types of Missingness

MCAR — Missing Completely at Random

Missingness is completely unrelated to any data (observed or missing). Like data?? being lost in the mail.

MAR — Missing at Random

Missingness depends on observed data but not on the missing values themselves.

MNAR — Missing Not at Random

Missingness depends on the unobserved values themselves. The hardest mechanism to handle.


Comparison

| Mechanism | Missingness depends on | Example |

|-----------|----------------------|---------|

| MCAR | Nothing | Data entry errors; random equipment failure |

| MAR | Observed variables only | Young people skip income questions |

| MNAR | Missing values themselves | Depressed people don't report depression |


Handling Missing Data

Listwise Deletion

Delete any row with missing values.

| Pros | Cons |

|------|------|

| Simple; unbiased under MCAR | Loses data; reduces power |

| | Biased under MAR and MNAR |

Mean Imputation

Replace missing values with the observed mean.

Multiple Imputation


Multiple Imputation: Rubin's Rules


Predictive Mean Matching (PMM)

The most popular imputation method. For each missing value:

  1. Fit a regression predicting the variable from other variables

  2. Find observed values with similar predicted values

  3. Use the observed value as the imputation


Python Implementation


import numpy as np

import pandas as pd

from sklearn.experimental import enable_iterative_imputer

from sklearn.impute import IterativeImputer, SimpleImputer

import matplotlib.pyplot as plt



np.random.seed(42)



# Simulate data with missing values

n = 500

X1 = np.random.randn(n)

X2 = 0.7 * X1 + np.random.randn(n) * 0.5

X3 = 0.3 * X1 + 0.4 * X2 + np.random.randn(n) * 0.8



# MAR: X1 missing depends on X2

missing_prob = 1 / (1 + np.exp(-(-1 + 0.5*X2)))

R = np.random.binomial(1, missing_prob)

X1_obs = X1.copy()

X1_obs[R == 1] = np.nan



df = pd.DataFrame({'X1': X1_obs, 'X2': X2, 'X3': X3})

print(f"Missing in X1: {df['X1'].isna().sum()} ({df['X1'].isna().mean():.1%})")



# Listwise deletion

complete = df.dropna()

print(f"\nListwise deletion: n={len(complete)}")

print(f"X1 mean (complete): {complete['X1'].mean():.3f} (true: {X1.mean():.3f})")



# Multiple Imputation

mice = IterativeImputer(random_state=42, max_iter=10)

imputed = pd.DataFrame(mice.fit_transform(df), columns=df.columns)

print(f"\nMICE imputation:")

print(f"X1 mean (imputed): {imputed['X1'].mean():.3f} (true: {X1.mean():.3f})")



# Visualize

fig, axes = plt.subplots(1, 2, figsize=(12, 5))

axes[0].hist(X1, bins=30, alpha=0.5, label='True')

axes[0].hist(complete['X1'], bins=30, alpha=0.5, label='Listwise')

axes[0].legend()

axes[0].set_title('Listwise Deletion')



axes[1].hist(X1, bins=30, alpha=0.5, label='True')

axes[1].hist(imputed['X1'], bins=30, alpha=0.5, label='MICE')

axes[1].legend()

axes[1].set_title('Multiple Imputation')

plt.tight_layout()

plt.show()


Worked Example


Key Takeaways


Related Topics

Need Expert Statistics Help?

Get personalized tutoring, project support, or professional consulting.

Advertisement