Causal inference
Causal inference explained: how to estimate the effect of an action from data, the main methods, common pitfalls, and its role in tabular foundation models.
Overview
Causal inference is the set of methods used to estimate what would happen if you changed something, rather than only describing what tends to happen together. A normal prediction model answers "given what I see, what is likely?" A causal method answers "if I act, what will change?" That second question is the one behind policy, medicine, pricing, marketing and product decisions.
The key difficulty is that we never see both outcomes for the same unit. A patient either takes a drug or does not. A customer either gets a discount or does not. Causal inference supplies the assumptions, designs and estimators that let us fill in the missing outcome in a defensible way. It sits close to statistics and probability, and it matters more and more for tabular data, where most business records live. See also supervised learning for the prediction side of the story.
What it is
Causal inference studies cause and effect from data. The central object is a causal effect: the difference between the outcome under one action and the outcome under another action, for the same unit at the same time.
Prediction versus causation
A predictive model finds patterns. If people who carry umbrellas are more likely to be wet, a model will learn that umbrellas predict wet clothes. It would be wrong to conclude that umbrellas make you wet. Rain causes both. Causal inference is the discipline that stops us from making this kind of error.
Everyday analogy: a thermometer in a room tells you the temperature. It does not tell you what happens if you open a window. To know that, you need a model of how the room works, or you need to try it.
Three levels of causal questions
Many authors describe three rungs on a ladder.
- Association: what does seeing X tell me about Y?
- Intervention: what happens to Y if I set X to a value?
- Counterfactual: what would Y have been for this unit if X had been different?
Most machine learning lives on the first rung. Randomized experiments and good observational designs reach the second. Fully specified structural models can reach the third.
The potential outcomes view
In the potential outcomes framework each unit has two potential outcomes, one for treatment and one for no treatment. Only one is ever observed. The individual effect is the difference between them, which is never directly seen. We therefore target averages, such as the average treatment effect (ATE), the effect on the treated (ATT), or the effect within a subgroup (conditional average treatment effect, CATE).
The structural causal model view
The other major view uses graphs. Nodes are variables and arrows are direct causal influences. The graph encodes assumptions about what causes what. From it you can read off which variables to adjust for, which to leave alone, and whether an effect can be identified from observed data at all.
Where it came from
The roots are old and spread over several fields.
- Early statistics: Francis Galton and Karl Pearson built the tools of correlation and regression. Pearson was famously cautious about talking of causes.
- Experimental design: Ronald Fisher developed randomization, analysis of variance and the logic of designed experiments in the 1920s and 1930s. Randomization became the gold standard.
- Potential outcomes: Jerzy Neyman introduced the idea of potential outcomes for experiments in 1923. Donald Rubin extended it to observational studies in the 1970s, so it is often called the Rubin causal model.
- Economics: Trygve Haavelmo and others formalized simultaneous equations. Later work on instrumental variables, regression discontinuity and difference in differences grew from applied economics.
- Graphs: Sewall Wright used path diagrams in genetics in the early twentieth century. Judea Pearl built a full theory of structural causal models and the do-operator, summarized in his book Causality (2000) and later in The Book of Why (2018).
- Propensity scores: Paul Rosenbaum and Donald Rubin published the propensity score paper in 1983.
- Machine learning: from the 2010s, methods such as causal forests, double machine learning and meta-learners combined flexible learners with causal identification. Papers on double or debiased machine learning (2018) and generalized random forests (2019) are widely cited.
The field is now a blend of statistics, economics, epidemiology, computer science and social science. Each brought its own vocabulary, which is why the same idea often has several names.
How it works
Causal inference follows a recognizable workflow. Each step has a plain explanation.
Step 1: Define the causal question
State the treatment, the outcome, the population and the time frame. "Does the new onboarding flow increase 30 day retention for new users?" is a causal question. "Which users retain?" is not.
Analogy: this is like writing a recipe card before cooking. If you do not know the dish, no technique will save you.
Step 2: State assumptions about how the data arose
Causal conclusions always rest on assumptions that data alone cannot prove. Typical ones are:
- Consistency: the observed outcome under a given treatment equals the potential outcome for that treatment.
- Exchangeability, also called no unmeasured confounding or ignorability: after accounting for observed variables, treated and untreated units are comparable.
- Positivity, also called overlap: every kind of unit has some chance of receiving each treatment.
- No interference, often called SUTVA: one unit's treatment does not change another unit's outcome.
Analogy: a map is only as good as its legend. Assumptions are the legend that lets you read the result.
Step 3: Choose a design
The design is the plan that makes the comparison fair.
- Randomized experiment: assign treatment by chance. Randomization makes groups comparable on everything, seen and unseen.
- Observational adjustment: use measured covariates to make groups comparable.
- Natural experiments: exploit events that assign treatment as if at random, such as a lottery or a sharp eligibility rule.
Step 4: Identify the effect
Identification asks whether the causal quantity can be written as a function of observed data under your assumptions. If it cannot, no amount of data will help. For example, with an unmeasured common cause of treatment and outcome, the effect is not identified without extra structure.
Step 5: Estimate the effect
Once identified, you pick an estimator. Common families are:
- Regression adjustment: model the outcome given treatment and covariates.
- Matching: pair treated units with similar untreated units.
- Weighting: reweight units so the groups look alike, for example inverse propensity weighting.
- Doubly robust methods: combine an outcome model and a treatment model so you are right if either is right.
- Instrumental variables: use a variable that moves treatment but affects the outcome only through treatment.
- Difference in differences: compare change over time between treated and control groups.
- Regression discontinuity: compare units just above and just below a cutoff.
- Synthetic control: build a weighted blend of untreated units to mimic the treated unit before the intervention.
Step 6: Quantify uncertainty
Give a confidence or credible interval, not just a number. Bootstrap, analytic standard errors and Bayesian posteriors are all used. See Bayesian deep learning and variational inference for related uncertainty tools.
Step 7: Stress test
Run sensitivity analyses. Ask how strong an unmeasured confounder would have to be to erase the effect. Use placebo tests, negative control outcomes, and checks on overlap and balance. A result that survives these is much more trustworthy.
A tiny intuition for adjustment
Suppose older patients are both more likely to get a new drug and more likely to do poorly. A raw comparison makes the drug look bad. Comparing within age groups, then averaging, removes the age effect. This is the core idea of stratification and, in a smoother form, of regression and weighting.
Key concepts and terms
| Term | Plain meaning |
|---|---|
| Treatment | The action or exposure whose effect you want to know |
| Outcome | The result you measure |
| Potential outcome | The outcome that would occur under a given treatment |
| Counterfactual | The outcome that did not happen but could have |
| ATE | Average treatment effect over the whole population |
| ATT | Average effect among those who were treated |
| CATE | Effect conditional on covariates, i.e. for a subgroup |
| Confounder | A variable that influences both treatment and outcome |
| Collider | A variable influenced by two others; adjusting for it creates bias |
| Mediator | A variable on the path from treatment to outcome |
| Instrument | A variable that affects treatment but not the outcome directly |
| Propensity score | The probability of receiving treatment given covariates |
| Overlap | Both treated and untreated units exist for each covariate pattern |
| Selection bias | Bias from how units entered the treated or control group |
| Randomization | Assigning treatment by chance |
| Do-operator | Notation for setting a variable by intervention |
| Uplift | The incremental effect of an action on an individual or segment |
| Heterogeneous effect | Effects that differ across units |
A worked example
Below is a compact example with simulated tabular data. A discount is more likely to be offered to engaged customers, and engaged customers also spend more. A naive comparison overstates the discount effect. We then adjust with a propensity model and a doubly robust estimate.
Simulating confounded data
import numpy as np
import pandas as pd
from sklearn.linear_model import LogisticRegression
from sklearn.ensemble import GradientBoostingRegressor
rng = np.random.default_rng(0)
n = 20000
engagement = rng.normal(size=n)
tenure = rng.normal(size=n)
# Engaged customers are more likely to get the discount.
p_treat = 1 / (1 + np.exp(-(1.2 * engagement + 0.3 * tenure)))
treat = rng.binomial(1, p_treat)
# True effect of the discount on spend is +2.0.
spend = 10 + 3.0 * engagement + 1.0 * tenure + 2.0 * treat + rng.normal(size=n)
df = pd.DataFrame(dict(engagement=engagement, tenure=tenure,
treat=treat, spend=spend))
The naive estimate
naive = df.loc[df.treat == 1, "spend"].mean() - df.loc[df.treat == 0, "spend"].mean()
print(round(naive, 2)) # much larger than 2.0 because of confounding
The naive difference mixes the effect of the discount with the effect of being engaged.
Propensity weighting
X = df[["engagement", "tenure"]]
ps = LogisticRegression().fit(X, df.treat).predict_proba(X)[:, 1]
ps = np.clip(ps, 0.02, 0.98) # guard against extreme weights
w = np.where(df.treat == 1, 1 / ps, 1 / (1 - ps))
ipw = (np.average(df.spend[df.treat == 1], weights=w[df.treat == 1])
- np.average(df.spend[df.treat == 0], weights=w[df.treat == 0]))
print(round(ipw, 2)) # close to 2.0
A doubly robust estimate
m1 = GradientBoostingRegressor().fit(X[df.treat == 1], df.spend[df.treat == 1])
m0 = GradientBoostingRegressor().fit(X[df.treat == 0], df.spend[df.treat == 0])
mu1, mu0 = m1.predict(X), m0.predict(X)
t, y = df.treat.values, df.spend.values
dr = (mu1 - mu0
+ t * (y - mu1) / ps
- (1 - t) * (y - mu0) / (1 - ps))
print(round(dr.mean(), 2)) # close to 2.0
In real work you would use cross fitting so that the outcome models are not evaluated on the data they were trained on. That is the idea behind double machine learning.
Reading the result
- The naive estimate is biased upward because engagement drives both treatment and spend.
- Weighting and the doubly robust estimator recover a value near the truth because engagement and tenure are the only confounders and we measured both.
- If an unmeasured trait also drove treatment and spend, all three estimates would still be biased. The code cannot detect that. Only design and domain knowledge can.
Variations worth trying
- Remove
tenurefrom the adjustment set and watch the estimate move. This shows how omitted confounders bias results. - Add a collider, for example a column that depends on both treatment and spend, and adjust for it. The estimate gets worse, not better.
- Shrink the overlap by making the treatment depend more steeply on engagement. Weights grow and the estimate becomes noisy.
- Replace the logistic propensity model with a deliberately wrong one, such as a constant. The doubly robust estimate stays close to the truth if the outcome models are good.
- Repeat the run with fifty random seeds and plot the spread of each estimator. This is a cheap way to see bias and variance separately.
- Add an unmeasured confounder to the simulation and compute how large it must be to flip the sign of the estimate.
These small experiments teach more than any formula. Simulation is the safest place to learn what each estimator does when its assumptions fail.
A numeric walk-through by hand
Take two age groups.
| Group | Share treated | Mean outcome treated | Mean outcome untreated |
|---|---|---|---|
| Young | 20 percent | 80 | 70 |
| Old | 80 percent | 50 | 40 |
Within each group the effect is +10. A pooled comparison, however, compares mostly old treated people with mostly young untreated people, and the sign can even flip. Stratifying and averaging by group size gives +10. This is the same mechanism as Simpson's paradox.
Strengths and limitations
Strengths
- It answers the question decision makers actually ask: what happens if we act.
- It exposes hidden biases that make pure prediction misleading.
- Randomized experiments give unbiased answers with minimal assumptions.
- Many estimators combine well with flexible machine learning, so they scale to wide tabular data.
- It gives a principled way to study subgroups and personalization, for example with uplift models.
- Sensitivity analysis makes the dependence on assumptions explicit.
Limitations
- Observational estimates always depend on untestable assumptions.
- Unmeasured confounding is the main threat and often cannot be ruled out.
- Poor overlap makes estimates unstable or impossible.
- Experiments can be expensive, slow, unethical or impractical.
- Interference, such as network effects and marketplace effects, breaks the simple unit level view.
- Effects can change across time and populations, so results may not transfer.
- High capacity machine learning can overfit nuisance models and produce confident but biased effects if used naively.
- Causal graphs require domain knowledge, which is hard to automate.
How it compares with alternatives
| Approach | Question answered | Needs interventions or assumptions? | Typical use |
|---|---|---|---|
| Descriptive statistics | What happened? | No | Reporting |
| Correlation and regression | What goes together? | No causal claim | Exploration |
| Predictive machine learning | What is likely next? | No causal claim | Forecasting, scoring |
| Randomized experiment (A/B test) | What is the effect of this change? | Randomization | Product and medical trials |
| Observational causal methods | What is the effect, without a trial? | Strong assumptions | Policy, economics, health records |
| Uplift modeling | Who responds to the action? | Often built on experiments | Marketing, retention |
| Reinforcement learning | What policy maximizes reward? | Needs exploration | Sequential decisions |
| Explainability tools | Why did the model predict this? | No causal claim | Debugging, audit |
A short note on two neighbors. SHAP explains a model's predictions, not the effect of changing the world. A large SHAP value says the feature drives the model output, which is not the same as saying that changing the feature would change the real outcome. Reinforcement learning learns policies by acting, so it is causal by construction when exploration is real, but offline versions need the same identification care as observational studies.
Choosing among observational estimators
| Method | Core idea | Key assumption | Good when |
|---|---|---|---|
| Regression adjustment | Model outcome given treatment and covariates | Correct model, no hidden confounders | Few covariates, linear-ish effects |
| Matching | Pair similar treated and control units | Overlap, no hidden confounders | Small data, need transparency |
| Inverse propensity weighting | Reweight to mimic a randomized sample | Good propensity model, overlap | Many covariates, binary treatment |
| Doubly robust | Combine outcome and propensity models | One of the two is right | Default for flexible learners |
| Instrumental variable | Use an outside push on treatment | Valid instrument | Hidden confounding, a natural instrument |
| Difference in differences | Compare changes over time | Parallel trends | Policy changes with before and after data |
| Regression discontinuity | Compare around a cutoff | No manipulation at the cutoff | Sharp eligibility rules |
| Synthetic control | Blend controls to mimic treated | Good pre-period fit | One treated unit or region |
Meta-learners for heterogeneous effects
- S-learner: one model with treatment as an input column. Simple, but can shrink the treatment effect toward zero.
- T-learner: separate models for treated and control rows. Flexible, but each model sees less data.
- X-learner: uses imputed individual effects to share information across groups. Helpful when groups are unbalanced.
- R-learner and DR-learner: use residuals or doubly robust scores to target the effect directly.
- Causal forests: trees grown to split on effect differences, with honest estimation.
Everyday analogy: a T-learner is like asking two experts, one who has only seen treated cases and one who has only seen untreated cases, and subtracting their answers. It works when both experts are good and have seen cases like the one at hand.
Role in tabular foundation models
Tabular foundation models learn from raw tables: rows as examples, columns as features of mixed types, with missing values and often no meaningful column names. They are pre-trained on large collections of synthetic or real tables and then used through in-context learning, where the table itself is the prompt. See /model/research and /model/architecture for how this family is built, and TabPFN and TabICL for well known examples.
Causal inference connects to this world in several concrete ways.
Synthetic pre-training comes from causal graphs
Some tabular foundation models are pre-trained on synthetic tables. A common recipe is to sample a random structural causal model: a random directed graph, random functions on the edges, random noise, and then to read off some nodes as features and one node as the target. The model sees millions of such tables and learns a prior over how real tables behave. In this sense the pre-training prior is itself a distribution over causal mechanisms. This helps explain why such models can fit small real tables well, since real tables are also generated by processes with sparse structure, mixed types and noise.
Row and column structure carries causal meaning
A table has two axes. Rows are usually independent draws from a population, which is the same assumption many causal estimators make. Columns are variables with possible causal links between them. Architectures that attend across both rows and columns, such as those using axial attention, can in principle capture both the population level pattern and the between variable dependencies. That is useful for adjustment, because adjusting for the right columns is what removes confounding.
In-context learning as a fast outcome model
In-context learning lets a pre-trained model act as a learner that is fit in one forward pass. For causal work, this makes it a fast and flexible outcome model. In a T-learner you fit one outcome model for treated rows and one for control rows. In an S-learner you include treatment as a column. With an in-context model, each fit is a single pass over the table, which makes bootstrap intervals and cross fitting cheap. The causal identification still comes from your design. The foundation model only supplies the regression or classification engine.
Missing values and imputation
Missingness is a causal question. Data can be missing completely at random, at random given other columns, or not at random. These map directly to causal graphs that include a missingness indicator. Imputation models, including those described under imputation networks, must respect this. If missingness depends on the outcome, naive imputation can bias a downstream causal estimate. A tabular foundation model that imputes values should be treated as part of the data pipeline, and its effect on the estimate should be checked.
Anomaly detection and distribution shift
Causal thinking explains why some anomalies matter. A change in a mechanism, such as a new pricing rule, shifts the relationship between columns, while a change in a covariate only shifts a marginal. Tools for anomaly detection flag either. Knowing the causal structure helps you separate harmless covariate drift from a real break in the process. This also matters for transfer learning and robustness.
Continual learning and stable mechanisms
A common idea in causal work is that mechanisms are more stable than correlations. Models that learn mechanism level features should transfer better across environments. For continual learning, where a model updates over time, this suggests keeping what is stable and revising what is not. It is an open research area, and claims should be made carefully.
Sector and semantic classification
When columns have no names, a model may still infer what a table is about, for example whether it describes retail, health or logistics. Methods related to semantic sector heads use such inferred context. This helps choose reasonable adjustment sets and sanity check whether a variable can plausibly be a cause or an effect. Semantic hints are only hints. A human should review the causal graph.
What foundation models do not do
A tabular foundation model trained to predict does not become a causal model by itself. If you ask it to predict outcome from treatment and covariates, it learns the observational association. Without randomization or valid adjustment, the treatment coefficient inherits confounding. The right pattern is to pair the model with a causal design: use it as a strong nuisance estimator inside a doubly robust or double machine learning procedure.
Benchmarks
Predictive accuracy on benchmark suites, such as those described at /model/benchmarks, does not measure causal quality. A model can top a leaderboard and still give biased effect estimates. Causal benchmarks use semi synthetic data where the true effect is known by construction.
Practical guidance and best practices
Before you touch data
- Write the causal question in one sentence with treatment, outcome, population and time window.
- Draw a graph with domain experts. List likely confounders, mediators and colliders.
- Decide the estimand: ATE, ATT or CATE.
- Prefer a randomized experiment whenever you can run one safely.
Choosing variables
- Adjust for pre-treatment common causes of treatment and outcome.
- Do not adjust for mediators if you want the total effect.
- Do not adjust for colliders or post-treatment variables.
- Include variables that predict the outcome even if they are not confounders, since they reduce variance.
- Be wary of "kitchen sink" adjustment with hundreds of columns. It can include colliders by accident.
Checking overlap and balance
- Plot propensity score distributions for treated and control rows.
- Trim or restrict to the region of overlap if needed.
- Check standardized mean differences before and after weighting or matching.
Estimating
- Use cross fitting when using flexible learners for nuisance functions.
- Prefer doubly robust or orthogonal estimators over a single plug-in model.
- Report intervals. Use the bootstrap or analytic standard errors for the chosen estimator.
- For time based data, prefer difference in differences or synthetic control with careful pre-trend checks.
Validating
- Run placebo tests: pretend treatment happened earlier and check that the effect is near zero.
- Use negative control outcomes that treatment should not affect.
- Do sensitivity analysis for unmeasured confounding.
- Compare with an experiment on a subset if possible.
- Report which assumptions are untestable.
Communicating
- Say what is estimated and for whom.
- Separate the estimate from the assumptions.
- Show subgroup effects with caution and with multiple testing in mind.
- Avoid causal language when only associations were estimated.
Using machine learning wisely
- Use strong learners for nuisance parts such as the propensity score and the outcome model.
- Keep the causal estimator simple and well understood.
- Calibrate propensity scores. Poorly calibrated probabilities distort weights.
- Monitor the effect over time. Effects drift, and so do populations.
A short checklist for experiments
- Define the primary metric and the minimum effect worth detecting before launch.
- Pick the unit of randomization. If users share an environment, randomize clusters, not individuals.
- Compute sample size from the expected effect and the noise level.
- Fix the run length in advance, or use a sequential method designed for early stopping.
- Check for sample ratio mismatch: the observed split should match the planned split.
- Pre-register subgroup analyses to limit false discoveries.
- Look at guardrail metrics so a gain in one place does not hide a loss in another.
A short checklist for observational studies
- Emulate the experiment you wish you had run. Define who is eligible, when treatment starts and when follow up begins.
- Align time zero for treated and control rows, to avoid immortal time bias.
- Use only information available before treatment as covariates.
- Pre-specify the adjustment set and the estimator.
- Report the number of rows dropped by trimming or exclusion.
- Share code so others can rerun the analysis.
Common mistakes
- Treating a predictive feature importance as a causal effect.
- Adjusting for a collider or a mediator and creating bias.
- Ignoring positivity, so some groups never receive the treatment.
- Using post-treatment variables as covariates.
- Trusting a single model without a sensitivity analysis.
- Interpreting a CATE model's output as truth for each person, rather than a noisy estimate.
- Running an A/B test with interference, such as a shared inventory or a social network, and ignoring spillovers.
- Peeking at experiment results and stopping early without a plan.
- Splitting data after selecting variables, which leaks information.
- Using a flexible model for the propensity score without trimming, giving huge weights.
- Confusing statistical significance with practical importance.
- Reusing a causal estimate from one population on another without checking transport assumptions.
- Imputing missing values using the outcome, which leaks the answer into covariates.
- Calling a correlation matrix a causal graph.
When to stop and ask for help
- The decision is costly or irreversible, and the estimate rests on strong assumptions.
- Treatment is assigned by a complex human process that the data barely records.
- The outcome is delayed by months or years, so drift is likely.
- Several treatments interact, or units influence each other.
- The analysis will be used to justify a policy that affects many people.
In these cases, involve a statistician or domain expert early, write down the design before looking at outcomes, and plan a follow-up experiment to confirm the finding.
Frequently asked questions
What is causal inference in simple terms?
Causal inference is the practice of working out what effect an action has, using data and clear assumptions. It goes beyond noticing that two things move together and asks whether changing one would change the other. The usual tools are randomized experiments, careful observational designs and estimators that adjust for confounding.
How is causal inference different from machine learning prediction?
Prediction asks what outcome is likely given what you observe, and it can use any pattern that works, including ones driven by confounders. Causal inference asks what would happen under an intervention, so it must separate the effect of the action from other reasons the outcome differs. A good predictive model can still give a badly wrong causal answer.
Do I always need a randomized experiment?
No, but a randomized experiment is the strongest design and should be used when it is safe, affordable and ethical. When it is not possible, observational methods such as matching, weighting, instrumental variables, difference in differences and regression discontinuity can give credible answers if their assumptions hold. Each of these needs careful checks and honest reporting of what cannot be tested.
What is a confounder and why does it matter?
A confounder is a variable that affects both the treatment and the outcome, creating a link between them that is not causal. If you ignore it, you will mix its influence with the true effect. Adjusting for measured confounders, or randomizing, removes this source of bias, but unmeasured confounders remain the main risk in observational work.
What is the difference between ATE and CATE?
The average treatment effect is the mean effect across a whole population, while the conditional average treatment effect is the mean effect for a group defined by covariates. CATE lets you ask who benefits most and who benefits least. It is harder to estimate than ATE because each subgroup has less data and noise is larger.
Can SHAP values or feature importance show causality?
No. They describe how a trained model uses its inputs, not how the real world responds to changes in those inputs. A feature can be highly important to a model because it is a proxy for something else. To learn a causal effect you need a design that supports causal identification.
How do tabular foundation models relate to causal inference?
They can serve as fast, flexible outcome or propensity models inside a causal estimator, and some are pre-trained on synthetic tables generated from random causal graphs. They do not by themselves provide causal identification. You still need a valid design, the right adjustment set and honest uncertainty estimates.
What is a propensity score?
It is the probability that a unit receives the treatment given its observed covariates. Propensity scores are used to match, weight or stratify units so that treated and control groups look alike on those covariates. They only balance observed variables, so they cannot fix unmeasured confounding.
What is uplift modeling?
Uplift modeling estimates how much an action changes the outcome for each individual or segment, instead of predicting the outcome itself. It is common in marketing and retention, where the goal is to target people who are persuaded by an action rather than those who would act anyway. It works best with data from randomized experiments.
How can I tell whether my causal estimate is trustworthy?
Check overlap and balance, run placebo and negative control tests, compare several estimators, and run sensitivity analysis for unmeasured confounding. A trustworthy estimate is stable across reasonable choices, comes with an interval, and is accompanied by a plain statement of its assumptions. If an experiment is available, comparing against it is the best check.
Glossary
- Average treatment effect (ATE): the mean difference in outcomes if everyone were treated versus if no one were.
- Backdoor path: a non-causal path from treatment to outcome that creates confounding.
- Balance: similarity of covariate distributions between treated and control groups.
- Causal graph: a diagram of variables and arrows showing assumed direct causal links.
- Collider: a variable with two incoming arrows; conditioning on it can open a false path.
- Confounder: a common cause of treatment and outcome.
- Counterfactual: what would have happened under a different action.
- Cross fitting: fitting nuisance models on one part of the data and applying them to another.
- Difference in differences: a design comparing changes over time across treated and control groups.
- Double machine learning: an approach using flexible models for nuisance parts with an orthogonal estimator.
- Doubly robust: an estimator that stays consistent if either the outcome model or the treatment model is correct.
- Exchangeability: treated and control groups are comparable after adjustment.
- Heterogeneous treatment effect: an effect that varies between units.
- Identification: showing a causal quantity can be computed from observed data under assumptions.
- Instrumental variable: a variable that shifts treatment and affects the outcome only through treatment.
- Interference: one unit's treatment affects another unit's outcome.
- Mediator: a variable that transmits part of the effect from treatment to outcome.
- Overlap or positivity: every covariate pattern has a chance of both treatment and control.
- Potential outcome: the outcome under a specific treatment level.
- Propensity score: probability of treatment given covariates.
- Regression discontinuity: a design using a cutoff that assigns treatment.
- Sensitivity analysis: a test of how conclusions change if assumptions are violated.
- Synthetic control: a weighted blend of control units built to mimic a treated unit.
- Uplift: the incremental effect of an action on an outcome.
Summary
Causal inference estimates the effect of actions, not just patterns in data. It rests on a clear question, explicit assumptions, a fair design and an estimator that adjusts for confounding, followed by honest uncertainty and stress tests. For tabular data, it pairs naturally with strong learners such as gradient boosting and with tabular foundation models, which can serve as fast nuisance models and are often pre-trained on synthetic tables drawn from random causal structures. The foundation model supplies the fit; the design supplies the causal meaning. Keep the two roles separate, validate with placebo and sensitivity checks, and report assumptions plainly. For the wider context, see /model/research, /model/architecture and /model/benchmarks.
Related
It belongs to Foundations in my stack, under AI and machine learning. Others in the same group: