Key Driver
Analysis
Key driver analysis finds which inputs matter most for an outcome you care about — so you can spend your one budget on the one thing that moves it.
You run a small coffee-shop chain. Last month you surveyed 240 customers. Each one rated overall satisfaction from 0 to 10, and then rated five things about the visit — also 0 to 10:
- Taste of the coffee
- Price fairness
- Speed of service
- Staff friendliness
- Cleanliness
Your budget covers improving exactly one of them this year. Better beans, or a second espresso machine, or a price cut, or barista training, or a cleaning contract. Pick wrong and you have spent the year politely.
Which lever moves overall satisfaction the most? That question is key driver analysis. Everything below is how you answer it without fooling yourself.
Simulated data, generated from a fixed seed so every number on this page is reproducible. Ratings are whole numbers, 0–10. Every statistic on this page is computed from this exact table.
A two-minute correlation refresher
Correlation, written r, is one number summarising how two measurements move together. It runs from −1 to +1. Drag the slider to set the true relationship and watch the cloud respond.
Direction
Positive r: they rise together. Negative: one rises as the other falls. The sign is the arrow.
Strength
Near ±1 the cloud is a tight line. Near 0 it is a blob. Strength is tightness, not steepness.
r answers “how well does a straight line describe this?” — not “is there a relationship?”
park the slider at 0.30 and then 0.70. Survey drivers usually land in that range — strong enough to be real, loose enough that ranking them by eye is hopeless.
The obvious answer, and why it is wrong
Here is the first thing anyone does: correlate each of the five drivers with overall satisfaction, then rank them. Five correlations, computed from the table in section 1.
That certainly looks like an answer. Price fairness leads, cleanliness trails, ship it. Except every one of those five numbers was computed as if the other four did not exist — and in survey data, they very much do.
The drivers are correlated with each other
Hover any cell. This is the same five drivers correlated against themselves.
Two things are happening in that grid, and both are normal.
The halo effect. A customer who had a great visit rates everything a bit high, and a customer whose order was wrong rates everything a bit low. Their general mood leaks into every answer. That shared mood puts a floor of roughly 0.3 under every pair in the grid — it is a property of the respondent, not of your coffee.
Genuine overlap. Staff friendliness and cleanliness sit at 0.71. A shop that feels well-run feels well-run on both counts, and customers can barely separate them.
Multiple regression: one formula, five weights
Forget the word “regression” for a moment. What we are about to build is a guessing formula: you tell it a customer's five ratings, it guesses their overall satisfaction. Nothing more mysterious than that.
The formula is just a starting number plus one weight per driver:
Each weight b says: if this rating goes up by one point, how many points does my guess of overall satisfaction go up? That is the whole idea. The only question is what numbers to use for the six bs — and the computer picks those by trying to make the guesses miss as little as possible.
The formula, running on one real customer
Here are the fitted weights for our 240 respondents, applied to one customer at a time. Step through a few and watch the guess land near — but rarely on — their actual answer.
Every column is rounded to two decimals for display, so adding the rows by hand can land a hundredth away from the predicted total, which is computed from the full-precision weights.
jump to respondent #100 with the button below. That is the formula's worst customer — it misses by 2.4 points. A regression is a decent guesser, never an oracle.
Where the weights come from: the bottom of a bowl
Nobody chose those weights by hand. Add up how badly the formula misses across all 240 customers and you get a single score for any set of weights. Change a weight and the score changes. The computer simply hunts for the weights with the lowest score — that is what “fitting” means, and it is called least squares because the misses get squared before they are added up (so a big miss hurts more than two small ones).
Take the price fairness weight off its fitted value and watch the score climb in both directions:
The marker at the bottom is the fitted weight. Every one of the six weights sits at the bottom of its own bowl simultaneously — that is all the fitting procedure guarantees, and all it needs to.
What “holding the others fixed” actually means
You will hear a regression weight described as the effect of one driver with the others held fixed. In data you merely observed, that sounds like magic — you never held anything fixed, you just handed out questionnaires.
It is not magic. It means: compare customers who gave the same ratings on everything else. You can do it by hand. Pick a single staff friendliness rating, keep only the customers who gave exactly that, and look at cleanliness against overall satisfaction inside that group alone.
click through staff 6, 7, 8 and 9. The steep line is everyone lumped together; the flat ones are like compared with like.
Across all 240 customers, one extra point of cleanliness comes with 0.80 more points of overall satisfaction. Hold staff friendliness still and that collapses:
Honest caveat: the middle row only holds staff friendliness still, which is why it has not fallen all the way. Staff is cleanliness's main partner, so it does most of the work — the bottom row is what happens when all four other drivers are held still at once, which is exactly what the fitted weight in the formula above already does. Regression does this for you, and it can hold ratings still at the fractions in between, which no hand-made group can.
Why the weights get standardized
The weights above are honest but not comparable, because the five drivers are not equally spread out. Price ratings scatter from 1 to 10; taste ratings huddle at the top. A weight of “0.50 per point” is worth more if the driver actually has points to move.
That last column is the standardized beta, written β. It is the same fitted weight, re-expressed so all five are on one ruler: how far does overall satisfaction move, in its own standard deviations, per one standard deviation of push on this driver? Now they can be ranked against each other.
What we gained
Now put the five betas next to the five raw correlations from section 3 — the same drivers, judged alone and then judged together.
Every dot moves left, which is the double-counting draining out. But look at cleanliness: a perfectly respectable correlation of 0.52 collapses to a beta of 0.03.
One more number: R²
R² is how much of the variation in overall satisfaction all five drivers explain together. Here R² = 0.76, so about 76% of why customers differ in satisfaction is captured by these five ratings; the rest is things you did not ask about, plus noise. Hold onto R² — the next section carves it into five pieces.
Fair credit: the Shapley split
Three people move a sofa. Ana can shift it alone, Ben can shift it alone, Cai only helps when someone else is already lifting. How much did each contribute? Asking “what happens if we remove Ana?” undersells her, because Ben quietly covers for her. Asking “what can Ana do alone?” oversells her, because she and Ben would be double-counted.
Lloyd Shapley's answer, from 1953: line the team up in every possible order, and pay each person the average of what they added when they walked in. Sometimes you arrive first and get full credit for the whole lift. Sometimes you arrive last, find the sofa nearly up, and add little. Average over all the orders and the overlap gets split instead of awarded.
Swap “how much of the sofa moved” for R² and you have key driver analysis. Let us do it by hand with three drivers.
Eight teams, including the empty one. Each box is a separate small regression: the R² you get from exactly those drivers and nothing else.
Notice T alone reaches 0.42 and P alone reaches 0.47, but together they only reach 0.62 — not 0.89. The missing 0.27 is the overlap they share. Shapley's job is to divide it.
Pick an order, then step through it. Each driver's contribution is whatever R² it added at the moment it walked in.
walk T → P → S, then walk S → P → T. Taste is worth 0.42 in the first order and 0.10 in the last. Neither number is “the” importance of taste — that is exactly the problem Shapley solves.
Walk an order above to fill in its row, or fill in all six at once.
The three column averages are the Shapley importances. And they add up to exactly the R² of the full three-driver model — no credit invented, none lost. That property is why this method won: the pie is the right size, and every slice is defensible.
All five drivers
With five drivers there are 32 teams and 120 orders. Your laptop does not care; the page computed it before you finished this sentence.
Importance × performance
Importance alone does not tell you where to spend. A driver can be the most important thing in the model and already be excellent — improving it is expensive and nobody notices. You need importance and current performance, on one chart.
Performance is the plain average rating. Importance is the Shapley share. Cross them and the action is in the corners.
What-if: drag a driver's performance
The dividing lines are the average performance across the five drivers (vertical) and an equal 20% share of importance (horizontal) — so the quadrants are relative to this shop, not absolute standards. The sliders move performance only; importance stays fixed, because it comes from the survey you already ran.
In this dataset the verdict is unambiguous: price fairness is the single most important driver and the worst-rated. It is the only thing in the fix-first corner. Taste and staff friendliness are load-bearing and already strong — protect them, do not congratulate yourself into a redesign. Cleanliness scores well and moves little; keep it clean and stop there.
Run the whole pipeline yourself
Now you get to be the universe. Set the true influence of each driver, decide how strong the halo is, how noisy customers are, and how many of them you surveyed. The page simulates that survey and runs the full pipeline — correlations, betas, Shapley, quadrant — then shows you what it recovered next to the truth you set.
This is the only place you will ever see both. In real work you get the left column and never learn the right one.
Moving a slider re-runs at the same seed, so you see the setting change and nothing else. Re-sample draws a fresh set of customers at the same settings — that difference is sampling noise, and it is the whole lesson here.
Top driver recovered, one chip per draw
The deliverable, from this draw
crank the halo to 0.8 and re-sample. Every correlation inflates, R² looks fantastic, and the recovered shares flatten toward equal — the halo makes the drivers so alike that no method can tell them apart. Good survey design beats clever statistics.
set one driver's true weight to 0 while leaving the halo at 0.45. It still shows up with a real correlation and a non-trivial Shapley share. That is not a bug in Shapley; it is what shared-mood variance looks like from the inside.
Six ways this goes wrong
Correlation is not causation
Every number on this page came from watching, not intervening. “Customers who rate price fairly are more satisfied” is not “cutting prices raises satisfaction”. Satisfied customers may simply feel generous about price.
Do: use KDA to pick what to test. Then A/B test it in a few stores.Halo and common-method bias
One person answered every question in one mood, in one sitting, on one scale. Some of what looks like “drivers of satisfaction” is just that mood echoing through the questionnaire.
Do: pair survey ratings with hard data — measured wait times, actual prices, audit scores.Multicollinearity
When two drivers overlap heavily, regression hands the shared credit to whichever wins by a hair. Cleanliness got β = 0.03 here. Re-sample the survey and staff friendliness could be the one holding nothing.
Do: check the intercorrelation grid first. If a pair is above 0.7, report them as one theme, and never rank on betas alone.Range restriction
If everyone rates taste 9 or 10, taste has almost no variance — and a driver that does not vary cannot explain variation. It will look unimportant precisely because you are excellent at it.
Do: print the standard deviation next to every mean. A driver with sd under about 0.8 is being suppressed by its own ceiling.Small samples
Importance estimates are noisy, and Shapley shares are ratios of noisy things. Section 7 lets you watch a 30-person study invent a different winner every draw.
Do: aim for 30–50 respondents per driver. Bootstrap the importances and show the intervals, not just the bars.Importance is relative to the model
These five drivers are the only candidates in the room. If the real reason people love the place is the patio, and you never asked about the patio, its credit gets smeared across whatever correlates with it.
Do: run open-ended questions or interviews before fixing the attribute list. And re-check the list every wave.Five questions
Click an answer to see whether it holds up, and why.
The whole workflow on one card
Key driver analysis · procedure
- Name one outcome. Overall satisfaction, NPS, renewal intent — one column, and it must vary.
- List candidate drivers from qualitative work, not from the dashboard you happen to own. Missing drivers do not stay missing; their credit gets handed to their neighbours.
- Look at the intercorrelation grid before anything else. Anything above 0.7 is one theme wearing two hats. Decide now whether to merge it.
- Fit the standardized regression for the “holding the others fixed” view, and note R². Do not rank on betas when drivers overlap.
- Compute Shapley / LMG importance for the ranking you will actually present. It splits shared credit and sums to R², so shares of 100% are honest.
- Plot importance against performance. The fix-first corner is your recommendation. One chart, four labels, no table.
- Sanity-check the sample. Roughly 30–50 respondents per driver; bootstrap intervals if you can. Quote ranks, not decimals.
- Then go prove it. Change the fix-first driver in a few locations, hold the rest, and measure. KDA points the experiment; the experiment is what earns the budget.
“Price fairness carries 29% of what explains satisfaction and scores worst of the five. It is the one to fix, and here is the two-store test that would confirm it.”