Free — no account required

Compare Groups Fairly Without a Randomized Trial

Upload a CSV with an outcome, a treated flag, and the pre-existing differences you can measure. Get the raw gap next to a matched, like-for-like estimate — with covariate balance to prove the comparison is fair. Free.

24,000+ analyses run
Encrypted & deleted in 7 days
PDF & citation included

Free analyses run on up to 10,000 rows. Larger files are randomly sampled to that size — sign up to analyze your full dataset.

📊
-
Rows
-
Columns
-
Numeric

Running propensity score matching — fairer before/after comparisons analysis...

Matching treated rows to comparable controls...

Your report is ready

Sent to — naive vs matched effect estimates with confidence intervals, covariate balance before and after matching, matched-pair accounting, R code, and AI insights.

Analyze another file
Sample Output

Every report includes interactive charts, tables, and AI insights

Upload your data to get your own report

View all case studies See all free tools

How it works

The analysis fits a logistic model for each row's probability of being treated (the propensity score) from your covariates, then pairs every treated row with the nearest untreated row on the logit propensity scale — within a caliper of 0.2 standard deviations, each control used at most once. It reports the naive raw difference and the matched paired difference side by side with 95% confidence intervals, plus standardized mean differences per covariate before and after matching (|SMD| < 0.1 = well balanced) and the share of treated rows inside the control group's propensity range.

Use it when the groups chose (or were chosen for) the treatment themselves — program membership, feature adoption, voluntary training — and you can measure the pre-existing differences that drove both the choice and the outcome.

Not needed for randomized experiments (use the A/B test tool), and not sufficient when the important confounders were never measured — matching cannot adjust for what is not in the data.

Built for: Analysts and operators evaluating programs, features, or interventions that were not randomly assigned

Typical data source: A spreadsheet or CSV with one row per person or unit: a numeric outcome, a treated/untreated flag, and the pre-treatment attributes that drove selection

E-commerceMarketingHRHealthcareFinanceEducation

What data do you need?

One row per customer: the outcome, the treatment flag, and pre-existing attributes. For example, a loyalty program:

annual_spend (numeric) loyalty_member (categorical) customer_age (numeric) prior_spend (numeric)
412.5 member 44 120.4
285.1 non-member 29 85.0
530.2 member 58 190.7

Minimum 50 rows · Best with 300-20,000 rows with a 20-60% treated share and 2-6 covariates

What's in the report?

Standard-library analysis: compare a treated group against an untreated group fairly when assignment wasn't random. Did loyalty members spend more BECAUSE of the program, or were they already better customers? The analysis models each row's propensity to be treated from the covariates you map, matches every treated row to its nearest comparable control (1-nearest-neighbor on the logit propensity score, 0.2-SD caliper, without replacement), and shows the naive raw difference next to the matched difference with confidence intervals — plus covariate balance before and after matching. Matching adjusts only for observed covariates.

📋

Covariate Balance

Standardized mean differences before vs after matching — proof of how comparable the matched groups actually are.

📊

Balance After Matching

Each covariate's remaining imbalance after matching against the 0.1 threshold, at a glance.

📊

Naive vs Matched Difference

The raw gap and the matched estimate side by side with confidence intervals — the headline chart.

📋

Effect Estimates

Both estimates in full: effect, 95% CI, p-value, and the rows each one uses.

🤖

AI Insights

Plain-English interpretation — what the numbers mean, what's significant, and what to do next.

The Question This Answers

Did the program actually work, or did better customers self-select in?

Map your outcome, the treated flag, and the pre-existing differences you can measure. The report shows the raw gap next to the matched, like-for-like estimate — so you can see how much of the difference the treatment plausibly caused.

Questions?

See our FAQ for details on pricing, data privacy, and how the analysis works. Every report includes a Methodology section showing the statistical test, assumptions checked, and diagnostics run.

Your data has more stories to tell

Run any analysis on your own data — validated R analyses, interactive reports, AI insights, and PDF export.

Try Free — No Credit Card
Powered by MCP Analytics