{
    "version": "https:\/\/jsonfeed.org\/version\/1.1",
    "title": "Ivan Baldin, Data Analyst",
    "_rss_description": "Data analytics, probability theory, and applied statistics — from the practitioner’s perspective. Ivan Baldin writes about sales funnels, call center performance, conversion analysis, confidence intervals, binomial distributions, Z-scores, and the math behind data-driven decisions. Years of hands-on experience turning raw CRM data into actionable insights for sales teams and business leaders.",
    "_rss_language": "en",
    "_itunes_email": "",
    "_itunes_categories_xml": "",
    "_itunes_image": "",
    "_itunes_explicit": "",
    "home_page_url": "https:\/\/ivanbaldin.blog\/",
    "feed_url": "https:\/\/ivanbaldin.blog\/json\/",
    "icon": "https:\/\/ivanbaldin.blog\/pictures\/userpic\/userpic@2x.jpg?1774085044",
    "authors": [
        {
            "name": "Ivan Baldin",
            "url": "https:\/\/ivanbaldin.blog\/",
            "avatar": "https:\/\/ivanbaldin.blog\/pictures\/userpic\/userpic@2x.jpg?1774085044"
        }
    ],
    "items": [
        {
            "id": "1",
            "url": "https:\/\/ivanbaldin.blog\/all\/conversion-chart-with-confidence-intervals\/",
            "title": "Conversion Chart with Confidence Intervals",
            "content_html": "<p>I’ve been happily using a more informative way to visualize conversion rates for a while now, by adding <b>confidence interval bounds<\/b> to my charts.<\/p>\n<h2>Sales office conversion rates<\/h2>\n<p>Say we’re evaluating the performance of regional sales offices. By <b><i>performance<\/i><\/b> we mean the ratio of closed deals to incoming leads (lead-to-sale conversion, or simply <b><i>“conversion”).<\/i><\/b> For example, if the “Midtown” office closed 19 deals out of 33 leads in a quarter, we consider their performance to be 19\/33 = 57.6%.<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/ivanbaldin.blog\/pictures\/conversion_simple.png\" width=\"649\" height=\"363\" alt=\"\" \/>\n<\/div>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/ivanbaldin.blog\/pictures\/conversion_simple_chart.png\" width=\"602\" height=\"528\" alt=\"\" \/>\n<\/div>\n<p>Clearly, some offices outperform others: conversion rates range from 57.6% down to 17.6%. It is also apparent that the number of leads varies widely across offices: from 33 leads in “Midtown” to 706 leads in “Astoria.”<\/p>\n<p class=\"loud\">Most people would stop here, but there is a straightforward way to use the concept of a “confidence interval” or “standard deviation (SD)” to <b>reveal something that isn’t immediately obvious.<\/b><\/p>\n<h2>Estimating sample size and SD<\/h2>\n<p>Because the number of leads differs dramatically across offices (“Midtown” and “Astoria” differ by a factor of nearly 22), our confidence in the calculated conversion rate will not be uniform. For “Astoria,” the 36.1% figure is based on a sample of 706 leads and can be considered quite reliable. For “Midtown,” the 57.6% result comes from a small sample of just 33 leads, so there is no guarantee that, given their own 706 leads over time, they would sustain the same conversion rate.<\/p>\n<p>Naturally, we need to estimate the confidence interval for each sales office based on the number of leads — that is, the sample size.<\/p>\n<p>Here is the familiar formula for the standard deviation (SD), or <i>&sigma;<\/i>:<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/ivanbaldin.blog\/pictures\/CodeCogsEqn.png\" width=\"201\" height=\"77\" alt=\"\" \/>\n<\/div>\n<p>where <i>p<\/i> is the conversion rate and <i>n<\/i> is the number of leads.<\/p>\n<p>We compute it in column E:<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/ivanbaldin.blog\/pictures\/conversion_SD.png\" width=\"642\" height=\"363\" alt=\"\" \/>\n<\/div>\n<p>The resulting standard deviation shows the margin of error in the conversion estimate. As expected, it is larger where the sample is smaller. The less data we have, the less reliable the calculated result, and the less confident we can be in our assessment of the corresponding office’s performance.<\/p>\n<h2>Computing the bounds of a 90% confidence interval<\/h2>\n<p>Let us extend our table with the lower and upper bounds of a 90% confidence interval. In other words, we estimate the range of conversion rates for each office such that there is a 90% probability the <i>true<\/i> conversion rate falls within that range.<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/ivanbaldin.blog\/pictures\/conversion_SD_max-min.png\" width=\"673\" height=\"370\" alt=\"\" \/>\n<\/div>\n<p>Knowing that the bounds of a 90% confidence interval lie at &plusmn;1.645 SD, we subtract and add 1.645 SD to obtain the lower and upper bounds, respectively. For “Astoria,” this tells us that the <i>true<\/i> conversion rate lies between 33.1% and 39.1%. (One time out of ten it may still fall outside our interval, but nine times out of ten our estimate holds.)<\/p>\n<h2>Enhancing the chart with “candlesticks”<\/h2>\n<p>In Excel 2013 we can use a <b>“stock chart,”<\/b> substituting the upper and lower confidence interval bounds for the <b><i>high<\/i><\/b> and <b><i>low prices,<\/i><\/b> and the conversion rate calculated earlier for the <b><i>close price:<\/i><\/b><\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/ivanbaldin.blog\/pictures\/conversion_simple_chart_type.png\" width=\"634\" height=\"600\" alt=\"\" \/>\n<\/div>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/ivanbaldin.blog\/pictures\/conversion_simple_chart_modified.png\" width=\"602\" height=\"528\" alt=\"\" \/>\n<\/div>\n<p>The enhanced chart does not change the conclusions we drew at the outset. However, it subtly reminds an observant manager that the reported conversion rates are <b>not final<\/b> — and are especially “not final” where the confidence bounds are wider.<\/p>\n<p>“Midtown” appears to have outperformed “SoHo”, but while “SoHo” strong result is reliable thanks to its narrow interval, the result for “Midtown” is highly approximate. Definitive conclusions can therefore only be drawn for some of the offices; for the rest, more data is needed, and until then their rankings should be considered preliminary — or, as noted above, not final.<\/p>\n",
            "summary": "Not all conversion rates are created equal. A 57% rate from 33 leads is not the same as 36% from 706. Ivan Baldin reflects on how to add confidence interval bounds to your sales conversion charts using standard deviation and Excel stock chart candlesticks.",
            "date_published": "2021-05-25T02:13:00+03:00",
            "date_modified": "2026-04-12T03:24:52+03:00",
            "tags": [
                "analytics",
                "conversion",
                "diagrams and charts",
                "Excel",
                "sales funnel",
                "statistics"
            ],
            "image": "https:\/\/ivanbaldin.blog\/pictures\/conversion_simple.png",
            "_date_published_rfc2822": "Tue, 25 May 2021 02:13:00 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "1",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [],
                "og_images": [
                    "https:\/\/ivanbaldin.blog\/pictures\/conversion_simple.png",
                    "https:\/\/ivanbaldin.blog\/pictures\/conversion_simple_chart.png",
                    "https:\/\/ivanbaldin.blog\/pictures\/CodeCogsEqn.png",
                    "https:\/\/ivanbaldin.blog\/pictures\/conversion_SD.png",
                    "https:\/\/ivanbaldin.blog\/pictures\/conversion_SD_max-min.png",
                    "https:\/\/ivanbaldin.blog\/pictures\/conversion_simple_chart_type.png",
                    "https:\/\/ivanbaldin.blog\/pictures\/conversion_simple_chart_modified.png"
                ]
            }
        },
        {
            "id": "2",
            "url": "https:\/\/ivanbaldin.blog\/all\/wilson-score-confidence-interval-for-binomial-distribution\/",
            "title": "Wilson Score Confidence Interval for Binomial Distribution",
            "content_html": "<p>You listen to 10 random call center calls. In 4 of them, the operator never asks the client where they heard about you from. So now you have a number: 40% of calls are missing the advertising source. That’s an issue. You bring it to your manager, maybe flag it in a report.<\/p>\n<p>But here’s the thing. Is it really 40%?<\/p>\n<h2>The trouble with small samples<\/h2>\n<p class=\"loud\">10 calls is not a lot. You picked them at random, and randomness is fickle. The <i>true<\/i> failure rate could be 20%. It could be 60%. You just don’t know — and the small sample is the reason.<\/p>\n<p>There is, of course, a standard way to express this uncertainty. You calculate the SD of the binomial distribution:<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/ivanbaldin.blog\/pictures\/CodeCogsEqn.png\" width=\"201\" height=\"77\" alt=\"\" \/>\n<\/div>\n<p>You get SD = 15.49%. Then you build a 90% confidence interval: 40%&plusmn;1.645 SD, which gives you a range from 14.52% to 65.48%.<\/p>\n<p>That’s a huge spread. But at least now you’re honest about it: with 90% probability, the true failure rate lies somewhere in that range.<\/p>\n<p class=\"loud\">The 40% figure is just your best guess, not a fact.<\/p>\n<p>So far, so good.<\/p>\n<p>Except there’s a catch.<\/p>\n<h2>When the standard method breaks down<\/h2>\n<p>The <i>&plusmn;1.645 SD<\/i> approach works well enough — until it doesn’t. When your sample is small or your proportion is extreme (very close to 0% or 100%), the formula starts to wobble. There’s a simple rule of thumb: if <i>np<\/i> &lt; 10, you’re in trouble. In our case, <i>np<\/i> = 4. We’re in trouble.<\/p>\n<p>Think of it this way. If “tails” came up fewer than 10 times, either you haven’t flipped the coin enough, or you’re dealing with a biased coin that rarely lands on tails. Either way, the standard formula isn’t built for this.<\/p>\n<blockquote>\n<p><i>Many statisticians consider the <b>Wilson method<\/b> to be the most reliable approach for estimating confidence intervals for proportions &lt;...&gt;. This method not only handles very small and very large proportions, but also works well with small sample sizes.<\/i><\/p>\n<\/blockquote>\n<p>The method was proposed in 1927. It has been around for nearly a century. And yet most analysts still reach for <i>&plusmn;1.645 SD<\/i> by default.<\/p>\n<h2>The Wilson method<\/h2>\n<p>The lower and upper bounds of the confidence interval <i>p = 1–&alpha;\/2<\/i> are computed using the following formulas:<\/p>\n<div class=\"e2-text-picture\">\n<div class=\"fotorama\" data-width=\"392\" data-ratio=\"2.6666666666667\">\n<img src=\"https:\/\/ivanbaldin.blog\/pictures\/wilson01.png\" width=\"392\" height=\"147\" alt=\"\" \/>\n<img src=\"https:\/\/ivanbaldin.blog\/pictures\/wilson02.png\" width=\"393\" height=\"132\" alt=\"\" \/>\n<\/div>\n<div class=\"e2-text-caption\">Formulas for the lower and upper bounds, respectively.<\/div>\n<\/div>\n<p>where <i><b>p<\/b><\/i> is the observed proportion, <i><b>N<\/b><\/i> is the number of trials, and <i><b>z<\/b><\/i> is the <i>z-<\/i>score (e. g., 1.960 for a 95% confidence interval, or 1.645 for 90%).<\/p>\n<h2>Back to the call center<\/h2>\n<p>Let’s revisit our 10 calls. The standard method gave us a confidence interval from 14.52% to 65.48%. Now let’s apply Wilson.<\/p>\n<p>The bounds tighten: with 90% probability, the true failure rate lies between 19.42% and 64.84%. The effective SD drops to 13.80%.<\/p>\n<p>The difference may look subtle, but notice what happened at the lower end: it shifted from 14.52% to 19.42%. That’s not a rounding error. In a real business decision — say, whether to retrain your call center team — that shift matters.<\/p>\n<p>And this is the point. When your data is scarce, every percentage point of precision counts. The Wilson score interval doesn’t give you more data. It just makes better use of the data you already have.<\/p>\n<p><a href=\"https:\/\/docs.google.com\/spreadsheets\/d\/1QSvQF7SHUF8QIM8dzxWFT0itI5rP2VOn-tWJ4tHX5qI\/edit?usp=sharing\"><b>Calculator<\/b><\/a> in Google Sheets (menu “File” → “Make a copy”).<\/p>\n<h2>See also:<\/h2>\n<p><a href=\"http:\/\/vassarstats.net\/prop1.html\">Online calculator<\/a> for a 95% confidence interval<br \/>\n<a href=\"https:\/\/www.wolframalpha.com\/input\/?i=binomial+distribution+confidence+interval&assumption=%22FSelect%22+-%3E+%7B%7B%22WilsonScoreInterval%22%7D%7D&assumption=%7B%22F%22%2C+%22WilsonScoreInterval%22%2C+%22k%22%7D+-%3E%224%22&assumption=%7B%22F%22%2C+%22WilsonScoreInterval%22%2C+%22c%22%7D+-%3E%220.90%22&assumption=%7B%22F%22%2C+%22WilsonScoreInterval%22%2C+%22n%22%7D+-%3E%2210%22\">Calculator<\/a> on WolframAlpha.com<br \/>\n<a href=\"https:\/\/discovery.ucl.ac.uk\/id\/eprint\/1414353\/1\/10.1080-09296174.2013.799918.pdf\">Binomial confidence intervals and contingency tests<\/a> (pp. 4–5)<br \/>\n<a href=\"https:\/\/influentialpoints.com\/Training\/confidence_intervals_of_proportions.htm#wils\">https:\/\/influentialpoints.com\/Training\/confidence_intervals_of_proportions.htm#wils<\/a><br \/>\n<a href=\"https:\/\/en.wikipedia.org\/wiki\/Binomial_proportion_confidence_interval#Wilson_score_interval\">Wilson score interval<\/a> on Wikipedia<\/p>\n",
            "summary": "The standard ±1.645 SD approach to binomial distribution confidence intervals breaks down with small samples or extreme proportions. The Wilson score interval, proposed in 1927, handles both cases gracefully. This post walks through a practical call center QA example with formulas and a ready-made calculator.",
            "date_published": "2020-04-01T17:54:00+03:00",
            "date_modified": "2026-04-12T22:51:34+03:00",
            "tags": [
                "analytics",
                "binomial",
                "statistics"
            ],
            "image": "https:\/\/ivanbaldin.blog\/pictures\/CodeCogsEqn.png",
            "_date_published_rfc2822": "Wed, 01 Apr 2020 17:54:00 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "2",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "jquery\/jquery.js",
                    "fotorama\/fotorama.css",
                    "fotorama\/fotorama.js"
                ],
                "og_images": [
                    "https:\/\/ivanbaldin.blog\/pictures\/CodeCogsEqn.png",
                    "https:\/\/ivanbaldin.blog\/pictures\/wilson01.png",
                    "https:\/\/ivanbaldin.blog\/pictures\/wilson02.png"
                ]
            }
        },
        {
            "id": "3",
            "url": "https:\/\/ivanbaldin.blog\/all\/a-smarter-way-to-calculate-ratings\/",
            "title": "A Smarter Way to Calculate Ratings",
            "content_html": "<p>Here’s a puzzle. Two employees get rated by their clients on a 1-to-5 scale. Their average scores are identical:<\/p>\n<p>Johnson — 5, 5, 5, 5, 5, 2, 2, 2, 2, 2. <b>Average = 3.50.<\/b><br \/>\nMiller — 4, 4, 3, 3. <b>Average = 3.50.<\/b><\/p>\n<p>A tie. Except — it doesn’t feel like a tie, does it? Johnson has ten ratings, all over the map. Miller has four, tightly clustered. Shouldn’t that matter?<\/p>\n<p>It does. And a fascinating <a href=\"https:\/\/www.evanmiller.org\/ranking-items-with-star-ratings.html\">article on EvanMiller.org, “Ranking Items With Star Ratings,”<\/a> shows exactly how. (Judging by the author’s tone, the whole business of ranking things by ratings is <a href=\"https:\/\/www.evanmiller.org\/how-not-to-sort-by-average-rating.html\">far thornier than it looks<\/a>, and he keeps coming back to it.)<\/p>\n<p class=\"loud\">The core problem is simple: a plain average ignores how many votes went into it. A 4.8 rating from 300 reviews is not the same as a 4.8 from 6 reviews. The first one you can trust. The second one — who knows.<\/p>\n<p>The solution comes from <a href=\"https:\/\/en.wikipedia.org\/wiki\/Bayesian_statistics\">Bayesian statistics<\/a> (whatever that might mean in this context exactly), et voilà:<\/p>\n<p>Johnson — <b>2.72<\/b><br \/>\nMiller — <b>2.63<\/b><\/p>\n<p>Somehow, either the tighter spread of Miller’s scores (SD of 0.58 vs. 1.58), or the smaller number of ratings (4 vs. 10), or both together <b>refined<\/b> the average, giving Miller the edge by a few hundredths. The tie is broken.<\/p>\n<h2>The formula behind the advanced rating<\/h2>\n<p>Brace yourself. It’s gonna sting a little.<\/p>\n<p>We <a href=\"https:\/\/www.evanmiller.org\/ranking-items-with-star-ratings.html#setup\">assume<\/a> there are <i><b>K<\/b><\/i> possible ratings, indexed by <i><b>k,<\/b><\/i> where each rating is worth <i><b>s<sub>k<\/sub><\/b><\/i> points (“1” = 1 point, “2” = 2 points, and so on). Given <i><b>N<\/b><\/i> total ratings for each item, with <i><b>n<sub>k<\/sub><\/b><\/i> ratings for each <i><b>k,<\/b><\/i> we can compute the item’s score using the following formula:<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/ivanbaldin.blog\/pictures\/ratings00.png\" width=\"835\" height=\"229\" alt=\"\" \/>\n<\/div>\n<p>Where <i><b>z<sub>α\/2<\/sub><\/b><\/i> is the <i><b>1−α\/2<\/b><\/i> quantile of the normal distribution. The resulting score is the lower bound of a normal approximation to the Bayesian confidence interval for the average rating. Setting, say, α=0.10 (z=1.65), the score <i><b>S<\/b><\/i> means that in 95% of cases, the item’s true average rating will be above <i><b>S<\/b><\/i>.<\/p>\n<p class=\"loud\">In plain English: the “advanced” calculation gives you a conservative estimate of what the average rating would converge to if you had more data. And — as we saw with Johnson and Miller — it lets you rank items even when their plain averages are identical.<\/p>\n<h2>The advanced rating in action<\/h2>\n<p>I took 2,000 ratings on a 1-to-5 scale across a set of regional sales offices and computed both the plain average and the “advanced” score for each one.<\/p>\n<div class=\"e2-text-picture\">\n<div class=\"fotorama\" data-width=\"695\" data-ratio=\"1.08934169279\">\n<img src=\"https:\/\/ivanbaldin.blog\/pictures\/ratings01.png\" width=\"695\" height=\"638\" alt=\"\" \/>\n<img src=\"https:\/\/ivanbaldin.blog\/pictures\/ratings02.png\" width=\"695\" height=\"638\" alt=\"\" \/>\n<\/div>\n<div class=\"e2-text-caption\">Average 1.0 — plain average rating; Average 2.0 — advanced average rating.<\/div>\n<\/div>\n<p>Flushing dropped from 2nd to 4th place. The likely reason: its 66 ratings don’t inspire enough confidence that the average is truly that high. In 90% of scenarios, its predicted rating is no better than 4.55 — roughly 4th place territory.<\/p>\n<p>Tribeca, on the other hand, was formally 13th. But thanks to a solid base of 249 ratings, the model predicts — with 90% confidence — an average of at least 4.4, which bumps it up to 10th.<\/p>\n<p>My impression is that the formula works most convincingly for short rating scales, like the 1-to-5 used here.<\/p>\n<p>In any case, here is a <a href=\"https:\/\/docs.google.com\/spreadsheets\/d\/1fGsO3GJBwV465hwfH6V_wX5herkjVGUrgwzZWUq8T2A\/edit?usp=sharing\">Google Sheets workbook<\/a> — it should handle rating scales up to 100, import up to 10,000 rows of individual ratings, and lets you adjust the confidence level (90% in our example).<\/p>\n<h2>See also<\/h2>\n<p><a href=\"https:\/\/www.evanmiller.org\/ranking-items-with-star-ratings.html\">https:\/\/www.evanmiller.org\/ranking-items-with-star-ratings.html<\/a><\/p>\n<p><a href=\"https:\/\/docs.google.com\/spreadsheets\/d\/1fGsO3GJBwV465hwfH6V_wX5herkjVGUrgwzZWUq8T2A\/edit?usp=sharing\">Advanced rating calculator<\/a> in Google Sheets<\/p>\n",
            "summary": "Two employees, same average rating — but should we trust 10 scattered scores the same as 4 consistent ones? Inspired by Evan Miller's work on ranking items with star ratings, this post walks through a Bayesian approach that accounts for both spread and sample size.",
            "date_published": "2019-09-21T15:59:00+03:00",
            "date_modified": "2026-04-12T03:29:09+03:00",
            "tags": [
                "Bayes",
                "equations",
                "Google Sheets",
                "ratings",
                "statistics"
            ],
            "image": "https:\/\/ivanbaldin.blog\/pictures\/ratings00.png",
            "_date_published_rfc2822": "Sat, 21 Sep 2019 15:59:00 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "3",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "jquery\/jquery.js",
                    "fotorama\/fotorama.css",
                    "fotorama\/fotorama.js"
                ],
                "og_images": [
                    "https:\/\/ivanbaldin.blog\/pictures\/ratings00.png",
                    "https:\/\/ivanbaldin.blog\/pictures\/ratings01.png",
                    "https:\/\/ivanbaldin.blog\/pictures\/ratings02.png"
                ]
            }
        },
        {
            "id": "29",
            "url": "https:\/\/ivanbaldin.blog\/all\/4-for-4-against-confidence-interval\/",
            "title": "4 for, 4 against: the confidence interval hiding behind a 50\/50 split",
            "content_html": "<p>I was recently listening to Vesti FM (a Russian national talk-radio station), where the hosts were going over the results of <a href=\"https:\/\/en.wikipedia.org\/wiki\/2019_Russian_regional_elections\">Russia’s nationwide election day on September 8<\/a>.<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/ivanbaldin.blog\/pictures\/4smski05[1].JPG\" width=\"1230\" height=\"601\" alt=\"\" \/>\n<\/div>\n<p>One remark from the host caught my attention (<a href=\"https:\/\/youtu.be\/tOUSxbWdSuY?t=6305\">at 01:45:05<\/a>):<\/p>\n<blockquote>\n<p><i>By the way, listeners from Khabarovsk Krai are texting in, and going by the number of texts, they’re splitting about 50\/50. Half of them think they made a positive choice, half think things got worse and it was a negative choice. This isn’t a public opinion survey, obviously. I’m just seeing eight or ten texts come in, and they split roughly down the middle. Still, it’s interesting.<\/i><\/p>\n<\/blockquote>\n<p>Credit where it’s due: the disclaimer is exactly right, this is not a survey. But the question is still worth asking. What can you actually say about how opinion splits <i>in reality<\/i> when all you have in hand is 4 texts in favor and 4 against? How much does a 50\/50 result on a sample of 8 tell you about the same split <i>in the population?<\/i><\/p>\n<h2>Working it out in Google Sheets<\/h2>\n<p>Let’s reproduce the setup in a spreadsheet:<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/ivanbaldin.blog\/pictures\/4smski00.PNG\" width=\"603\" height=\"402\" alt=\"\" \/>\n<\/div>\n<p>That day, 4 listeners texted in favor and 4 texted against. But no two days are the same. Today it’s one set of listeners, tomorrow it’s another, and the score could just as easily come out 3 to 5, 5 to 3, 2 to 6, or 7 to 1 — any combination is possible in principle. If we assume the audience really is evenly divided, then 4-to-4, 3-to-5 and 5-to-3 are somewhat more likely, while 8-to-0 or 1-to-7 are much less likely.<\/p>\n<p>Technically, this is a <i>binomial<\/i> setup: out of 8 texts we <i>expect<\/i> 4 in favor, but we don’t know in advance how many we’ll actually get. If the probability that any given text is “for” is 50% (let’s assume exactly half the audience is in favor), then the <b><i>standard error (SE, often written &sigma;)<\/i><\/b> of the observed share is:<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/ivanbaldin.blog\/pictures\/CodeCogsEqn[1].png\" width=\"201\" height=\"77\" alt=\"\" \/>\n<\/div>\n<p>where <b><i>p<\/i><\/b> = 50% and <b><i>n<\/i><\/b> = 8.<\/p>\n<p>Let’s compute it:<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/ivanbaldin.blog\/pictures\/4smski01.PNG\" width=\"599\" height=\"396\" alt=\"\" \/>\n<\/div>\n<p>So if the probability of a “for” text is 50%, then on a sample of 8 texts the standard error comes out to <b>17.68%<\/b>.<\/p>\n<p>What does that mean in practice?<\/p>\n<p>It means that because the sample (8 texts) is tiny, the amount of randomness baked into the “4 for, 4 against” result is enormous, and we cannot confidently claim a strict 50\/50 split across the entire Vesti FM audience. The only thing we can state with any confidence is that the true share of “for” votes lies somewhere <i>within an interval<\/i> around 50%. And the wider we want that interval’s reliability to be, the wider the interval itself gets.<\/p>\n<p>Say we want to be 90% confident in our interval — in other words, we accept being wrong 1 time in 10. Since the normal distribution is a decent approximation of the binomial once <i>n<\/i> is large enough, the interval works out to <b>50% &plusmn; 1.645 SE.<\/b><\/p>\n<p>That’s an easy calculation in Google Sheets:<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/ivanbaldin.blog\/pictures\/4smski03.PNG\" width=\"611\" height=\"385\" alt=\"\" \/>\n<\/div>\n<p>The true share of “for” votes lies in the interval 50% &plusmn; 29.08%, <b>that is, anywhere from 20.92% to 79.08%.<\/b> Roughly like this:<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/ivanbaldin.blog\/pictures\/4smski02[1].PNG\" width=\"789\" height=\"368\" alt=\"\" \/>\n<\/div>\n<p>So we’re nowhere near being able to say that “listeners are splitting about 50\/50.” At best — and even then we’re allowing a 10% chance of being wrong — <b>all we can say is somewhere between 21% and 79%.<\/b><\/p>\n<h2>Sharpening the estimate<\/h2>\n<p>That said, the <b><i>p<\/i> &plusmn; 1.645<i>SE<\/i><\/b> interval is itself a crude approximation, and it’s at its worst exactly where we’re using it: small samples. There are more sophisticated and somewhat more accurate ways to set the bounds.<\/p>\n<p>Running the numbers through the <a href=\"https:\/\/www.wolframalpha.com\/input\/?i=binomial+distribution+confidence+interval\">Wolfram Alpha calculator<\/a> gives these bounds:<\/p>\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" class=\"e2-text-table\">\n<tr>\n<td style=\"text-align: left\">Clopper-Pearson confidence interval for a binomial parameter<\/td>\n<td style=\"text-align: right\">0.1929<\/td>\n<td style=\"text-align: right\">0.8071<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">Wilson score confidence interval for a binomial parameter with continuity correction<\/td>\n<td style=\"text-align: right\">0.2034<\/td>\n<td style=\"text-align: right\">0.7966<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">standard confidence interval for a binomial parameter<\/td>\n<td style=\"text-align: right\">0.2092<\/td>\n<td style=\"text-align: right\">0.7908<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">Jeffreys confidence interval for a binomial parameter<\/td>\n<td style=\"text-align: right\">0.2393<\/td>\n<td style=\"text-align: right\">0.7607<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">Wilson score confidence interval for a binomial parameter<\/td>\n<td style=\"text-align: right\">0.2486<\/td>\n<td style=\"text-align: right\">0.7514<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">Agresti-Coull confidence interval for a binomial parameter<\/td>\n<td style=\"text-align: right\">0.2486<\/td>\n<td style=\"text-align: right\">0.7514<\/td>\n<\/tr>\n<\/table>\n<p>Every one of them is still enormously wide. The method you pick barely matters when the sample is this small.<\/p>\n<h2>So how many texts would it take to get to 45–55%?<\/h2>\n<p>Here’s the flip side of the question: how large would the sample have to be — still splitting exactly 50\/50 — before we could narrow the interval to at least 45–55%?<\/p>\n<p>That’s easy enough to solve. For an interval of 50% &plusmn; 5% (and sticking with our 90% confidence level), those 5 percentage points have to equal 1.645 standard errors. So SE = 3.04%. Plugging that back into the standard error formula:<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/ivanbaldin.blog\/pictures\/4smski04[1].png\" width=\"270\" height=\"58\" alt=\"\" \/>\n<\/div>\n<p>gives <i>n<\/i> = 270.6. In other words, you’d need somewhere around 271 texts, split exactly down the middle, before you could talk about a 45%–55% range at 90% confidence.<\/p>\n<p>Eight texts, it turns out, is not a small sample. It’s barely a sample at all.<\/p>\n<h2>See also<\/h2>\n<p><a href=\"https:\/\/en.wikipedia.org\/wiki\/Binomial_proportion_confidence_interval\">https:\/\/en.wikipedia.org\/wiki\/Binomial_proportion_confidence_interval<\/a><br \/>\n<a href=\"https:\/\/www.wolframalpha.com\/input\/?i=binomial+distribution+confidence+interval&assumption=%22FSelect%22+-%3E+%7B%7B%22BinomialInterval%22%7D%7D&assumption=%7B%22F%22%2C+%22BinomialInterval%22%2C+%22phat%22%7D+-%3E%220.5%22&assumption=%7B%22F%22%2C+%22BinomialInterval%22%2C+%22c%22%7D+-%3E%220.9%22&assumption=%7B%22F%22%2C+%22BinomialInterval%22%2C+%22n%22%7D+-%3E%228%22\">Calculator at WolframAlpha.com<\/a><br \/>\n<a href=\"https:\/\/cyberleninka.ru\/article\/n\/doveritelnye-intervaly-dlya-chastot-i-doley.pdf\">https:\/\/cyberleninka.ru\/article\/n\/doveritelnye-intervaly-dlya-chastot-i-doley.pdf<\/a><br \/>\n<a href=\"http:\/\/italylov.ru\/blog\/all\/ctatisticheskaya-dostovernost-koltrekinga\/\">Statistical significance for real-estate developers<\/a><\/p>\n",
            "summary": "A radio host saw 4 listener texts for and 4 against, and called the audience evenly split. The math says otherwise: on a sample of 8, the true share is anywhere from 21% to 79%. Here's how to compute that – and why you'd need 271 texts.",
            "date_published": "2019-09-16T20:03:00+03:00",
            "date_modified": "2026-08-17T00:26:20+03:00",
            "tags": [
                "binomial",
                "Google Sheets",
                "statistics"
            ],
            "image": "https:\/\/ivanbaldin.blog\/pictures\/4smski05[1].JPG",
            "_date_published_rfc2822": "Mon, 16 Sep 2019 20:03:00 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "29",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [],
                "og_images": [
                    "https:\/\/ivanbaldin.blog\/pictures\/4smski05[1].JPG",
                    "https:\/\/ivanbaldin.blog\/pictures\/4smski00.PNG",
                    "https:\/\/ivanbaldin.blog\/pictures\/CodeCogsEqn[1].png",
                    "https:\/\/ivanbaldin.blog\/pictures\/4smski01.PNG",
                    "https:\/\/ivanbaldin.blog\/pictures\/4smski03.PNG",
                    "https:\/\/ivanbaldin.blog\/pictures\/4smski02[1].PNG",
                    "https:\/\/ivanbaldin.blog\/pictures\/4smski04[1].png"
                ]
            }
        },
        {
            "id": "5",
            "url": "https:\/\/ivanbaldin.blog\/all\/kupivip-voice-bot-guessing-the-sample-size\/",
            "title": "KupiVIP’s Voice Robot: Guessing the Sample Size",
            "content_html": "<p>In the article “<a href=\"https:\/\/vc.ru\/marketing\/54315-keys-zamenili-na-black-friday-koll-centr-kupivip-robotom-i-tolko-5-chelovek-iz-5000-ponyali-chto-obshchayutsya-s-neyrosetyu\">Case Study: On Black Friday, KupiVIP Replaced Their Call Center with a Robot, and Only 5 Out of 5,000 People Realized They Were Talking to a Neural Network<\/a>” on vc.ru, one phrase caught my attention above all else — the part where the author mentions a conversion rate increase from 6% to 8%:<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/ivanbaldin.blog\/pictures\/vc_quote.png\" width=\"1209\" height=\"593\" alt=\"&quot;the voice robot&#039;s promo code activation rate reached 8%, compared to 6% for real call center employees.&quot;\" \/>\n<\/div>\n<p>Naturally, I started wondering: on what call volume was this conversion rate increase observed, and was that volume sufficient to make a reliable claim that the voice robot outperforms live call center agents?<\/p>\n<p class=\"loud\">The question can be formulated precisely as follows: what is the minimum number of calls required to claim, with a confidence level of, say, 95%, that the conversion rate “increased from 6% to 8%”?<\/p>\n<h2>Building the Experiment in Google Spreadsheets<\/h2>\n<p>Let’s lay out the available data in Google Spreadsheets. For the calculations that follow, we’ll need a “number of calls” parameter — let’s assume for now that both the robot and live agents each made 1,000 calls before the 6% and 8% conversion rates were obtained:<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/ivanbaldin.blog\/pictures\/1000-1000.png\" width=\"439\" height=\"219\" alt=\"\" \/>\n<\/div>\n<p>Essentially, this is a standard A\/B split test, and we’ll need to walk through its algorithm to obtain the <i>Z-score<\/i> and calculate the <i>p-value<\/i>.<\/p>\n<p>Let’s calculate the standard errors (SD, or σ) for both conversion rates, along with the standard error of the difference between them. The formula for the standard error of a conversion rate:<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/ivanbaldin.blog\/pictures\/CodeCogsEqn.png\" width=\"201\" height=\"77\" alt=\"\" \/>\n<\/div>\n<p>where <i>p<\/i> is the conversion rate (6%, for example) and <i>n<\/i> is the sample size (1,000 calls). Here’s the Google Spreadsheets calculation:<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/ivanbaldin.blog\/pictures\/sqrt.png\" width=\"647\" height=\"231\" alt=\"\" \/>\n<\/div>\n<p>The standard error of the difference between conversion rates is calculated using the formula:<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/ivanbaldin.blog\/pictures\/CodeCogsEqn02.png\" width=\"230\" height=\"58\" alt=\"\" \/>\n<\/div>\n<p>where <i>σ<\/i> is the standard error of each conversion rate, A and B (live agent and robot). We’ll compute it just below in Google Spreadsheets:<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/ivanbaldin.blog\/pictures\/sd_difference.png\" width=\"622\" height=\"269\" alt=\"\" \/>\n<\/div>\n<p>How much larger is the difference between conversions A and B compared to the standard error of that difference? This ratio is called the <b><i>Z-score.<\/i><\/b> In Google Spreadsheets, it’s straightforward:<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/ivanbaldin.blog\/pictures\/z-score.png\" width=\"586\" height=\"298\" alt=\"\" \/>\n<\/div>\n<p>So the Z-score = 1.7541. On the normal distribution curve, this corresponds to the 96th percentile — meaning the probability of the Z-score randomly exceeding 1.7541 is about 4% (in other words, 96% of the area under the bell curve falls within +1.7541 standard deviations):<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/ivanbaldin.blog\/pictures\/kupivip_robot_05.png\" width=\"706\" height=\"304\" alt=\"\" \/>\n<\/div>\n<p>Where did we get 96%? The exact probability, the <i>p-value<\/i>, is calculated using the formula:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">=NORM.DIST(1.7541,0,1,TRUE)<\/code><\/pre><div class=\"e2-text-picture\">\n<img src=\"https:\/\/ivanbaldin.blog\/pictures\/p-value.png\" width=\"693\" height=\"113\" alt=\"\" \/>\n<\/div>\n<p>P-value = 96.03%.<\/p>\n<p>So here’s our interim conclusion: <b>if, on a sample of 1,000 calls in each of the two groups, we observed conversion rates (promo code activations) of 6% and 8%, then we are 96% confident that this difference is not due to chance.<\/b> (There remains a 4% probability that the observed difference is random. In that case, perhaps the conversion rate is actually the same — say, 7% — and had we made more calls, the difference would have eventually disappeared.)<\/p>\n<h2>Minimum Experiment Size<\/h2>\n<p>Now, let’s get back to the original question.<\/p>\n<p>We weren’t trying to prove that 8% is greater than 6%, and the figure of 1,000 calls for the robot and agents was chosen arbitrarily. What we wanted to calculate was <b>the minimum number of calls needed to establish the statistical significance of the difference between 8% and 6% at a 95% confidence level.<\/b><\/p>\n<p>1,000 calls turned out to be more than enough. Now we just need to decrease this number until the p-value crosses the 95% threshold. (By the way, according to the normal distribution formula, this corresponds to a Z-score of 1.6449 — try verifying this yourself.)<\/p>\n<p>In theory, it would probably be possible to derive a large formula for the <i>n<\/i> at which the p-value equals 0.95. In practice, it’s faster to manually find the minimum n through trial and error. Or, better yet, install a <b>Goal Seek<\/b> add-on for Google Spreadsheets and use it to find the answer automatically:<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/ivanbaldin.blog\/pictures\/goal_seek_01.png\" width=\"954\" height=\"493\" alt=\"\" \/>\n<div class=\"e2-text-caption\">(Just make sure the number of robot calls is exactly the same as the number of live agent calls, i.e., you’ve entered =C6 in cell C7.)<\/div>\n<\/div>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/ivanbaldin.blog\/pictures\/goal_seek_02.png\" width=\"939\" height=\"682\" alt=\"\" \/>\n<\/div>\n<h2>Conclusions<\/h2>\n<p>So, we’ve calculated the minimum experiment conditions for evaluating the effectiveness of the KupiVIP voice robot.<\/p>\n<p class=\"loud\">You need at least <b>879 calls<\/b> in each of the two groups to confirm, with a 95% confidence level, that there is a difference between the 6% promo code activation rate in the control group (real live agents) and the 8% rate in the test group (voice robot).<\/p>\n<p>(The only caveat is that neither 6% nor 8% yields a whole number of activations on a sample of 879 calls, and in reality, of course, the numbers would be different — and the number of calls in the two groups could vary as well. But this doesn’t really matter much, since the conversion rates cited in the article were most likely rounded.)<\/p>\n<h2>See also:<\/h2>\n<p><a href=\"https:\/\/abtestguide.com\/calc\/?ua=1000&ub=1000&ca=60&cb=80\">https:\/\/abtestguide.com\/calc\/?ua=1000&ub=1000&ca=60&cb=80<\/a><\/p>\n",
            "summary": "A voice robot beats call center with 8% vs. 6% promo code activations. But how many calls do you actually need to prove the difference is real? We walk through the A\/B test math and find the minimum sample size for 95% confidence using Goal Seek in Google Spreadsheets, Z-score and SD.",
            "date_published": "2019-07-20T13:18:00+03:00",
            "date_modified": "2026-04-12T03:31:13+03:00",
            "tags": [
                "A\/B test",
                "call center",
                "conversion",
                "Google Sheets",
                "statistics"
            ],
            "image": "https:\/\/ivanbaldin.blog\/pictures\/vc_quote.png",
            "_date_published_rfc2822": "Sat, 20 Jul 2019 13:18:00 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "5",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "highlight\/highlight.js",
                    "highlight\/highlight.css"
                ],
                "og_images": [
                    "https:\/\/ivanbaldin.blog\/pictures\/vc_quote.png",
                    "https:\/\/ivanbaldin.blog\/pictures\/1000-1000.png",
                    "https:\/\/ivanbaldin.blog\/pictures\/CodeCogsEqn.png",
                    "https:\/\/ivanbaldin.blog\/pictures\/sqrt.png",
                    "https:\/\/ivanbaldin.blog\/pictures\/CodeCogsEqn02.png",
                    "https:\/\/ivanbaldin.blog\/pictures\/sd_difference.png",
                    "https:\/\/ivanbaldin.blog\/pictures\/z-score.png",
                    "https:\/\/ivanbaldin.blog\/pictures\/kupivip_robot_05.png",
                    "https:\/\/ivanbaldin.blog\/pictures\/p-value.png",
                    "https:\/\/ivanbaldin.blog\/pictures\/goal_seek_01.png",
                    "https:\/\/ivanbaldin.blog\/pictures\/goal_seek_02.png"
                ]
            }
        },
        {
            "id": "8",
            "url": "https:\/\/ivanbaldin.blog\/all\/one-in-five-testing-a-connection-complaint\/",
            "title": "One in Five? Testing a Connection Complaint",
            "content_html": "<p>A contractor swears the phones <b>drop out on every fifth call.<\/b> You make one — it’s fine. Another — also fine. How many do you need before you can confidently tell him he’s wrong?<\/p>\n<p>Our job is to check <b>whether the claim that 20% of calls have connection problems holds up.<\/b> And as always, we’re not going to just make 100 test calls — we don’t have the resources for that. Instead, we’ll state a null hypothesis, an alternative hypothesis, and test it at a chosen confidence level.<\/p>\n<h2>Stating the hypothesis and choosing a confidence level<\/h2>\n<p><b>The null hypothesis <i>(H<sub>0<\/sub>)<\/i><\/b> is the contractor’s claim: at least 20% of calls have connection problems. This is the claim we’re putting on trial.<\/p>\n<p><b>The alternative hypothesis <i>(H<sub>1<\/sub>)<\/i><\/b> is that the connection is fine — problems happen in fewer than 20% of calls. This is the position we’ll lean toward if the data supports it.<\/p>\n<p>(That framing matters. In hypothesis testing, you never “prove” H<sub>0<\/sub>; you either reject it or you fail to reject it. So when we say we want to side with the contractor or not, what we really mean is: can we gather enough evidence to <i>reject<\/i> his claim?)<\/p>\n<p><b>The confidence level<\/b> is how sure we want to be about the outcome. The higher it is, the more test calls we’ll need to make, so we’ll budget 1% for error and go with <b>99% confidence<\/b> — leaving a 1% chance that we reject the contractor’s claim when problems really are there.<\/p>\n<h2>Building the formula for the sample size<\/h2>\n<p>To reject <i>H<sub>0<\/sub><\/i>, all we need is to pull off <i>N<\/i> successful calls in a row with no signs of trouble — while keeping the probability at or below 1% that we simply got lucky and that real equipment problems just happened not to show up in any of the <i>N<\/i> calls.<\/p>\n<p>If the contractor is right, 80% of calls go through cleanly. The probability of no issues across <i>N<\/i> calls in a row is 0.80<sup>N<\/sup>. We need the smallest <i>N<\/i> for which that probability drops to 1%:<br \/>\n0.80<sup>N<\/sup> = 0.01<\/p>\n<p>Which is exactly the logarithm of 1% to base 80%.<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/ivanbaldin.blog\/pictures\/every5th01.png\" width=\"223\" height=\"36\" alt=\"\" \/>\n<\/div>\n<p>Into Google Sheets it goes:<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/ivanbaldin.blog\/pictures\/every5th02.png\" width=\"513\" height=\"275\" alt=\"\" \/>\n<\/div>\n<p>The formula for cell C5 looks like<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">=LOG(1-C2,1-C3)<\/code><\/pre><p>We need 20.64 calls. (Check: 0.80<sup>20.64<\/sup> = 0.9995%, right on target.)<br \/>\nAll that’s left is rounding up:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">=ROUNDUP(C5)<\/code><\/pre><p>or, in one shot,<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">=ROUNDUP(LOG(1-C2,1-C3))<\/code><\/pre><div class=\"e2-text-picture\">\n<img src=\"https:\/\/ivanbaldin.blog\/pictures\/every5th03.png\" width=\"481\" height=\"299\" alt=\"\" \/>\n<\/div>\n<h2>Testing the hypothesis<\/h2>\n<p>If the contractor’s claim <i>H<sub>0<\/sub><\/i> is correct and every fifth call really does have trouble, then the probability of seeing zero problems across 21 test calls in a row is about 1%. In other words: either we just hit a one-in-a-hundred coincidence, or the claim that 20% of calls have problems doesn’t hold. At the 99% confidence level, we reject <i>H<sub>0<\/sub><\/i> — in everyday terms, the connection is fine.<\/p>\n",
            "summary": "A contractor claims every fifth call has a bad connection. How many good calls in a row do you need to disprove him? This post uses a binomial hypothesis test to calculate the exact sample size for 99% confidence — with the Google Sheets formula included.",
            "date_published": "2019-06-09T16:45:58+03:00",
            "date_modified": "2026-04-24T21:06:41+03:00",
            "tags": [
                "binomial",
                "call center",
                "Google Sheets",
                "statistics"
            ],
            "image": "https:\/\/ivanbaldin.blog\/pictures\/every5th01.png",
            "_date_published_rfc2822": "Sun, 09 Jun 2019 16:45:58 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "8",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "highlight\/highlight.js",
                    "highlight\/highlight.css"
                ],
                "og_images": [
                    "https:\/\/ivanbaldin.blog\/pictures\/every5th01.png",
                    "https:\/\/ivanbaldin.blog\/pictures\/every5th02.png",
                    "https:\/\/ivanbaldin.blog\/pictures\/every5th03.png"
                ]
            }
        },
        {
            "id": "30",
            "url": "https:\/\/ivanbaldin.blog\/all\/how-long-can-a-sales-phone-stay-silent\/",
            "title": "How Long Can a Sales Phone Stay Silent?",
            "content_html": "<p>Here’s another case. The middle of a busy day in the sales department, and the phone has been silent for half an hour.<\/p>\n<p>There are two possibilities: either something is broken, or this is just a lull that happened to run long, and the next customer call is about to come in.<\/p>\n<p>Let’s work out how many minutes you can sit in silence before you should start to worry.<\/p>\n<h2>The least obvious parameter of a phone call<\/h2>\n<p>What parameters does a phone call in a sales department or a call center actually have? <i>Date and time, speed of answer, duration, day of the week, line number, customer number<\/i> – those are the obvious characteristics you can analyze incoming calls by.<\/p>\n<p>One more hides in the shadows: <b>the length of the pause<\/b> (the stretch of time with no calls) <b>that came right before the call.<\/b> Say a call came in at 2:07 p.m. on February 13 and lasted 3 minutes 52 seconds. That’s what you see in an export, in the PBX logs, or in the CRM. What is no less interesting: if the previous call was logged at 2:01 p.m., then that six-minute gap is exactly the non-obvious parameter that could be analyzed too.<\/p>\n<p>Let’s take calls to a call center on weekdays between 10 a.m. and 7 p.m. We compute the difference in minutes between two adjacent calls – “0” if less than a minute passed, “1” for one to two minutes (from 01:00 to 01:59), and so on. Analyze thousands of calls, and you get roughly this table:<\/p>\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" class=\"e2-text-table\">\n<tr>\n<td><b>Pause before the call, minutes<\/b><\/td>\n<td style=\"text-align: right\"><b>Number of calls<\/b><\/td>\n<td style=\"text-align: right\"><b>Share of calls<\/b><\/td>\n<td style=\"text-align: right\"><b>Cumulative share<\/b><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: right\">0<\/td>\n<td style=\"text-align: right\">19,641<\/td>\n<td style=\"text-align: right\">21.3%<\/td>\n<td style=\"text-align: right\">21.3%<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: right\">1<\/td>\n<td style=\"text-align: right\">16,299<\/td>\n<td style=\"text-align: right\">17.7%<\/td>\n<td style=\"text-align: right\">39.0%<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: right\">2<\/td>\n<td style=\"text-align: right\">12,137<\/td>\n<td style=\"text-align: right\">13.2%<\/td>\n<td style=\"text-align: right\">52.2%<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: right\">3<\/td>\n<td style=\"text-align: right\">9,251<\/td>\n<td style=\"text-align: right\">10.0%<\/td>\n<td style=\"text-align: right\">62.2%<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: right\">4<\/td>\n<td style=\"text-align: right\">7,276<\/td>\n<td style=\"text-align: right\">7.9%<\/td>\n<td style=\"text-align: right\">70.1%<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: right\">...<\/td>\n<td style=\"text-align: right\">...<\/td>\n<td style=\"text-align: right\">...<\/td>\n<td style=\"text-align: right\">...<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: right\">23<\/td>\n<td style=\"text-align: right\">139<\/td>\n<td style=\"text-align: right\">0.2%<\/td>\n<td style=\"text-align: right\">99.4%<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: right\">...<\/td>\n<td style=\"text-align: right\">...<\/td>\n<td style=\"text-align: right\">...<\/td>\n<td style=\"text-align: right\">...<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: right\">40<\/td>\n<td style=\"text-align: right\">10<\/td>\n<td style=\"text-align: right\">0.0%<\/td>\n<td style=\"text-align: right\">100.0%<\/td>\n<\/tr>\n<\/table>\n<p>(Strictly speaking, pauses longer than 40 minutes occur as well, but their share is vanishingly small – which is why, rounding to the nearest tenth, we already reach 100% at 40 minutes.)<\/p>\n<h2>The simple idea of “anomalous” pauses<\/h2>\n<p>So we now have a remarkably clean histogram of how pause lengths are distributed. What stands out is that they decay exponentially:<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/ivanbaldin.blog\/pictures\/poisson01.png\" width=\"976\" height=\"606\" alt=\"\" \/>\n<\/div>\n<p>Let’s come back to what we set out to calculate in the first place.<\/p>\n<p>The idea we started with: sooner or later, <b>a gap between calls in the middle of the workday grows so long that it starts to worry the managers.<\/b> It stands to reason that the length that triggers the worry is different in every sales department and every call center – for a large call center, a five-minute gap is already very unlikely; for another, five minutes is the standard interval between calls, but 55 minutes is genuinely suspicious.<\/p>\n<p>What if we frame the idea of an “anomalously” long pause this way: it is a pause that occurs extremely rarely – say, once a week, or once a month, or once every six months. We pick the level of “anomaly” that seems reasonable to us, and then work out <b>which pause lengths occur about as rarely as our definition says.<\/b><\/p>\n<p>For example, let an anomalous pause be one that, <b>on average, happens once a week.<\/b><\/p>\n<p>If the calls in our table cover the past year, then the number of “anomalous” (“once a week”) pauses in it should be on the order of 52 – one for each week.<\/p>\n<p>So we need to count off <b>the 52 calls with the longest pauses before them.<\/b> In my table there turned out to be 47 calls with pauses of 38 minutes or more, and after that 57 calls with pauses of 37 minutes or more.<\/p>\n<p>Which leads to the conclusion that <b>a 37- to 38-minute gap between calls on a weekday should put you on alert: either you are looking at the weekly “anomaly,” the one that shows up about 52 times a year, or a technical failure has occurred and the calls have stopped coming in.<\/b><\/p>\n",
            "summary": "The phone in the sales department has been quiet for half an hour. Broken line, or just a long lull? Every call carries a hidden parameter – the pause before it. Count the 52 longest pauses in a year and you get a threshold: 37 minutes.",
            "date_published": "2019-06-09T12:10:35+03:00",
            "date_modified": "2026-08-17T02:05:27+03:00",
            "tags": [
                "call center",
                "statistics"
            ],
            "image": "https:\/\/ivanbaldin.blog\/pictures\/poisson01.png",
            "_date_published_rfc2822": "Sun, 09 Jun 2019 12:10:35 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "30",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [],
                "og_images": [
                    "https:\/\/ivanbaldin.blog\/pictures\/poisson01.png"
                ]
            }
        },
        {
            "id": "7",
            "url": "https:\/\/ivanbaldin.blog\/all\/call-quality-audits-determining-your-sample-size\/",
            "title": "Call Quality Audits: Determining Your Sample Size",
            "content_html": "<h2>Calculating Sample Size for Quality Call Audits<\/h2>\n<p>A common tool for assessing the quality of sales managers’ work is <b>quality auditing of phone calls<\/b>, or “call monitoring.”<\/p>\n<p>Suppose your goal is not simply to <b>measure<\/b> the quality of phone calls, but to <b>document <i>growth<\/i> in that quality.<\/b> For example, you conducted training for your managers, introduced new incentives for meeting quality standards, or implemented some other intervention.<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/ivanbaldin.blog\/pictures\/create-a-1080-1080-pixels-flat-style-cartoon-showi-(1).png\" width=\"1080\" height=\"1080\" alt=\"\" \/>\n<\/div>\n<p>It’s reasonable to assume that an improvement in quality in the first random call recorded after the training won’t definitively prove that quality has improved across all calls. Likely, a second successful call won’t conclusively confirm the hypothesis either.<\/p>\n<p>Thus, you’ll need to listen to — if not all calls — at least a <b>sufficient number<\/b> of calls after your changes, and the number of calls you’ll need to audit can, in fact, <b>be calculated precisely.<\/b><\/p>\n<h2>Calculating Sample Size<\/h2>\n<p>On page 35 of the paper “<a href=\"https:\/\/bpb-us-e1.wpmucdn.com\/sites.ucsc.edu\/dist\/2\/1389\/files\/2026\/03\/part1.pdf\">Introduction to Statistical Inference and Experimental Design<\/a>” I found a suitable example 1.9 and a formula for calculating such samples:<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/ivanbaldin.blog\/pictures\/samplesize00.png\" width=\"858\" height=\"506\" alt=\"\" \/>\n<\/div>\n<p>In this example, an improvement in <a href=\"https:\/\/en.wikipedia.org\/wiki\/ACT\">ACT<\/a> math test scores from 24.5 (variance 8.2) to 26.0 points is considered, with α = 0.05 and power = 0.90.<\/p>\n<p>For convenience, I assembled the formula in a Google Sheet:<\/p>\n<p><a href=\"https:\/\/docs.google.com\/spreadsheets\/d\/1nbpXgnRy9FQUAVQIwfHRHdj6Rvrkjom1UYsj4OHJnrc\/edit?usp=sharing\">Sample Size Calculator<\/a><\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/ivanbaldin.blog\/pictures\/samplesize03.png\" width=\"1283\" height=\"532\" alt=\"\" \/>\n<div class=\"e2-text-caption\">You simply need to copy the file and substitute your own values.<br \/>\nIt’s reasonable to choose a confidence level between 80% and 95%, and a statistical power between 60% and 80%. Enter the average call quality score before changes, the standard deviation (SD) of call scores “before,” and the expected average call quality score “after” your changes.<\/div>\n<\/div>\n<h2>See also:<\/h2>\n<p><a href=\"https:\/\/bpb-us-e1.wpmucdn.com\/sites.ucsc.edu\/dist\/2\/1389\/files\/2026\/03\/part1.pdf\">https:\/\/bpb-us-e1.wpmucdn.com\/sites.ucsc.edu\/dist\/2\/1389\/files\/2026\/03\/part1.pdf<\/a><\/p>\n",
            "summary": "Stop guessing how many calls to audit. Use this statistical formula to calculate the exact sample size needed for call audits that prove quality improvements. Learn about confidence levels, power calculations, and A\/B testing verification for your sales team.",
            "date_published": "2019-05-26T16:46:00+03:00",
            "date_modified": "2026-04-18T14:21:49+03:00",
            "tags": [
                "A\/B test",
                "call center",
                "equations",
                "Google Sheets",
                "Sales Department"
            ],
            "image": "https:\/\/ivanbaldin.blog\/pictures\/create-a-1080-1080-pixels-flat-style-cartoon-showi-(1).png",
            "_date_published_rfc2822": "Sun, 26 May 2019 16:46:00 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "7",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [],
                "og_images": [
                    "https:\/\/ivanbaldin.blog\/pictures\/create-a-1080-1080-pixels-flat-style-cartoon-showi-(1).png",
                    "https:\/\/ivanbaldin.blog\/pictures\/samplesize00.png",
                    "https:\/\/ivanbaldin.blog\/pictures\/samplesize03.png"
                ]
            }
        },
        {
            "id": "6",
            "url": "https:\/\/ivanbaldin.blog\/all\/the-cognitive-fallacy-of-conversion-rates\/",
            "title": "The Cognitive Fallacy of Conversion Rates",
            "content_html": "<p>A curious thing about working with the concept of <i>conversion rate<\/i> is that, strictly speaking, <b>a conversion rate is almost never precisely defined.<\/b><\/p>\n<p class=\"loud\">All those “call-to-sale conversion of 18.4%,” “CTR of 3.1%,” “deal conversion of 30%” — it’s always a somewhat simplified approach, as if the conversion rate were reliably measured and, should it change, we’d explain it with objective factors, never entertaining the thought that there never was any “18.4%” to begin with — there were just 38 contracts we closed on 206 calls, and that doesn’t at all mean there couldn’t have been more or fewer.<\/p>\n<p>Much like the position of an electron around the nucleus of an atom isn’t defined by exact coordinates, but is merely described by a region where it’s most likely to be found, our conversion rate is not a specific number either. In reality, it is <b>an interval within which it lies.<\/b><\/p>\n<h2>Calculating Conversion Rates and Cognitive Bias<\/h2>\n<p>Consider a fictional sales department that started selling a new product this year. Let’s say, hmm, <b>trucks.<\/b> The product isn’t in high demand, so, for now, there isn’t much data for analysis — or, better said, very little at all:<\/p>\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" class=\"e2-text-table\">\n<tr>\n<td><b>Month<\/b><\/td>\n<td style=\"text-align: right\"><b>Leads<\/b><\/td>\n<td style=\"text-align: right\"><b>Sales<\/b><\/td>\n<\/tr>\n<tr>\n<td>August<\/td>\n<td style=\"text-align: right\">48<\/td>\n<td style=\"text-align: right\">1<\/td>\n<\/tr>\n<tr>\n<td>September<\/td>\n<td style=\"text-align: right\">35<\/td>\n<td style=\"text-align: right\">1<\/td>\n<\/tr>\n<tr>\n<td>October<\/td>\n<td style=\"text-align: right\">24<\/td>\n<td style=\"text-align: right\">0<\/td>\n<\/tr>\n<tr>\n<td>November<\/td>\n<td style=\"text-align: right\">61<\/td>\n<td style=\"text-align: right\">2<\/td>\n<\/tr>\n<tr>\n<td>December<\/td>\n<td style=\"text-align: right\">32<\/td>\n<td style=\"text-align: right\">0<\/td>\n<\/tr>\n<tr>\n<td><b>TOTAL:<\/b><\/td>\n<td style=\"text-align: right\"><b>200<\/b><\/td>\n<td style=\"text-align: right\"><b>4<\/b><\/td>\n<\/tr>\n<\/table>\n<p>As the sales data shows, over several months we’ve got 4 deals out of 200 leads, i.e. our conversion rate is 4 \/ 200 = 2.0%.<\/p>\n<p>(Additionally, based on five months of data, we can roughly project 480 leads for the next year and, accordingly, 480 × 0.02 = 9.6 deals.)<\/p>\n<p>Given such scarce data, it’s impossible to go wrong, so, of course, such a forecast won’t be incorrect. However, it contains an important cognitive bias: 2.0% is not the exact value, but rather the <i>most probable so far<\/i> value of our lead-to-sale conversion rate for trucks.<\/p>\n<p class=\"loud\"><b>In reality, the conversion rate cannot be determined precisely. It lies within a confidence interval from 0.4% to 3.6%.<\/b> And for the coming year, we should be projecting not 9.6 deals, but somewhere between 5 and 15 trucks sold. Unfortunately, narrowing this range any further would be overly optimistic.<\/p>\n<h2>The Conversion Bell Curve<\/h2>\n<p>Assuming that our <i>true<\/i> conversion rate is stable and <i>exactly<\/i> equals 2.0%, we can estimate the possible range of deals out of 480 leads expected next year. Since we can only vouch for the consistency of <i>our own<\/i> work but can’t account for randomness (customer moods, force majeure, a lucky sale to the CEO’s buddy), there’s always a chance the number of deals will differ slightly from the projected 480 × 0.02 = 9.6 deals — much like the number of tails in 480 coin flips may differ slightly from 240, coming out to 235, 248, or possibly even 223.<\/p>\n<p>Graphically, this looks like a <i>normal distribution bell curve,<\/i> where the further we move from the expected value of 9 deals at the center of the bell, the lower the probability of closing significantly fewer or significantly more deals:<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/ivanbaldin.blog\/pictures\/norm_dist.png\" width=\"898\" height=\"580\" alt=\"\" \/>\n<\/div>\n<p>Looking at the resulting graph, we have to admit that seeing fewer than 2 or more than 19 sales is practically impossible.<\/p>\n<p>But can we narrow our <i>confidence interval?<\/i><\/p>\n<h2>Confidence Interval of a Conversion Rate<\/h2>\n<p>The standard error (SD) for a binomial distribution is calculated using the formula:<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/ivanbaldin.blog\/pictures\/CodeCogsEqn-1.png\" width=\"238\" height=\"39\" alt=\"\" \/>\n<\/div>\n<p>where <b><i>n<\/i><\/b> is the number of trials, and <b><i>p<\/i><\/b> is the probability of success.<\/p>\n<p>For our 200 leads this year, we get:<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/ivanbaldin.blog\/pictures\/sd01.png\" width=\"514\" height=\"299\" alt=\"\" \/>\n<\/div>\n<p><b>SD = 1.98 deals.<\/b> In other words, according to the laws of normal distribution (and binomial distribution is a special case of normal distribution), in roughly 68% of cases, while operating with a true conversion rate of 2.0%, we’d land within the confidence interval of 2.02 to 5.98 deals, i.e. ±1SD.<\/p>\n<p>For the projected 480 leads next year, we get:<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/ivanbaldin.blog\/pictures\/sd02.png\" width=\"494\" height=\"141\" alt=\"\" \/>\n<\/div>\n<p><b>SD = 3.07 deals.<\/b> By the laws of binomial (normal) distribution, it is known that in 68% of cases, next year’s sales will fall within ±1SD of the expected value of 9.6 deals, and in 90% of cases — within ±1.645SD of the expected value. 3.07 deals × 1.645 = 5.05 deals, meaning that in 90% of cases, if we work the entire next year at a 2% conversion rate, we won’t fall outside the confidence interval of “4.55 to 14.65 deals.” (Notably, conversely, in 1 out of 10 cases we <i>will<\/i> fall outside these bounds, all while still operating at a “true” conversion rate of 2%.)<\/p>\n<p>One can only wonder what kind of uproar the sales manager would raise if, by year’s end, we sold just 4 trucks on 480 leads, formally showing a conversion rate of 0.83%... and what’s even more curious is that, statistically, this happens in 1 out of 27 sales departments.<\/p>\n<p class=\"loud\">In one out of 27 cases, you get fired for missing your sales target, even though you were still operating at a “true” conversion rate of 2%.<\/p>\n<h2>Three Conversion Rates at the Confidence Interval Boundary<\/h2>\n<p>So how should we interpret this year’s results, where we got 4 sales out of 200 leads?<\/p>\n<p><b>Case one, “2.00%.”<\/b> We covered this one right away. 4 \/ 200 = 0.02, meaning our conversion rate is 2%. At the same time, by the laws of binomial distribution, there’s still a chance of fluctuating within the 90% confidence interval of “±1.645SD,” i.e. within the range of 0.74 to 7.26 deals per 200 leads.<\/p>\n<p>It looks roughly like this:<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/ivanbaldin.blog\/pictures\/001.png\" width=\"900\" height=\"582\" alt=\"\" \/>\n<\/div>\n<p>Our result of 4 deals matched the expected value for a 2.0% conversion rate, although, in general, it didn’t have to — it could have landed anywhere within the 90% confidence interval of 1 to 7 sales.<\/p>\n<p><b>Case two, “1.22%.”<\/b> In this scenario, our “true” conversion rate <b>is actually lower, equaling, say, 1.22%.<\/b> Then the expected number of trucks sold is approximately 2, and we were <b>lucky<\/b> to close 4 sales. Our luck was such that we could have made <i>more<\/i> than 4 sales only in 10% of cases. That is, we remain within the 90% probability field, though we’re sitting at its boundary. A little more, and our luck would be too good — but for now, we’re lucky “within reason”:<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/ivanbaldin.blog\/pictures\/002.png\" width=\"902\" height=\"574\" alt=\"\" \/>\n<\/div>\n<p><b>Case three, “3.31%.”<\/b> Now let’s suppose that this year <b>we were unlucky,<\/b> even though our true conversion rate was above 2.0% all year and <b>actually equaled 3.31%.<\/b> The expected value for 200 leads would then be approximately 6 trucks sold, and making <i>fewer<\/i> than 4 sales would only be possible in 10% of cases. So we’d still be within the 90% probability field, but sitting at the left boundary with our unlucky 4 deals.<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/ivanbaldin.blog\/pictures\/003.png\" width=\"901\" height=\"575\" alt=\"\" \/>\n<\/div>\n<p><b>Thus, the takeaway is clear: we don’t know for sure which of the 3 conversion rates is the true one.<\/b> We’re used to thinking it’s Case 1 — dividing 4 sales by 200 leads and getting a conversion rate of 2.00%. But nobody knows for certain whether the current year was typical or atypical, whether we were lucky or unlucky. In 90% of cases, it could have been <b>a matter of luck,<\/b> and we were actually operating at a conversion rate of 1.22%, <b>or a matter of bad luck,<\/b> where we were operating at a conversion rate of 3.31%. <b>In all 3 cases, the probability of closing 4 sales out of 200 leads did not exceed the 90% threshold.<\/b><\/p>\n<p>Unfortunately, we simply don’t have enough data yet to make more precise claims.<\/p>\n<h2>We Need More Data<\/h2>\n<p>A logical question to ask is — how much data do we need to accumulate before we can speak of a 2.0% conversion rate with any reliability? Let’s try gradually increasing the sample size (number of leads, and consequently, sales) until we see the 90% confidence interval converge around the 2.00% conversion rate value:<\/p>\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" class=\"e2-text-table\">\n<tr>\n<td style=\"text-align: right\"><b>                    Leads<\/b><\/td>\n<td style=\"text-align: right\"><b>             Deals<\/b><\/td>\n<td style=\"text-align: right\"><b>Lower bound of 90% confidence interval (-1.645SD)<\/b><\/td>\n<td style=\"text-align: right\"><b>Upper bound of 90% confidence interval (+1.645SD)<\/b><\/td>\n<td style=\"text-align: right\"><b>Lower conversion bound<\/b><\/td>\n<td style=\"text-align: right\"><b>Upper conversion bound<\/b><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: right\">200<\/td>\n<td style=\"text-align: right\">4<\/td>\n<td style=\"text-align: right\">0.7<\/td>\n<td style=\"text-align: right\">7.3<\/td>\n<td style=\"text-align: right\">0.37%<\/td>\n<td style=\"text-align: right\">3.63%<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: right\">500<\/td>\n<td style=\"text-align: right\">10<\/td>\n<td style=\"text-align: right\">4.9<\/td>\n<td style=\"text-align: right\">15.1<\/td>\n<td style=\"text-align: right\">0.97%<\/td>\n<td style=\"text-align: right\">3.03%<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: right\">1,000<\/td>\n<td style=\"text-align: right\">20<\/td>\n<td style=\"text-align: right\">12.7<\/td>\n<td style=\"text-align: right\">27.3<\/td>\n<td style=\"text-align: right\">1.27%<\/td>\n<td style=\"text-align: right\">2.73%<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: right\">5,000<\/td>\n<td style=\"text-align: right\">100<\/td>\n<td style=\"text-align: right\">83.7<\/td>\n<td style=\"text-align: right\">116.3<\/td>\n<td style=\"text-align: right\">1.67%<\/td>\n<td style=\"text-align: right\">2.33%<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: right\">10,000<\/td>\n<td style=\"text-align: right\">200<\/td>\n<td style=\"text-align: right\">177.0<\/td>\n<td style=\"text-align: right\">223.0<\/td>\n<td style=\"text-align: right\">1.77%<\/td>\n<td style=\"text-align: right\">2.23%<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: right\">50,000<\/td>\n<td style=\"text-align: right\">1,000<\/td>\n<td style=\"text-align: right\">948.5<\/td>\n<td style=\"text-align: right\">1,051.5<\/td>\n<td style=\"text-align: right\">1.90%<\/td>\n<td style=\"text-align: right\">2.10%<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: right\">100,000<\/td>\n<td style=\"text-align: right\">2,000<\/td>\n<td style=\"text-align: right\">1,927.2<\/td>\n<td style=\"text-align: right\">2,072.8<\/td>\n<td style=\"text-align: right\">1.93%<\/td>\n<td style=\"text-align: right\">2.07%<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: right\">500,000<\/td>\n<td style=\"text-align: right\">10,000<\/td>\n<td style=\"text-align: right\">9,837.2<\/td>\n<td style=\"text-align: right\">10,162.8<\/td>\n<td style=\"text-align: right\">1.97%<\/td>\n<td style=\"text-align: right\">2.03%<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: right\">1,000,000<\/td>\n<td style=\"text-align: right\">20,000<\/td>\n<td style=\"text-align: right\">19,769.7<\/td>\n<td style=\"text-align: right\">20,230.3<\/td>\n<td style=\"text-align: right\">1.98%<\/td>\n<td style=\"text-align: right\">2.02%<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: right\">10,000,000<\/td>\n<td style=\"text-align: right\">200,000<\/td>\n<td style=\"text-align: right\">199,271.7<\/td>\n<td style=\"text-align: right\">200,728.3<\/td>\n<td style=\"text-align: right\">1.99%<\/td>\n<td style=\"text-align: right\">2.01%<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: right\">25,000,000<\/td>\n<td style=\"text-align: right\">500,000<\/td>\n<td style=\"text-align: right\">498,848.5<\/td>\n<td style=\"text-align: right\">501,151.5<\/td>\n<td style=\"text-align: right\">2.00%<\/td>\n<td style=\"text-align: right\">2.00%<\/td>\n<\/tr>\n<\/table>\n<p>Needless to say, very few sales departments can generate more than a few tens of thousands of leads. <b>Therefore, the truth is, setting sales targets and making promoting and firing decisions based on 1–5% conversion rates is madness — at these small numbers, math in sales simply doesn’t work.<\/b><\/p>\n",
            "summary": "Your conversion rate isn't a fixed number — it's a confidence interval. Using binomial distribution, this post shows why a 2% conversion rate on 200 leads could really be anywhere from 0.4% to 3.6%, and why setting sales targets on small samples is madness.",
            "date_published": "2019-05-07T12:39:07+03:00",
            "date_modified": "2026-04-12T11:39:08+03:00",
            "tags": [
                "binomial",
                "conversion",
                "sales funnel"
            ],
            "image": "https:\/\/ivanbaldin.blog\/pictures\/norm_dist.png",
            "_date_published_rfc2822": "Tue, 07 May 2019 12:39:07 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "6",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [],
                "og_images": [
                    "https:\/\/ivanbaldin.blog\/pictures\/norm_dist.png",
                    "https:\/\/ivanbaldin.blog\/pictures\/CodeCogsEqn-1.png",
                    "https:\/\/ivanbaldin.blog\/pictures\/sd01.png",
                    "https:\/\/ivanbaldin.blog\/pictures\/sd02.png",
                    "https:\/\/ivanbaldin.blog\/pictures\/001.png",
                    "https:\/\/ivanbaldin.blog\/pictures\/002.png",
                    "https:\/\/ivanbaldin.blog\/pictures\/003.png"
                ]
            }
        },
        {
            "id": "4",
            "url": "https:\/\/ivanbaldin.blog\/all\/staff-decisions-or-lets-fire-grandma\/",
            "title": "Staff Decisions, or Let’s Fire Grandma",
            "content_html": "<p>It’s a Thursday morning, and the VP of Sales is staring at a spreadsheet. One number — 10.1% — is about to end someone’s career. He doesn’t know it yet, but he’s about to make a decision that mathematics would call premature.<\/p>\n<p>I would call this problem “Promote or Fire”, or “Let’s Fire Grandma”.<\/p>\n<p>Here we’re looking at our sales department’s results, and questions are arising about our new manager, Drennan:<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/ivanbaldin.blog\/pictures\/funnel01.png\" width=\"482\" height=\"390\" alt=\"\" \/>\n<\/div>\n<p>Matt Drennan joined the team two and a half months ago. He came from a smaller company, interviewed well, and his first few weeks were promising — he learned the product fast, clients liked him on the phone. His probation target was set at “16 deals per 100 calls”. Reason? Because historically, our VP of Sales observed a call-to-deal conversion rate of 16.1%.<\/p>\n<p>Now, with 89 calls behind him and only 9 deals to show for it, his conversion sits at 10.1%.<\/p>\n<p>“Fire him,” the VP of Sales decides.<\/p>\n<p class=\"loud\"><b>Here’s the question: is this decision justified?<\/b> Has enough time passed (enough data accumulated) to make this call? Has the “bad luck” factor been accounted for? Could it be that Drennan is simply performing <b>no worse<\/b> than the other managers, actually converting at around the required 16%, but consistently running into clients’ force majeure events (5 clients “dropped off”), a “rough patch” in his personal life, and an unfortunately positioned Moon in the third house of Taurus?<\/p>\n<h2>Rolling the Dice<\/h2>\n<p>Before we get to the spreadsheet formula that will settle this, let me take you on a brief detour.<\/p>\n<p>In 1913, at the Monte Carlo Casino, the roulette ball landed on black <a href=\"https:\/\/en.wikipedia.org\/wiki\/Gambler's_fallacy\">twenty-six times in a row<\/a>. Gamblers lost millions betting against the streak, convinced that red was “due.” They were wrong — not because the wheel was rigged, but because they could not intuitively grasp what randomness actually looks like. Streaks happen. Cold spells happen. And sometimes a perfectly good sales manager just has a bad quarter.<\/p>\n<p>This is the same trap the VP of Sales is walking into.<\/p>\n<p>Recalling the coin flip example, let’s switch things up this time and roll a 6-sided die. The probability of rolling a “1” is 1\/6, or roughly 16.7%.<\/p>\n<p>The expected value for 89 rolls of a die is 89 × 1\/6 = 14.8 “ones” (and the same number of “twos,” “threes,” and so on), but obviously you could get not just 14–15, but also 12, 17, or even 20. Getting <i>none at all,<\/i> however, is virtually impossible (though, theoretically, the probability isn’t zero).<\/p>\n<p>Drennan’s work can be thought of as rolling a die, where the desired outcome — a “one” (a deal) — comes up roughly every sixth roll. <i>Roughly,<\/i> because the historically observed conversion rate (excluding Drennan’s results) is 380 deals out of 2,361 calls, or 380\/2,361 = 16.1%. The expected value from his 89 “rolls” (calls) is 89 × 0.161 = 14.3 “ones” (deals), but intuitively, we understand there could be slightly more or slightly fewer.<\/p>\n<p>If we calculate (we’ll learn how shortly) the exact probabilities of “landing” a specific number of deals in 89 calls and plot them on a graph, the most likely outcome <i>(the “expected value”)<\/i> of 14 deals will be in the center, with the remaining possible outcomes (13 and 15 deals, 12 and 16 deals, etc.) becoming progressively less likely each time, giving the graph its bell shape:<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/ivanbaldin.blog\/pictures\/funnel_9.png\" width=\"1069\" height=\"441\" alt=\"\" \/>\n<\/div>\n<p>We can’t say that 9 deals is <i>entirely<\/i> improbable — the bar is visible, if modest, with a probability of 0.037. That is, it happens in 1 out of 27 cases — which may be unlikely, but not <i>extremely<\/i> unlikely.<\/p>\n<p>All that’s left is to figure out how we arrived at “1 in 27,” and how this connects to difficult, “staff”, decisions in a sales department.<\/p>\n<h2>Calculating the Binomial Distribution<\/h2>\n<p>Both Excel and Google Sheets have a built-in <b>binomial distribution function.<\/b> It’s exactly what will give us the answer to whether it’s time to fire the unlucky Drennan.<\/p>\n<p>In the cell next to his 10.1% conversion rate, we calculate the function:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">=BINOM.DIST(D7,C7,$E$11,1)<\/code><\/pre><div class=\"e2-text-picture\">\n<img src=\"https:\/\/ivanbaldin.blog\/pictures\/funnel_binom.png\" width=\"724\" height=\"400\" alt=\"\" \/>\n<\/div>\n<p>In this function, we specify, in order: the number of successes (deals), the number of trials (calls), and the probability of success (the 16.1% conversion rate). The last, 4th parameter, we set to “1.”<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/ivanbaldin.blog\/pictures\/funnel_0763.png\" width=\"612\" height=\"396\" alt=\"\" \/>\n<\/div>\n<p>What is this 0.0763 we got? <b>0.0763 is the probability of getting no more than 9 deals out of 89 calls given a deal probability of 16.1%.<\/b> In other words, it’s the probability of getting anywhere from 0 to 9 deals <i>inclusive<\/i> with these parameters. Conversely, 1 − 0.0763 = 0.9237 is the probability of getting <i>10 or more<\/i> deals.<\/p>\n<p>(By the way, if you change the 4th parameter to “0,” you get the probability of getting <i>exactly<\/i> 9 deals.)<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/ivanbaldin.blog\/pictures\/funnel_1-9.png\" width=\"737\" height=\"307\" alt=\"\" \/>\n<\/div>\n<p>You could say that, taking the sum of all bars on the graph as 1, the sum of bars “0” through “9” equals 0.0763, or 7.63%. As you can see, it’s far more likely to land in the blue portion of the bell curve than in the red one (92.37% vs. 7.63%).<\/p>\n<p class=\"loud\"><b>Conclusion:<\/b> the probability that Drennan, while actually converting at 16.1%, would randomly (remember the possibility of a “rough patch”?) end up with no more than 9 deals out of 89 calls is 7.63%.<\/p>\n<p>Conversely, there’s a 92.37% probability that he would have gotten 10 or more deals. Roughly speaking, there’s a 7.63% chance he was simply unlucky, and a 92.37% chance that bad luck alone doesn’t explain it, and he is most likely converting at a rate below 16.1%.<\/p>\n<p>Therefore, if a <b>90% confidence level<\/b> is enough for the VP of Sales, then Drennan can be let go at the end of his probation — the manager is, indeed, not meeting his target. If, however, a <b>95% confidence level<\/b> is required, the data is not yet sufficient, and it would be advisable to observe a bit longer.<\/p>\n<p>So what confidence level should we choose? There is no right answer here.<\/p>\n<p><b>If we set it too low,<\/b> we risk accidentally firing good managers, but we won’t lose deals by continuing to work with bad ones.<\/p>\n<p><b>If we set it too high,<\/b> we’ll have to accumulate data for too long before making a mathematically justified decision to fire a bad manager, but the probability of accidentally firing a good one will be lower. In my opinion, a 90% level is optimal for this case. Drennan can be fired.<\/p>\n<h2>Wait, What About Whitfield’s 19.7%?<\/h2>\n<p>Indeed, if there are “bad” managers for whom there’s a 92.37% probability that their conversion is below the required 16.1%, then logically, there can also be “good” ones.<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/ivanbaldin.blog\/pictures\/funnel_binom_d3c3_whit.png\" width=\"712\" height=\"351\" alt=\"\" \/>\n<\/div>\n<p>Dan Whitfield is the quiet opposite of Drennan. He’s been with the company for six months, never makes a fuss, never asks for a raise. He just dials, talks, and closes. Over that time he put up 56 deals on 284 calls — a 19.7% conversion rate — compared to the projected 0.161 × 284 = 46 deals. Could he have been lucky this whole time? Could it be that, while actually performing like everyone else at a 16.1% conversion rate, he randomly ended up with more deals than the VP of Sales projected?<\/p>\n<p>The binomial distribution function returns 0.9563 — meaning that with a 95.63% probability, working like everyone else, he would have gotten no more than 56 deals... but he didn’t get <i>more<\/i> than 56 deals... He got <i>exactly<\/i> 56!<\/p>\n<p>Let’s simply refine the function by recalculating it for 56 − 1 = 55 deals:<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/ivanbaldin.blog\/pictures\/funnel_binom_whit.png\" width=\"739\" height=\"353\" alt=\"\" \/>\n<\/div>\n<p>For 55 deals, the result is 0.9402. That is, with a 94.02% probability, Whitfield (working at a 16.1% conversion rate) would have gotten <i>no more than<\/i> 55 deals. This means the probability of getting <i>more than<\/i> 55 deals is the remaining 5.98%! It turns out our Whitfield landed in a sliver of his own bell curve — just on the opposite end — and the probability of landing there is only about 6%.<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/ivanbaldin.blog\/pictures\/funnel_56-67.png\" width=\"743\" height=\"306\" alt=\"\" \/>\n<\/div>\n<p>The VP of Sales has already decided that before making staffing decisions, he wants to be at least 90% confident in the results. And in Whitfield’s results, he’s 94.02% confident! That leaves only 5.98% for the possibility that Whitfield was simply lucky.<\/p>\n<p>So either he got lucky, even though he actually performs like everyone else (at a 16.1% conversion rate) and doesn’t deserve a higher salary, or he truly converts at a rate above 16.1% and it would be fair to reward him.<\/p>\n<p>6% clearly loses to 94%, so Whitfield gets the promotion.<\/p>\n",
            "summary": "Your new sales rep is converting at 10% instead of the expected 16%. Fire him? Not so fast. Using the binomial distribution function built into Excel and Google Sheets, you can calculate the exact probability that poor results are just a cold streak — and make staffing decisions you can actually defend with math.",
            "date_published": "2019-03-29T18:03:00+03:00",
            "date_modified": "2026-04-12T03:09:44+03:00",
            "tags": [
                "binomial",
                "Sales Department",
                "sales funnel"
            ],
            "image": "https:\/\/ivanbaldin.blog\/pictures\/funnel01.png",
            "_date_published_rfc2822": "Fri, 29 Mar 2019 18:03:00 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "4",
            "_e2_data": {
                "is_favourite": true,
                "links_required": [
                    "highlight\/highlight.js",
                    "highlight\/highlight.css"
                ],
                "og_images": [
                    "https:\/\/ivanbaldin.blog\/pictures\/funnel01.png",
                    "https:\/\/ivanbaldin.blog\/pictures\/funnel_9.png",
                    "https:\/\/ivanbaldin.blog\/pictures\/funnel_binom.png",
                    "https:\/\/ivanbaldin.blog\/pictures\/funnel_0763.png",
                    "https:\/\/ivanbaldin.blog\/pictures\/funnel_1-9.png",
                    "https:\/\/ivanbaldin.blog\/pictures\/funnel_binom_d3c3_whit.png",
                    "https:\/\/ivanbaldin.blog\/pictures\/funnel_binom_whit.png",
                    "https:\/\/ivanbaldin.blog\/pictures\/funnel_56-67.png"
                ]
            }
        }
    ],
    "_e2_version": 4199,
    "_e2_ua_string": "Aegea 11.5 (v4199)"
}