статистикавыборкарепрезентативность

Выборка и генеральная совокупность: почему аналитик всегда судит о цел

2026-07-11 12 мин

Генеральная совокупность — это все объекты, которые вам в принципе интересны: все пользователи продукта, все заказы за год, все жители города. Выборка — это подмножество, которое вы реально наблюдаете и на котором считаете числа. Репрезентативность означает, что выборка устроена по важным признакам так же, как генеральная совокупность, и поэтому выводы с выборки можно переносить на всех. Практический смысл для аналитика простой: у вас почти никогда нет данных обо «всех», и почти всегда вы по части судите о целом. Ниже разберу, где это ломается и как не обмануть самого себя.

Чем генеральная совокупность отличается от выборки?

Генеральная совокупность (population) — это полное множество, о котором вы хотите сделать вывод. «Все активные пользователи мобильного приложения», «все транзакции по карте за месяц», «все жители страны старше 18». У неё есть размер, который обычно обозначают большой буквой N, и он либо огромный, либо в принципе неизвестный.

Выборка (sample) — это подмножество размера n, которое вы фактически видите в таблице. Тысяча человек, ответивших на опрос. Заказы, которые попали в выгрузку. Пользователи, которых система рандомно отправила в тестовую группу.

Ключевую мысль полезно проговаривать вслух каждый раз, когда пишете запрос: строка в вашей таблице — это не «истина обо всех», это наблюдение об одном элементе выборки. Даже когда кажется, что данные полные, они полные только про прошлое и только про тех, кто вообще попал в вашу систему логирования.

-- Это НЕ генеральная совокупность "все клиенты".
-- Это выборка: только те, кто сделал заказ и попал в БД.
SELECT COUNT(DISTINCT user_id) AS paying_users
FROM orders
WHERE created_at >= '2026-01-01';

Люди без единого заказа, боты, отфильтрованные фродом, юзеры удалённых аккаунтов — всё это часть генеральной совокупности «пользователи», но их нет в вашей выборке. Разрыв между тем, о чём вы хотите сделать вывод, и тем, что реально лежит в таблице, — источник половины ошибочных выводов в аналитике.

Параметр или статистика — в чём разница?

Параметр — это число, описывающее генеральную совокупность. Истинная средняя выручка на пользователя среди всех пользователей. Истинная конверсия среди всех, кто когда-либо увидит новую кнопку. Эти числа существуют, но вы их почти никогда не знаете точно.

Статистика — это число, посчитанное по выборке. Средняя выручка по тысяче наблюдений. Конверсия в вашем A/B-тесте. Медиана времени доставки по выгрузке за неделю. Статистику вы считаете сами, и она — оценка параметра.

Разница не педантичная, а рабочая. Когда вы говорите «конверсия 4,2%», вы почти всегда имеете в виду статистику: наблюдённую долю в выборке. Истинный параметр может быть 3,9% или 4,5% — вы видите одну реализацию случайного процесса. Именно поэтому у любой оценки есть погрешность, и именно поэтому в A/B-тестах считают доверительные интервалы и p-value: чтобы понять, насколько статистика может отличаться от параметра просто из-за случайности выборки.

Хорошая привычка — держать в голове три вопроса к любому числу на дашборде: какая тут генеральная совокупность, это статистика или параметр, и насколько выборка могла её исказить. Если хотите потренировать это на живых данных, соберите пару агрегатов в SQL-тренажёре и спросите себя, о ком именно эти числа.

Какие бывают виды выборок и зачем их различать?

Способ, которым вы отбираете наблюдения, определяет, можно ли вообще доверять выводам. Основных типов несколько.

Простая случайная выборка (simple random) — каждый объект генеральной совокупности имеет равный шанс попасть в выборку. Это золотой стандарт: именно так устроена рандомизация в A/B-тестах, где пользователя кидают в группу по хэшу id. Плюс — несмещённость, минус — редкие подгруппы могут случайно оказаться недопредставлены.

Стратифицированная выборка (stratified) — вы делите совокупность на страты (город, платформа, грейд, канал привлечения) и берёте случайную выборку внутри каждой страты, часто пропорционально её доле. Так вы гарантируете, что мелкие, но важные сегменты не потеряются.

import pandas as pd

# Пропорциональная стратифицированная выборка по платформе
frac = 0.1
sample = (
    df.groupby("platform", group_keys=False)
      .apply(lambda g: g.sample(frac=frac, random_state=42))
)

Кластерная выборка (cluster) — вы случайно выбираете не отдельные объекты, а целые группы (магазины, города, когорты) и берёте их целиком. Дешевле по сбору, но объекты внутри кластера похожи друг на друга, поэтому эффективный размер выборки меньше, чем кажется по числу строк.

Отдельно стоит удобная выборка (convenience) — «взяли тех, кто был под рукой». Опрос среди подписчиков телеграм-канала, отзывы только от написавших в поддержку, интервью с тремя знакомыми. Формально это тоже выборка, но почти всегда смещённая, и именно с ней связано большинство ложных выводов.

Что такое смещение выборки и почему опросы врут?

Смещение выборки (selection bias) — это когда шанс попасть в выборку систематически связан с тем, что вы измеряете. В результате статистика устойчиво уходит в сторону от параметра, и большая выборка не спасает: вы просто точнее оцениваете неправильное число.

Классический механизм — самоотбор (self-selection). Люди сами решают, отвечать на опрос или нет, и отвечают чаще те, у кого сильные эмоции: либо в восторге, либо в ярости. Спокойное большинство молчит. Поэтому «средняя оценка по отзывам» почти всегда поляризованнее, чем реальное отношение всех пользователей. Опрос удовлетворённости, который видят только активные юзеры внутри продукта, никогда не расскажет вам про тех, кто уже ушёл — а это часто самая важная группа.

Есть исторический пример, который любят на собеседованиях: перед президентскими выборами в США 1936 года крупный журнал разослал бюллетени по спискам автовладельцев и телефонных абонентов, собрал миллионы ответов и уверенно предсказал не того победителя. Выборка была огромной, но смещённой: во время Великой депрессии машина и телефон были маркером достатка, а голосовали иначе те, у кого их не было. Размер не спас — смещение решает.

Ещё один частый вид — ошибка выжившего (survivorship bias): вы анализируете только тех, кто «дожил» до момента наблюдения. Считаете LTV по действующим подписчикам и забываете про отвалившихся. Смотрите на успешные кампании и не видите провальных, которые уже удалили. Проверьте себя на разборах в разделе кейсов — там смещение выжившего встречается в половине продуктовых задач.

Практический чек-лист против смещения: спросите, кто НЕ мог попасть в данные; сравните структуру выборки с известной структурой генеральной совокупности; и всегда отдельно думайте про тех, кто отвалился или промолчал.

Как размер выборки влияет на точность?

Размер выборки управляет не смещением, а разбросом оценки. Даже идеально случайная выборка даёт статистику, которая гуляет вокруг параметра от запуска к запуску. Чем больше n, тем этот разброс меньше — но не линейно.

Ключевое правило: погрешность оценки убывает пропорционально 1 / sqrt(n). Для доли (конверсии) стандартная ошибка равна sqrt(p * (1 - p) / n). Отсюда неприятное следствие: чтобы уменьшить погрешность вдвое, выборку надо увеличить вчетверо. Первые сотни наблюдений сокращают неопределённость резко, а дальше идёт закон убывающей отдачи.

import numpy as np

p = 0.042  # наблюдённая конверсия
for n in [100, 1000, 10000, 100000]:
    se = np.sqrt(p * (1 - p) / n)
    print(f"n={n:>6}  se={se:.4f}  ±{1.96*se*100:.2f} п.п.")

При n = 100 погрешность конверсии — порядка двух процентных пунктов, то есть при базе 4% вы почти ничего не можете утверждать. При n = 10000 она уже около 0,4 п.п. Поэтому в A/B-тестах размер выборки не берут с потолка, а считают заранее из минимально значимого эффекта (MDE), базовой конверсии и желаемой мощности. Маленькая выборка не «немного менее точная» — она может быть бесполезной для решения. Потренироваться считать доли и агрегаты по группам можно в Python-тренажёре, а быстрые справки по функциям — в Python-справочнике.

Почему любой A/B-тест и любой дашборд — это выборка?

Это, пожалуй, главная мысль для практика. A/B-тест — это буквально две случайные выборки из гипотетически бесконечной генеральной совокупности «все будущие пользователи в таких условиях». Вы никогда не тестируете на всех — вы берёте пользователей за две недели и по ним оцениваете эффект, который хотите применить ко всем следующим. Разница между группами, которую вы видите, — статистика, а не параметр, и часть её всегда объясняется случайностью распределения по группам.

Дашборд — тоже выборка, хотя выглядит как «полные данные». «Выручка за последние 30 дней» — это выборка из непрерывного процесса, который шёл до окна и пойдёт после. Сегодняшние пользователи — выборка из завтрашних. Даже DAU как метрика — это оценка уровня активности, а не вечная константа: один крупный клиент, праздник или выходной сдвигают число, и это разброс выборки, а не смена тренда.

Что это меняет в работе. Во-первых, вы перестаёте реагировать на каждое дневное колебание графика как на событие — часть шума неизбежна. Во-вторых, вы аккуратнее с сегментами: разрезали дневную метрику на десять городов и радуетесь росту в одном — а там n пятьдесят человек, и «рост» полностью в пределах погрешности. В-третьих, вы начинаете писать рядом с числами доверительные интервалы, а не голые точки. Разбор таких ловушек часто просят на интервью — типовые формулировки собраны в банке вопросов.

Как понять, что выборка нерепрезентативна?

Прямого теста «репрезентативна ли выборка» не существует — репрезентативность всегда относительно конкретного вопроса. Но есть рабочие проверки, которые ловят большинство проблем.

Сравните распределение выборки с известной структурой генеральной совокупности по ключевым срезам. Если вы знаете, что среди всех пользователей 60% на мобильных, а в вашей выгрузке 90% десктоп — выборка перекошена, и любые средние по ней врут. Тот же приём для географии, платящих/неплатящих, новых/старых.

-- Доли по платформе в выборке — сверяем с известной структурой базы
SELECT platform,
       COUNT(*) AS n,
       ROUND(100.0 * COUNT(*) / SUM(COUNT(*)) OVER (), 1) AS pct
FROM events
WHERE event_date >= '2026-06-01'
GROUP BY platform
ORDER BY n DESC;

Проверьте, как выборка вообще собиралась. Есть ли фильтры, которые незаметно выкидывают целые группы? Логируются ли ошибки и отвалы, или в данные попадают только «успешные» события? Не смешаны ли боты и реальные люди? Один крупный B2B-клиент способен один перетянуть среднее — посмотрите, не держится ли метрика на нескольких аномальных объектах.

И держите в голове главный вопрос: о ком я хочу сделать вывод и кто реально попал в данные? Если между этими двумя множествами есть систематический зазор — выборка нерепрезентативна, и никакая красивая статистика этого не починит. Отработать такие проверки на реальных заданиях можно в разделе задач, а собрать базу по SQL с нуля помогает бесплатный курс.

Что запомнить и с чего начать практику?

Свести всё к нескольким рабочим установкам несложно. Генеральная совокупность — то, о чём вы хотите знать; выборка — то, что реально видите; и это почти всегда разные вещи. Параметр — истинное число совокупности, статистика — ваша оценка по выборке, и у оценки всегда есть погрешность. Размер выборки лечит разброс, но не лечит смещение: миллион перекошенных ответов хуже тысячи честных. И самое важное для повседневной работы — каждый ваш дашборд, каждая метрика и каждый A/B — это выборка, а не окончательная истина.

Теория закрепляется только руками. Начните с малого: возьмите любой агрегат и явно ответьте, кто НЕ попал в данные и почему. Потом посчитайте ту же долю на разных срезах и посмотрите, где n слишком мал, чтобы делать выводы. Удобно делать это в SQL-тренажёре и Python-тренажёре, а формулы и разбор смещения — в наших конспектах и кейсах.

Если хотите системно, без перескоков от статьи к статье, разобрать статистику, A/B-тесты и SQL до уровня, на котором это спрашивают на собеседованиях, — в Pro открыты все задачи, кейсы, метрики и безлимитный AI-разбор ответов. Это дешевле одной консультации и остаётся с вами, пока готовитесь.

Готовься к собесу аналитика
Вопросы по статистике и A/B с разбором — попробуй бесплатно.
Банк вопросов →