Классическая проблема в DS: есть данные опроса, но респонденты не репрезентативны — молодые отвечают чаще, богатые меньше. Как делать выводы о всей популяции?
balance решает именно это. Библиотека присваивает каждому респонденту вес — сколько людей из целевой популяции он представляет.
Как работает:
from balance import load_data, Sample
target_df, sample_df = load_data()
sample = Sample.from_frame(sample_df, outcome_columns=["happiness"])
target = Sample.from_frame(target_df)
sample_with_target = sample.set_target(target)
adjusted = sample_with_target.adjust()
print(adjusted.summary())
# Covar ASMD reduction: 62.3%
# ASMD: 0.335 → 0.126
ASMD (Absolute Standardized Mean Difference) — основная метрика качества балансировки. Чем ниже, тем лучше.
📊 Методы взвешивания
· IPW — логистическая регрессия с L1 регуляризацией
· CBPS — Covariate Balancing Propensity Score
· Post-stratification
· Raking
📊 Когда использовать
· Анализ опросов с non-response bias
· Observational studies (treated vs untreated)
· Любые данные с selection bias
pip install balance
📍 Навигация: Вакансии • Задачи • Собесы
Библиотека дата-сайентиста
#буст
