Пять ключевых статистических ловушек на собеседованиях в FAANG, которые проверяют вашу способность подвергать сомнению данные, выявлять предвзятость и критически мыслить.

Изображение предоставлено автором.
# Введение
При устройстве на работу в Meta (ранее Facebook), Apple, Amazon, Netflix или Alphabet (Google) — компании, известные как FAANG — на собеседованиях редко проверяют, можете ли вы наизусть цитировать определения из учебников. Вместо этого интервьюеры хотят увидеть, умеете ли вы критически анализировать данные и сможете ли вы выявить неудачный анализ до того, как он будет внедрен в производство. Статистические ловушки — один из самых надежных способов это проверить.

Эти ловушки повторяют те решения, с которыми аналитики сталкиваются ежедневно: цифра на панели мониторинга, которая выглядит хорошо, но на самом деле вводит в заблуждение, или результат эксперимента, который кажется полезным, но содержит структурный недостаток. Интервьюер уже знает ответ. Он наблюдает за вашим мыслительным процессом, включая то, задаете ли вы правильные вопросы, замечаете ли недостающую информацию и оспариваете ли цифру, которая на первый взгляд кажется хорошей. Кандидаты неоднократно попадают в эти ловушки, даже те, кто обладает сильным математическим образованием.
Мы рассмотрим пять наиболее распространенных ловушек.
# Понимание парадокса Симпсона
Цель этой ловушки — поймать людей, которые безоговорочно доверяют обобщенным цифрам.
Парадокс Симпсона возникает, когда тенденция проявляется в разных группах данных, но исчезает или меняет направление при объединении этих групп. Классический пример — данные о приеме в Калифорнийский университет в Беркли за 1973 год: в целом показатели приема были выше у мужчин, но при разделении по факультетам у женщин показатели приема были равными или выше. Совокупные данные были обманчивы, поскольку женщины подавали заявки на более престижные факультеты.
Парадокс неизбежен всякий раз, когда группы имеют разный размер и разные базовые показатели. Именно понимание этого позволяет отличить поверхностный ответ от глубокого.
На собеседовании вопрос может звучать примерно так: «Мы провели A/B-тестирование. В целом, вариант B показал более высокий коэффициент конверсии. Однако, если разбить результаты по типам устройств, вариант A показал лучшие результаты как на мобильных, так и на настольных компьютерах. В чем причина?» Уверенный кандидат ссылается на парадокс Симпсона, уточняет его причину (пропорции групп различаются между двумя вариантами) и просит показать разбивку, а не доверять общим данным.
Интервьюеры используют это, чтобы проверить, задаете ли вы инстинктивные вопросы о распределении подгрупп. Если вы просто сообщаете общее число, вы теряете баллы.
// Демонстрация с использованием данных A/B-тестирования
В следующей демонстрации с использованием Pandas мы можем увидеть, как совокупный показатель может вводить в заблуждение.
import pandas as pd # A выигрывает на обоих устройствах по отдельности, но B выигрывает в совокупности, # потому что B получает большую часть трафика с мобильных устройств с более высокой конверсией. data = pd.DataFrame({ 'device': ['mobile', 'mobile', 'desktop', 'desktop'], 'variant': ['A', 'B', 'A', 'B'], 'converts': [40, 765, 90, 10], 'visitors': [100, 900, 900, 100], }) data['rate'] = data['converts'] / data['visitors'] print('Per device:') print(data[['device', 'variant', 'rate']].to_string(index=False)) print('nAggregate (misleading):') agg = data.groupby('variant')[['converts', 'visitors']].sum() agg['rate'] = agg['converts'] / agg['visitors'] print(agg['rate'])
Выход:

# Выявление систематической ошибки отбора
Этот тест позволяет интервьюерам оценить, задумываетесь ли вы об источнике данных перед их анализом.
Смещение выборки возникает, когда имеющиеся у вас данные не репрезентативны для популяции, которую вы пытаетесь понять. Поскольку смещение происходит в процессе сбора данных, а не в анализе, его легко упустить из виду.
Рассмотрите следующие возможные варианты построения интервью:
- Мы проанализировали опрос наших пользователей и обнаружили, что 80% из них удовлетворены продуктом. Означает ли это, что наш продукт хорош? Убедительным аргументом было бы то, что удовлетворенные пользователи чаще отвечают на опросы. Цифра в 80%, вероятно, завышает уровень удовлетворенности, поскольку недовольные пользователи, скорее всего, предпочли не участвовать в опросах.
- Мы проанализировали клиентов, которые ушли в прошлом квартале, и обнаружили, что у них в основном были низкие показатели вовлеченности. Стоит ли нам сосредоточиться на вовлеченности, чтобы снизить отток? Проблема в том, что у вас есть данные о вовлеченности только для ушедших пользователей. У вас нет данных о вовлеченности пользователей, которые остались, что делает невозможным определить, действительно ли низкая вовлеченность является предиктором оттока или это просто общая характеристика ушедших пользователей.
Ещё один важный вариант — это ошибка выжившего: вы наблюдаете только те результаты, которые прошли через определённый фильтр. Если вы используете данные только об успешных продуктах для анализа причин их успеха, вы игнорируете те, которые потерпели неудачу по тем же причинам, которые рассматриваете как сильные стороны.
// Имитация отказа от участия в опросе
Мы можем смоделировать, как смещение, вызванное отсутствием ответов, искажает результаты, используя NumPy .
import numpy as np import pandas as pd np.random.seed(42) # Имитация пользователей, где удовлетворенные пользователи с большей вероятностью ответят satisfaction = np.random.choice([0, 1], size=1000, p=[0.5, 0.5]) # Вероятность ответа: 80% для удовлетворенных, 20% для неудовлетворенных response_prob = np.where(satisfaction == 1, 0.8, 0.2) responded = np.random.rand(1000) < response_prob print(f"Истинный уровень удовлетворенности: {satisfaction.mean():.2%}") print(f"Уровень удовлетворенности по опросу: {satisfaction[responded].mean():.2%}")
Выход:

Интервьюеры используют вопросы, касающиеся предвзятости выборки, чтобы выяснить, отделяете ли вы «то, что показывают данные» от «того, что верно в отношении пользователей».
# Предотвращение p-хакинга
Подгонка p-значений (также называемая «выкапыванием данных») происходит, когда вы проводите множество тестов и сообщаете только о тех, у которых ( p < 0,05 ). Проблема в том, что значения ( p ) предназначены только для отдельных тестов. Один ложноположительный результат можно ожидать случайно, если провести 20 тестов на уровне значимости 5%. Частота ложных срабатываний увеличивается за счет поиска значимого результата. Интервьюер может спросить вас: «В прошлом квартале мы провели пятнадцать экспериментов с признаками. При ( p < 0,05 ) три из них оказались значимыми. Нужно ли отправлять результаты по всем трем?» Слабый ответ означает «да». Сильный ответ сначала спросит, каковы были гипотезы до проведения тестов, был ли заранее установлен порог значимости и внесла ли команда поправку на множественные сравнения. Далее часто спрашивают, как бы вы спланировали эксперименты, чтобы избежать этого. Предварительная регистрация гипотез до сбора данных — наиболее прямое решение, поскольку оно исключает возможность задним числом решать, какие тесты были «реальными».
// Наблюдение за накоплением ложных срабатываний
С помощью SciPy мы можем наблюдать, как ложные срабатывания возникают случайно.
import numpy as np from scipy import stats np.random.seed(0) # 20 A/B-тестов, где нулевая гипотеза верна (нет реального эффекта) n_tests, alpha = 20, 0.05 false_positives = 0 for _ in range(n_tests): a = np.random.normal(0, 1, 1000) b = np.random.normal(0, 1, 1000) # идентичное распределение! if stats.ttest_ind(a, b).pvalue < alpha: false_positives += 1 print(f'Проведено тестов: {n_tests}') print(f'Ложноположительные результаты (p
Источник: www.kdnuggets.com





















