python虽然与R一样都可以做数据分析,但是在计量方面较为薄弱,python更像是干脏活,清洗数据用的。现在慢慢的python也有一些在计量的包,比如causalinference,这个包可以做因果推断分析。
!pip3 install causalinference
Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
Collecting causalinference
Downloading https://pypi.tuna.tsinghua.edu.cn/packages/dc/7f/4504b42ef5a1158075954f54d08b95b2d5b2186da0ef9fcbcd0cf31411f2/CausalInference-0.1.3-py3-none-any.whl (51 kB)
[K |████████████████████████████████| 51 kB 81 kB/s eta 0:00:0101
[?25hInstalling collected packages: causalinference
Successfully installed causalinference-0.1.3
import pandas as pd
df = pd.read_csv('data.csv')
from causalinference import CausalModel
Y = df['y'].values
D = df['istreatment'].values
X = df[['x1', 'x2', 'x3']].values
#CausalModel参数依次为Y, D, X。其中Y为因变量
causal = CausalModel(Y, D, X)
causal
<causalinference.causal.CausalModel at 0x13b9348d0>
描述性统计分析
print(causal.summary_stats)
Summary Statistics
Controls (N_c=2509) Treated (N_t=2491)
Variable Mean S.d. Mean S.d. Raw-diff
--------------------------------------------------------------------------------
Y -1.012 1.742 4.978 3.068 5.989
Controls (N_c=2509) Treated (N_t=2491)
Variable Mean S.d. Mean S.d. Nor-diff
--------------------------------------------------------------------------------
X0 -0.343 0.940 0.336 0.961 0.714
X1 -0.347 0.936 0.345 0.958 0.730
X2 -0.313 0.940 0.306 0.963 0.650
causal.summary_stats含有的指标字段名
causal.summary_stats.keys()
dict_keys(['N', 'K', 'N_c', 'N_t', 'Y_c_mean', 'Y_t_mean', 'Y_c_sd', 'Y_t_sd', 'rdiff', 'X_c_mean', 'X_t_mean', 'X_c_sd', 'X_t_sd', 'ndiff'])
使用OLS估计处置效应
估计处置效应最简单的方法是使用OLS方法,
CausalModel.est_via_ols(adj)
该方法有一个参数adj
causal.est_via_ols(adj=2)
print(causal.estimates)
Treatment Effect Estimates: OLS
Est. S.e. z P>|z| [95% Conf. int.]
--------------------------------------------------------------------------------
ATE 3.017 0.034 88.740 0.000 2.950 3.083
ATC 2.031 0.040 51.183 0.000 1.953 2.108
ATT 4.010 0.039 103.964 0.000 3.934 4.086
ATE 平均处置效应(average treatment effect)
ATC 控制组的平均处置效应(average treatment effect for the controls)
ATT 处置组的平均处置效应(average treatment effect for the treated)
你们再试试adj设置为0和1分别运行出什么结果
倾向得分估计
我们估计处置效应时,很希望处置组和控制组很类似。比如研究受教育水平对个人收入的影响,其他变量如家庭背景、年龄、地区等协变量存在差异,我们希望控制组和处置组的之间的协变量平衡性尽可能的好,这样两个组就会很像,当对这两个组的受教育水平进行操作时,两个组的收入差异可以认为是受教育水平带来的。
让两个组很像,这里就用到倾向得分估计。
causal.est_propensity_s()
print(causal.propensity)
Estimated Parameters of Propensity Score
Coef. S.e. z P>|z| [95% Conf. int.]
--------------------------------------------------------------------------------
Intercept 0.005 0.035 0.145 0.885 -0.063 0.073
X1 0.999 0.041 24.495 0.000 0.919 1.079
X0 1.000 0.041 24.543 0.000 0.920 1.080
X2 0.933 0.040 23.181 0.000 0.855 1.012
分层方法估计处置效应
倾向得分估计,让两个组尽量相似,但实际上这个相似值范围有点大。比如假设受教育水平对个人收入的影响,身高、体重等颜值信息(协变量)其实对收入也是有影响的,那么就应该对人群进行分层,不同颜值水平(分组)下受教育水平对个人收入的影响。
分层方法估计CausalModel.stratify_s() 自动选择协变量
causal.stratify_s()
print(causal.strata)
Stratification Summary
Propensity Score Sample Size Ave. Propensity Outcome
Stratum Min. Max. Controls Treated Controls Treated Raw-diff
--------------------------------------------------------------------------------
1 0.001 0.043 153 5 0.024 0.029 -0.049
2 0.043 0.069 148 8 0.056 0.059 0.142
3 0.070 0.118 283 29 0.093 0.092 0.953
4 0.119 0.178 268 45 0.147 0.147 1.154
5 0.178 0.240 247 65 0.208 0.210 1.728
6 0.240 0.361 451 174 0.299 0.300 2.093
7 0.361 0.427 196 117 0.393 0.395 2.406
8 0.427 0.499 153 159 0.465 0.464 2.868
9 0.499 0.532 82 75 0.515 0.515 2.973
10 0.532 0.568 65 91 0.551 0.553 3.259
11 0.568 0.630 114 198 0.600 0.601 3.456
12 0.630 0.758 180 445 0.693 0.696 3.918
13 0.758 0.818 77 236 0.787 0.789 4.503
14 0.818 0.876 57 255 0.845 0.849 4.937
15 0.876 0.933 23 289 0.904 0.904 5.171
16 0.933 0.998 12 300 0.957 0.963 6.822
更多详细信息可阅读代码中说明论文,可在项目中下载到的。
Python网络爬虫与文本数据分析(视频课)
pandas 1.0最新版本特性抢先看
用python帮你生产指定内容的word文档
Modin:一行代码让pandas加速数十倍
2020年B站跨年晚会弹幕内容分析
综述:文本分析在市场营销研究中的应用
Lazy Prices公司年报内容变动碰上股价偷懒
使用pandas做数据可视化
用statsmodels库做计量分析
YelpDaset: 酒店管理类数据集10+G
NRC词语情绪词典和词语色彩词典
Loughran&McDonald金融文本情感分析库
股评师分析报告文本情感分析预测股价
使用分析师报告中含有的情感信息预测上市公司股价变动
【公开视频课】Python语法快速入门
【公开视频课】Python爬虫快速入门
一行pandas代码生成哑变量
使用Python读取图片中的文本数据
代码不到40行的超燃动态排序图
jupyter notebook代码获取方式,公众号后台回复关键词“2020205”
因果关系此软件包包含
使用观察(而非实验)数据集进行
因果分析的工具。
安装假设您已经安装了pip,只需运行pip install
causality
因果分析
因果关系此软件包包含
使用观察(而非实验)数据集进行
因果分析的工具。
安装假设已经安装了pip,只需运行pip install
causality原因分析该包最简单的接口可能是通过
causality.analysis.
CausalDataFrame中的
CausalDataFrame对象。
这只是pandas.DataFrame对象的扩展,因此它继承了相同的方法。
CausalDataFrame当前支持两种
因果分析
探索因果推理与发现:利用Python开启机器学习新篇章
项目地址:https://gitcode.com/PacktPublishing/Causal-Inference-and-Discovery-in-Python
在这个数据驱动的世界中,理解并预测行为的原因比仅仅依赖统计关系更为重要。这就是《Causal Inference and Discovery in Python》一书的精髓所在,它...
推荐开源项目:Python中的因果推断库 —— CausalInference
CausalinferenceCausal Inference in Python项目地址:https://gitcode.com/gh_mirrors/ca/Causalinference 项目介绍
在数据科学的广阔领域中,因果推断是一个至关重要的分支。CausalInference 是一个由Laurence Wo...
因果推论分析可以根据实际的非实验性观察数据估算干预对某些结果的
因果效应。
该软件包在统一的scikit-learn启发式API下提供了一组
因果方法。 它实现了允许插入任意复杂的机器学习模型的元算法。 这种模块化方法支持高度灵活的
因果建模。 类似于拟合和预测的API使得可以训练一组示例并估计对另一组示例的影响(“袋外”),从而可以更“诚实”地进行1效果估计。
该软件包还包括一个评估套件。 由于大多数
因果模型在内部利用机器学习模型,因此我们可以通过从
因果角度重新解释已知的机器学习评估来诊断性能不佳的模型。 如果您在科学背景下
使用它,请考虑引用 :
@article {
causalevaluations ,
title = { An Evaluation Toolkit to Guide M
odel Selec
1.背景介绍
因果推断是一种从观察数据中推断因果关系的方法,它在过去几年中逐渐成为人工智能和机器学习领域的一个热门话题。因果推断可以帮助我们更好地理解数据之间的关系,从而更好地进行预测和决策。然而,因果推断也是一种复杂的问题,需要深入了解其核心概念和算法原理。
在本文中,我们将从以下几个方面进行探讨: