1.6Kпросмотров
89.9%от подписчиков
5 января 2026 г.
Score: 1.7K
Анализ пропорций на Python Допустим, у нас есть гипотеза: "Клиенты, получающие зарплату на счёт в банке, в n раз чаще открывают вклады, чем остальные". И есть собранная из БД аналитическая витрина с полями: ▶️client_id - айди клиента ▶️salary_client - был ли клиент когда-либо зарплатным (да/нет)? ▶️any_deposit - открывал ли клиент хотя бы 1 вклад (да/нет)? ▶️during_salary - открыт ли хотя бы 1 вклад в то время, когда клиент был зарплатным (да/нет)? NULL - если клиент не был зарплатным. Проверяются подобные гипотезы через сравнение пропорций (z-тест). Алгоритм таков: 1️⃣Сначала надо разделить клиентов на 2 группы (зарплатные и незарплатные). То есть просто считаем кол-во да/нет в поле salary_client: import pandas as pd import numpy as np import matplotlib.pyplot as plt import seaborn as sns from statsmodels.stats.proportion import proportions_ztest ###### #ИСТОЧНИК ДАННЫХ + СОЗДАНИЕ DF ###### group_counts = df['salary_client'].value_counts() print(group_counts) 2️⃣Затем найти процент тех, кто открыл вклад в каждой группе. Для зарплатных клиентов надо найти соотношение during_salary (да) /salary_client (да) Для незарплатных: any_deposit (да) / salary_client (нет) На питоне это выглядит так: salary_group = df[df['salary_client'] == 'да'] non_salary_group = df[df['salary_client'] == 'нет'] salary_deposit_rate = (salary_group['during_salary'] == 'да').mean() non_salary_deposit_rate = (non_salary_group['any_deposit'] == 'да').mean() print(salary_deposit_rate) print(non_salary_deposit_rate) 3️⃣И далее уже подключается статистика: нужно посчитать P-value, чтобы убедиться в стат значимости. salary_count = len(salary_group) salary_deposit_count = (salary_group['during_salary'] == 'да').sum() non_salary_count = len(non_salary_group) non_salary_deposit_count = (non_salary_group['any_deposit'] == 'да').sum() c1 = np.array([salary_deposit_count, non_salary_deposit_count]) c2 = np.array([salary_count, non_salary_count]) stat, pval = proportions_ztest(c1, c2, alternative='larger') print(f"p-value: {pval}") 🟠Теперь что касательно интерпретации результатов. Если мы выяснили в п.2, что доля клиентов как-то заметно отличается (например, 55% против 25%), то имеет смысл считать p-value, потому что разница ощутима и надо проверить, не случайность ли это. Если p-value > 0.05, то такая разница может быть случайной и нет смысла на этом заострять внимание. Если p-value < 0.05, то, следовательно, всё наоборот.
1.6K
просмотров
2585
символов
Да
эмодзи
Нет
медиа

Другие посты @business_stats

Все посты канала →
Анализ пропорций на Python Допустим, у нас есть гипотеза: "К — @business_stats | PostSniper