{
    "version": "https:\/\/jsonfeed.org\/version\/1.1",
    "title": "Ivan Baldin, Data Analyst: posts tagged statistics",
    "_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\/tags\/statistics\/",
    "feed_url": "https:\/\/ivanbaldin.blog\/tags\/statistics\/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"
                ]
            }
        }
    ],
    "_e2_version": 4199,
    "_e2_ua_string": "Aegea 11.5 (v4199)"
}