The 90% CI-floor: the uncertainty figure Rankquant publishes
By Ryan Siegal · Founder and Principal
1. Why a mean on its own is not the whole story
The most common instinct — "sort by average rating" — says nothing about how much evidence stands behind the average. A product with one 5-star review has a mean of 5.0 and a sample of one. A product with 500 reviews averaging 4.6 is obviously the safer pick. Sample size has to be accounted for somewhere, and reported plainly wherever it has not been.
There are two well-established fixes: Bayesian shrinkage (pull thin-sample items toward a prior) and confidence-interval bounds (state a defensibly pessimistic estimate alongside the point estimate). Rankquant uses both — in different places, kept deliberately separate:
- The global and in-cohort percentiles report the measurement as made. Both are the empirical-CDF rank of Ẑ itself: no floor, no shrinkage. A number corrected twice before you see it is no longer a measurement.
- The AI-adjusted percentile is where the sample is charged for. It re-percentiles Ẑ · n/(n + 53), discounting each item in proportion to how little evidence stands behind it. Shrinkage arithmetic with one published constant — no model, no training, no inference.
- The 90% CI-floor is published per item as the diagnostic. It quantifies the same uncertainty the adjustment acts on, in the units of the score, and it is derived below. It sets no percentile.
The floor earns its place as the published diagnostic for three reasons. No prior to specify: it needs only a confidence level. Scale-free: it applies identically to z-scores, percentages or counts. Transparent: a reader can recompute it by hand — take the mean, subtract 1.645 divided by the square root of the effective sample size. That's it.
2. The CI-floor formula, and what each published figure actually ranks
| Global percentile | The empirical-CDF rank of Ẑ itself — the unweighted mean of the qualifying reviewers' z-scores (n_u ≥ 2, σ_u > 0), over N of them. No floor and no shrinkage is applied before the ranking. Every reviewer counts once and equally, so there is no weight to correct for and N_eff = N. |
|---|---|
| In-cohort percentile | Identical Ẑ, identical N. The cohort figure re-ranks the same numbers inside a smaller peer set — same category, price band or city depending on the vertical. No second interval, because there is no second estimate. |
| AI-adjusted percentile | The same reviewer-normalized mean, discounted for the confidence its sample supports: Ẑ · n / (n + 53), re-percentiled on the same scale. This is the figure that acts on sample size, in every vertical. Shrinkage arithmetic, not a model. |
| 90% CI-floor (published diagnostic) | floor = Ẑ − 1.645 · (1/√N), computed per item and shipped with it — ciFloorZ in the catalog exports, zCiLower and zMargin on products. The SE scale factor is 1 because z-scores have unit variance by construction. It is there to be read, not sorted on: no published percentile is a function of it. |
3. Worked example — three products, three reviewer counts
Product A: 4 reviewers, mean z = +2.10
SE = 1/√4 = 0.500
90% floor = 2.10 − 1.645·0.500 = +1.28 ← published diagnostic
adjusted = 2.10 · 4/(4+53) = +0.15 ← what the AI-adjusted figure ranks
Product B: 20 reviewers, mean z = +1.80
SE = 1/√20 = 0.224
90% floor = 1.80 − 1.645·0.224 = +1.43
adjusted = 1.80 · 20/(20+53) = +0.49
Product C: 80 reviewers, mean z = +1.60
SE = 1/√80 = 0.112
90% floor = 1.60 − 1.645·0.112 = +1.42
adjusted = 1.60 · 80/(80+53) = +0.96
Global and in-cohort percentiles rank the mean z: A > B > C (2.10 > 1.80 > 1.60)
AI-adjusted percentile ranks the shrunk mean: C > B > A (0.96 > 0.49 > 0.15)
The 90% floor is printed for each and ranks nothing.The re-ordering on the middle line is the point of the third figure, and it is the only one of the three where sample size changes the order. Product A might be exceptional, but with 4 reviewers we can't distinguish "exceptional quality" from "lucky small sample," so the adjustment lets it keep only 4/57 of its measured distance from the corpus average. Products B and C have earned the confidence that their means aren't accidents, and keep far more of theirs. Meanwhile the headline percentile still reports A's +2.10 as measured, with its reviewer count and its 90% floor beside it — measurement and uncertainty shown separately rather than pre-blended into one number. Read as a diagnostic, the 0.01 gap between B and C at the floor is a statistical tie (we flag it on-site); the 0.15 gap between B and A is a real separation.
4. Why 90% and not 95% or 99%
The confidence level sets how conservative the published floor is. At higher confidence the floor sits further below the mean — a broader statement of what we don't know about a thin sample. At lower confidence it hugs the mean and stops telling a reader anything they couldn't read off Ẑ directly.
One-tailed critical values:
80% → z = 0.842
85% → z = 1.036
90% → z = 1.645 ← Rankquant's published floor
95% → z = 1.960
99% → z = 2.326
Distance the floor sits below the mean, per 1/√N of SE,
relative to 90%:
80% → 0.51× (much softer)
90% → 1.00× (our choice)
95% → 1.19× (19% wider)
99% → 1.41× (41% wider — uninformative at the sample sizes we hold)We publish at 90% because it is the conventional level for a one-tailed directional claim and because it stays informative at the sample sizes we actually hold. At 95% the floor collapses so far for items under ~15 reviewers that it barely distinguishes one thin sample from another; at 85% it sits close enough to Ẑ to add nothing the headline figure isn't already saying. The constant is published and version-stable at 1.645 across every vertical; any change requires a public version bump. Note what that change would not do: it would not reorder a single ranking, because no published percentile reads the floor.
5. Relationship to other small-sample techniques
| Wilson score lower bound (binary) | Reddit's "best" sort and Yelp's internal ranking use the Wilson lower bound on up/down-vote binomials, as the sort key. Rankquant's CI-floor is the continuous-scale analog on z-scores — same construction, published as a diagnostic rather than used to sort. |
|---|---|
| IMDb Top 250 (Bayesian shrinkage) | IMDb's Top 250 formula W = (v/(v+m))·R + (m/(v+m))·C shrinks thin-sample movies toward the global mean C. This is the family the AI-adjusted percentile belongs to: Ẑ · n/(n + 53) is the same weight with m = 53 and the prior set at the corpus average, which is zero on the z scale. |
| Hodges-Lehmann estimator | A robust rank-based estimator of a location parameter. Rankquant's empirical-CDF percentile step is rank-based (Hodges-Lehmann flavored) even though Ẑ and its floor are both mean-based. |
| Meta-analysis random-effects models | DerSimonian-Laird and related random-effects estimators combine within-study and between-study variance. Rankquant's reviewer-level aggregation is a fixed-effects approximation; a random-effects variant is a future methodology upgrade. |
6. What users see on the product page
- Global percentile: where the item lands against everything we rank, as one number. "89 / 100 global."
- In-cohort percentile: the same quantity re-ranked among its peer set, shown beside the global figure with the tagline interpreting any spread.
- AI-adjusted percentile: the same reviewer-normalized mean after the shrinkage Ẑ · n/(n + 53), re-percentiled on the same scale, with the reviewer count it rests on.
- The 90% floor, as a figure to read: published per item beside the three percentiles — "mean +1.60, floor +1.42, SE 0.112, N 80" — so the uncertainty is legible without being baked into a rank.
- Statistical ties: products within 0.05 of each other on that published floor are bracketed as "statistically similar" rather than read as ordinally separated.
7. A note on one-tailed vs two-tailed
The CI-floor uses the one-tailed 90% critical value z = 1.645. Why one- tailed? Because the floor answers a one-tailed question: "what's a defensibly-low estimate of this product's quality?" The upper bound isn't interesting — a lucky ceiling is not evidence of anything, and no figure on this site reads one. Two-tailed would correspond to z = 1.960, giving a 95% symmetric CI; quoting that as the floor would overstate how little we know about items whose uncertainty we only care about in one direction.
Frequently asked questions
Why 90% and not 95%?+
Does anything on the site rank on the CI-floor?+
Where is the CI-floor published?+
What's the CI-floor of a cohort percentile?+
How does CI-floor width change with N?+
Does this penalize new products too harshly?+
← Degrees of freedom · Next: Inter-rater reliability →