【python因果推断库1】协方差分析(ANCOVA)用于处理前/后非等效组设计

目录

生成合成数据

 分析


这是一个基于合成数据的初步示例。希望不久之后能用真实研究的数据进行更新。
在只有一次预处理测量和一次后处理测量的情况下,我们可以使用类似于协方差分析(ANCOVA)的方法来分析非等效组设计(NEGD)实验的数据。基本模型是:

post_i=\beta_0+(\beta_1\cdot T_i)+(\beta_2\cdot pre_i)+\epsilon_i

i指第i个样本,T_{i}指给样本i的treatment,pre_{i}是pre treatment,post_{i}是post treatment,\beta_{0}是一个截距项。非零值表示未经处理组随时间的变化,\beta_{1}是斜率。\epsilon_{i}是残差。

import matplotlib.pyplot as plt
import seaborn as sns

import causalpy as cp
%load_ext autoreload
%autoreload 2
%config InlineBackend.figure_format = 'retina'
seed = 42

生成合成数据

df = cp.load_data("anova1")
df.head()

让我们以两种不同的方式来可视化这些数据。

_, ax = plt.subplots(1, 2, figsize=(11, 5))

# ANCOVA plot
ax[0].axline((7, 7), (15, 15), color="k")
sns.scatterplot(x="pre", y="post", hue="group", alpha=0.5, data=df, ax=ax[0])
ax[0].set_title("ANCOVA style plot")

# Difference-in-difference plot
df_did = df.assign(unit=lambda x: x.index).melt(
    id_vars=["group", "unit"], var_name="time", value_name="value"
)
sns.lineplot(
    df_did,
    x="time",
    y="value",
    hue="group",
    units="unit",
    estimator=None,
    alpha=0.25,
    ax=ax[1],
)
ax[1].set_title("Difference-in-difference style plot");

左侧的图对于进行类似协方差分析 (ANCOVA) 的分析最为相关。预处理测量和后处理测量分别位于 x 轴和 y 轴上。这张图展示了以下几点:

- 控制组的预处理测量值低于处理组,这与我们有非随机分配单位到处理组和控制组的想法一致。
- 控制组的点落在单位线上,表明控制组未受到处理的影响。
- 处理组在后处理得分上更高,这一点通过它们位于单位线之上的点显示出来。因此,从视觉上看,我们怀疑处理导致了结果指标的增加。
- 当然,可能有许多不同的结果模式,但我们可以通过同样的方法快速地对数据进行直观解释。

右侧的图展示的是完全相同的数据,但以一种清晰展示其与差分-in-差分 (Difference-in-Differences, DID) 分析方法相似的方式绘制。这里我们不再深入探讨差分-in-差分分析,更多相关信息可以参考差分-in-差分的例子。

 分析

result = cp.pymc_experiments.PrePostNEGD(
    df,
    formula="post ~ 1 + C(group) + pre",
    group_variable_name="group",
    pretreatment_variable_name="pre",
    model=cp.pymc_models.LinearRegression(sample_kwargs={"random_seed": seed}),
)

fig, ax = result.plot()

result.summary()
==================Pretest/posttest Nonequivalent Group Design===================
Formula: post ~ 1 + C(group) + pre

Results:
Causal impact = 1.9, $CI_{94%}$[1.7, 2.1]
Model coefficients:
  Intercept    	-0.48, 94% HDI [-1.2, 0.23]
  C(group)[T.1]	1.9, 94% HDI [1.7, 2.1]
  pre          	1, 94% HDI [0.98, 1.1]
  sigma        	0.51, 94% HDI [0.46, 0.56]
  • 14
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

水木流年追梦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值