跳转到主要内容

balance是一个Python包,提供了一种简单的工作流程和方法,用于处理在从数据样本中推断目标感兴趣群体时可能存在的偏差数据样本。

项目描述

balance_logo_horizontal

balance:一个用于平衡偏差数据样本的Python包

balance目前处于测试版并且正在积极开发中。请关注我们的github

balance是什么?

balance是一个Python包,提供了一种简单的工作流程和方法,用于处理在从数据样本中推断某些感兴趣人群时可能存在的偏差数据样本。

偏差样本常在调查统计学中出现,当受访者存在非响应偏差或调查存在抽样偏差(不是完全随机缺失)。在比较处理组和未处理组以及在任何存在选择偏差的数据中,也会出现类似的问题。

在随机缺失假设(MAR)下,样本中的偏差有时可以通过依赖所有样本项目和来自总体样本的项目都存在的辅助信息(也称为“协变量”或“特征”)来部分或全部缓解。例如,如果我们想从一个调查的受访者样本中进行推断,我们可能希望使用人口统计信息(如年龄、性别、教育程度等)来调整非响应。这可以通过使用辅助信息将样本加权到总体来实现。

该软件包旨在为对使用Python软件包平衡有偏样本(如来自调查的样本)感兴趣的研究人员提供服务。这种需求可能源于调查方法论学家、人口统计学家、用户体验研究人员、市场研究人员,以及一般的数据科学家、统计学家和机器学习人员。

安装

要求

运行balance需要Python 3.8或更高版本。balance可以从Linux、OSX和Windows构建和运行(注意:目前不支持在Windows上使用method="ipw")。

所需的Python依赖项包括

REQUIRES = [
    "numpy",
    "pandas<=1.4.3",
    "ipython",
    "scipy<=1.9.2",
    "patsy",
    "seaborn<=0.11.1",
    "plotly",
    "matplotlib",
    "statsmodels",
    "scikit-learn",
    "ipfn",
    "session-info",
]

请注意,必须从Github源安装glmnet_python。

有关更多详细信息,请参阅setup.py

安装balance

作为先决条件,您必须从源安装glmnet_python。

python -m pip install git+https://github.com/bbalasub1/glmnet_python.git@1.0

通过PyPi安装

我们建议通过pip从PyPi安装balance以获取最新稳定版本。

python -m pip install balance

安装将使用PyPI上的Python wheels,适用于OSX、Linux和Windows

从源/Git安装

您可以从Git安装最新(前沿)版本。

python -m pip install git+https://github.com/facebookresearch/balance.git

或者,如果您有本地克隆的存储库副本

cd balance
python -m pip install .

入门

balance的高级工作流程

balance的核心工作流程涉及拟合和评估样本权重。对于样本中的每个单位(例如,调查的受访者),balance会拟合一个权重,可以(松散地)解释为该受访者代表的目标总体中的人数。这旨在帮助缓解覆盖和非响应偏差,如图所示。

total_survey_error_img

通过balance对调查数据进行加权的主要步骤如下

  1. 加载调查受访者的数据。
  2. 加载我们想要纠正的目标人口数据。
  3. 对样本协变量进行诊断,以评估是否需要加权。
  4. 将样本调整到目标。
  5. 评估结果。
  6. 使用权重生成人口水平估计。
  7. 保存输出权重。

您可以在通用框架页面中查看上述步骤的逐步描述(附带代码)。

使用balance的代码示例

您可以通过以下代码运行以下代码来使用balance的基本工作流程(这些是从快速入门教程中摘取的片段)

我们首先加载数据,然后调整它

from balance import load_data, Sample

# load simulated example data
target_df, sample_df = load_data()

# Import sample and target data into a Sample object
sample = Sample.from_frame(sample_df, outcome_columns=["happiness"])
target = Sample.from_frame(target_df)

# Set the target to be the target of sample
sample_with_target = sample.set_target(target)

# Check basic diagnostics of sample vs target before adjusting:
# sample_with_target.covars().plot()

您可以在预调整诊断页面了解更多有关预调整数据评估的信息。

接下来,我们通过拟合平衡调查权重将样本调整到人口

# Using ipw to fit survey weights
adjusted = sample_with_target.adjust()

您可以在调整样本到人口页面了解更多有关调整过程的信息。

上面的代码使我们获得一个带有权重的 调整 对象。我们可以通过运行以下代码来评估权重对协变量平衡的好处:

print(adjusted.summary())
    # Covar ASMD reduction: 62.3%, design effect: 2.249
    # Covar ASMD (7 variables):0.335 -> 0.126
    # Model performance: Model proportion deviance explained: 0.174

adjusted.covars().plot(library = "seaborn", dist_type = "kde")

然后得到

我们还可以使用以下方式检查权重对结果的影响:

# For the outcome:
print(adjusted.outcomes().summary())
    # 1 outcomes: ['happiness']
    # Mean outcomes:
    #             happiness
    # source
    # self        54.221388
    # unadjusted  48.392784
    #
    # Response rates (relative to number of respondents in sample):
    #    happiness
    # n     1000.0
    # %      100.0
adjusted.outcomes().plot()

您可以在评估和使用调整权重页面了解更多关于调整后数据评估的信息。

最后,可以使用以下方式下载调整后的数据:

adjusted.to_download()  # Or:
# adjusted.to_csv()

要查看带有代码输出打印和图表(静态和交互式)的更详细的逐步代码示例,请访问教程部分

实现调整方法

平衡 目前实现了各种调整方法。点击链接了解每个方法的详细信息

  1. 使用L1(LASSO)惩罚的逻辑回归。
  2. 协变量平衡倾向得分(CBPS)。
  3. 后分层。
  4. 分层法。

实现诊断/评估方法

对于诊断,主要工具(比较应用权重前、后和目标人群)包括:

  1. 图表
    1. 条形图
    2. 密度图(用于权重和协方差)
    3. qq图
  2. 统计摘要
    1. 权重分布
      1. Kish的设计效应
      2. 主要摘要(均值、中位数、方差、分位数)
    2. 协变量分布
      1. 绝对标准化均值差异(ASMD)。对于连续变量,它是Cohen's d。分类变量是一热编码,为每个类别计算Cohen's d,ASMD用于分类变量定义为所有类别的Cohen's d的平均值。

您可以在评估和使用调整权重页面了解更多关于调整后数据评估的信息。

更多详细信息

寻求帮助、提交错误报告和贡献代码

您可以在以下方式中

引用 平衡

待办事项:待定。

许可证

平衡 软件包遵循GPLv2许可协议,并且网站上的所有文档均遵循CC-BY

新闻

您可以关注我们的更新:

致谢/人员

平衡 软件包由来自核心数据科学团队(位于特拉维夫和波士顿)、Tal SarigTal GaliliSteve Mandala 的人员积极维护。

平衡 软件包是由许多人开发的,包括:Roee EilatTal GaliliDaniel HaimovichKevin LiouSteve MandalaAdam Obeng(初始内部Meta版本作者)、Tal SarigLuke SonnetSean TaylorBarak Yair Reif 等人。如果您过去参与了平衡的开发,请通过电子邮件联系我们,以便将其添加到该列表中。

《平衡》包由 Tal SarigTal GaliliSteve Mandala 在2022年末开源。

品牌设计由 Dana Beaty 完成,来自Meta AI设计和营销团队。有关标志文件,请参阅 此处

支持者