By MCP Analytics Team | Published , updated
Compare two groups? Find what drives an outcome? Spot a trend? The question decides which statistics fit, so it is the first thing to get right.
The analyses filed under this question. Each card opens the analysis page, where you can run it on a file. Cards marked Coming soon are still being built.
Do my three-plus raters agree? Fleiss kappa and Krippendorff alpha for multi-rater categorical agreement.
Do two measurement methods agree well enough to be used interchangeably?
What is each product feature worth relative to price?
What matters most that we do worst? Importance vs performance quadrants from survey data for prioritization.
How well do two raters agree beyond chance?
Ordinal survey items done right.
What is our Net Promoter Score, and is it moving or differing by segment?
Best-worst scaling for prioritization.
Does my sample look like my population? Compute and apply post-stratification weights, compare weighted vs raw estimates.
The data. standard_nps.csv, the published sample file for NPS Analysis: 480 rows; columns response_id, plan, likelihood_to_recommend. Sample data, not a customer's.
The calculation. Python, standard library only. This exact code ran against the file when this page was built, and printed the output below it.
import csv
rows = list(csv.DictReader(open("standard_nps.csv")))
def nps(v):
pro = sum(s >= 9 for s in v) / len(v)
det = sum(s <= 6 for s in v) / len(v)
se = ((pro + det - (pro - det) ** 2) / len(v)) ** 0.5
return round(100 * (pro - det), 1), round(196 * se, 1)
plans = {}
for r in rows:
score = int(r["likelihood_to_recommend"])
plans.setdefault(r["plan"], []).append(score)
allv = [s for v in plans.values() for s in v]
print(len(allv), "responses: NPS %s +/- %s" % nps(allv))
for p, v in sorted(plans.items()):
print(p, len(v), "responses: NPS %s +/- %s" % nps(v))
480 responses: NPS 11.0 +/- 7.0
Business 130 responses: NPS 35.4 +/- 11.5
Starter 150 responses: NPS -22.0 +/- 12.5
Team 200 responses: NPS 20.0 +/- 10.7
What it says. Net Promoter Score is the share of 9 and 10 ratings minus the share of 0 to 6. Overall it is 11, but the plans differ widely: Business 35.4, Starter -22, Team 20. The plus-or-minus figure is a 95% margin of error: 7 points overall and up to 12.5 for a single plan, so a move of a few points between surveys is often noise.
What it does not say. NPS throws away the difference between a 0 and a 6, and between a 9 and a 10. It says how people feel, not why; the library analysis breaks the score down by segment and tests whether the differences between segments are significant.
Run NPS Analysis on this file or your own, or open its stored sample report.
Further reading on the method in the worked example. Each reference was looked up and its authors, title, year and venue confirmed on 30 October 2026.
The stored sample report for Multi-Rater Agreement (Fleiss Kappa). Each analysis has its own report layout; open its page to see what it returns.
Tell us what went wrong, in your own words. We capture the page you're on automatically, so no need to describe where you are.