【Python实战因果推断】30_双重差分1

目录

Panel Data


在讨论了干预效果异质性之后,是时候转换一下思路,回到平均干预效果上来了。在接下来的几章中,您将学习如何利用面板数据进行因果推断。

面板数据是一种跨时间重复观测的数据结构。在多个时间段观察同一单位,可以了解同一单位在干预前后的情况。这就使得面板数据成为在无法进行随机化时确定因果效应的一种有前途的替代方法。当你有观察性(非随机)数据,并且可能存在未观察到的混杂因素时,面板数据方法是正确识别干预效果的最佳方法。

在本章中,你将了解为什么面板数据对因果推断如此重要。然后,您将学习最著名的面板数据因果推理估计器:双重差分及其多种变体。为了保持趣味性,所有这些都将在计算离线营销活动效果的背景下进行。

Panel Data

为了激发对面板数据的使用,我将主要谈谈因果推理在市场营销中的应用。市场营销之所以特别有趣,是因为它在进行随机实验方面存在众所周知的困难。在市场营销中,你往往无法控制谁会接受干预,也就是说,谁会看到你的广告。当一个新用户访问您的网站或下载您的应用程序时,您无法很好地知道该用户是因为看到了您的广告活动还是因为其他原因。即使您知道客户点击了您的某个营销链接,也很难判断他们是否会购买您的产品。例如,如果客户点击了您赞助的谷歌链接,如果他们真的在寻找您的产品,他们也可能会向下滚动一下,然后点击未付费的链接。


线下营销的问题更大。你怎么知道在一个城市投放广告牌是否能带来超过成本的价值?因此,市场营销中常见的做法是进行地理实验:您可以在某些地理区域部署营销活动,而不在其他区域部署,然后进行比较。在这种设计中,面板数据方法尤其有趣:您可以在多个时间段内收集整个地域(单位)的数据。就像我说过的,面板数据是指在多个时间段 t 内有多个单位 i。在一些市场网站中,单位可能是人,t 可能是天或月。但单位并不一定是单个客户。例如,在线下营销活动中,i 可以是城市,您可以在这些城市放置产品广告牌。

下面的数据框 mkt_data 是一个面板格式的营销数据。每一行都是(日期、城市)的组合:

 import pandas as pd
 import numpy as np
 mkt_data = (pd.read_csv("./data/short_offline_mkt_south.csv")
 .astype({"date":"datetime64[ns]"}))
 mkt_data.head()

该数据框按日期和城市排序。您关心的结果变量是下载次数。由于 t 将用来表示时间,为了避免混淆,从现在起,我将用 D 来表示干预。另外,在面板数据文献中,处理通常被称为干预。我将交替使用这两个术语。在本例中,营销团队在 Di = 1 的城市发起了线下活动。至于时间维度,让我们确定 T 将是期间数,T_{pre} 是干预前的期间数。你可以把时间向量看作t=\left\{1,2,\ldots,T_{pre},T_{pre}+1,\ldots,T\right\}. 干预后的时间段 T_{pre}, ... . , T 被方便地称为干预后。为了简化符号,我通常使用 "后 "虚拟变量,当 t > T_{pre} 时为 1,否则为 0。

干预只发生在干预后时期(t > T_{pre})的治疗单位(D = 1)。干预和干预后的组合将用 W=D^{\star} \mathbb{1}\left(t>T_{pre}\right)W=D^{\star} Post 表示。下面是营销数据中的一个示例:

 (mkt_data
 .assign(w = lambda d: d["treated"]*d["post"])
 .groupby(["w"])
 .agg({"date":[min, max]}))

如您所见,干预前的时间段为 2021-05-01 至 2021-05-15,干预后的时间段为 2021-05-15 至 2021-06-01。

这个数据集还有一个 τ 变量来表示干预效果。由于该数据是模拟的,因此我很清楚该效应是什么。我把它包含在这个数据集中,只是为了让你检查一下,你将要学习的方法是否能很好地识别因果效应。但不要习惯它。在现实生活中,你不会有这样的奢侈。


现在,您对数据有了更好的了解,也学会了一些新的技术符号,您可以更准确地重述您的目标。您想了解线下营销活动在干预发生后对受干预城市的影响:

ATT=E\Big[Y_{it}(1)-Y_{it}(0)\Big|D=1,t>T_{pre}\Big]

这就是 ATT,因为您只想了解活动启动t>T_{pre} 后对 D = 1 的城市产生的影响。由于 Y_{it}(1) 是可观测的,因此您可以通过推算缺失的潜在结果 E[Y(0) | D=1,Post=1] 来实现这一目标。

图 显示了为什么用单位时间矩阵表示观察到的结果时,面板数据会变得特别有趣。该矩阵突出了这样一个事实,即只有在干预后的时间段内,才能观察到被干预单位的 \text{Y(1)},而对于所有其他单元,您可以观察到 \text{Y(0)}。尽管如此,这些单元仍可用于估计缺失的潜在结果E\Big[Y(0)\Big|D=1,t>T_{pre}\Big]。您可以通过使用干预后期间对照单元的结果来利用单元间的相关性,也可以通过使用干预前期间受治疗单元的结果来利用跨时间的相关性。

图 还说明了为什么在大多数面板数据应用中应该关注 ATT:对被处理单位的 \text{Y(0)} 进行推算要容易得多。如果您想要的是 ATC(对对照组的平均影响),则必须计算 \text{Y(1)}。但是,您只有一个单元格可以观察到该潜在结果。现在,您已经对面板数据有了简单的了解,是时候探索一些利用面板数据来识别和估计干预效果的机制了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/793620.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

347. 前 K 个高频元素(中等)

347. 前 K 个高频元素 1. 题目描述2.详细题解3.代码实现3.1 Python3.2 Java 1. 题目描述 题目中转:347. 前 K 个高频元素 2.详细题解 寻找出现频率前 k k k高的元素,因此需要先统计各个元素出现的次数,该步骤时间复杂度为 O ( n ) O(n) O(n)…

前端-Cookie篇

文章目录 一、由来什么是Cookie?特点Cookie的类型 二、原理三、Cookie生成机制客户端设置案例 四、属性五、缺陷最后分享一段自己工作中封装的一些关于cookie的公众方法✒️总结 前端Cookie是Web开发中非常重要的一部分,它是服务器发送到用户浏览器并保存…

如何识别图片文字转化为文本?5个软件帮助你快速提取图片文字

如何识别图片文字转化为文本?5个软件帮助你快速提取图片文字 将图片中的文字提取为文本是一项非常有用的技能,特别是当你需要处理大量扫描文档、截图或其他图片时。以下是五款能够帮助你快速提取图片文字的软件: 迅捷文字识别 这是一款非…

对接高德开放平台API

高德开放平台API: https://lbs.amap.com/ 一、天气查询 天气查询: https://lbs.amap.com/api/webservice/guide/api/weatherinfo adcode城市码表下载: https://lbs.amap.com/api/webservice/download Component public class WeatherUtil {Resourceprivate GdCon…

如何使用Python在企业微信中发送测试结果?操作看这里!

在日常的自动化测试工作中,一般会需要把测试结果同步到工作群里,方便信息同步。那么我们今天就使用企业微信和Pythonrequests库来演示一下具体如何操作吧! 01 准备 开始之前,我们应该确保已经安装了python环境,并且要…

【Java16】多态

向上类型转换 对于引用变量,在程序中有两种形态:一种是编译时类型,这种引用变量的类型在声明它的时候就决定了;另一种则是运行时类型,这种变量的类型由实际赋给它的对象决定。 当一个引用变量的编译时类型和运行时类…

LabVIEW电容器充放电监测系统

概述 为了对车用超级电容器的特性进行研究,确保其在工作时稳定可靠并有效发挥性能优势,设计了一套车用超级电容器充放电监测系统。该系统通过利用传感器、USB数据采集卡、可调直流稳压电源、电子负载以及信号调理电路,完成对各信号的采集和超…

jdevelope安装

准备 1.jdk1.8(已经安装不做记录) 2.下载jdevelope安装包 3.安装包安装jdevelope开发工具 4.创建或导入项目 下载jdevelope安装包 官网下载地址:https://edelivery.oracle.com 安装包安装jdevelope开发工具 cmd管理员权限运行安装脚本…

Codeforces Round 954 (Div. 3)(A~D题)

A. X Axis 思路: 1~10暴力枚举一下所有可能 代码: #include<bits/stdc.h> using namespace std; #define N 1000005 typedef long long ll; typedef unsigned long long ull; ll n, m, t, h, k; ll a, b, c; ll ans, num, sum, cnt; ll temp[N], f1[N], f2[N]; bool f…

Nature Communications|柔性无感智能隐形眼镜(柔性传感/可穿戴电子/柔性电子)

南京大学徐飞(Fei Xu)、陆延青(Yanqing Lu)、陈烨(Ye Chen)和江苏省人民医院袁松涛(Songtao Yuan)团队,在《Nature Communications》上发布了一篇题为“Frequency-encoded eye tracking smart contact lens for human–machine interaction”的论文。论文内容如下: 一、 摘…

科普文:一天学会shell编程

1.shell概叙 本文将从shell执行、语法、实战三个方面来讲解shell编程&#xff0c;其实shell编程就是个批处理&#xff0c;将你平时在服务器上单独执行的命令&#xff0c;按照一定要求组织起来&#xff0c;写在一起&#xff0c;然后统一执行&#xff0c;就完事了。 对于运维人员…

基于Android平台开发,仿头条新闻app

相关视频教程在某站上面(&#x1f50d;浩宇软件开发) 1. 项目模块功能思维导图 2. 项目涉及到的技术点 数据来源&#xff1a;聚合数据API使用okhttp网络请求框架获取api数据使用gson库解析json数据使用RecyclerViewadapter实现新闻列表使用SQLite数据库实现用户登录&#xff0…

【thingsbord源码编译】 显示node内存不足

编译thingsbord显示报错 FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory问题原因分析 重新安装java版本 编译通过

小程序多次扫描获取sence失败------ivx

扫码图片被告知侵权了&#xff0c;删除了&#xff0c;如果有需要的同学可以自己尝试。或者直接联系我。 在微信小程序里面有一个函数 wx.getEnterOptionsSync() 功能描述 获取本次小程序启动时的参数。如果当前是冷启动&#xff0c;则返回值与 App.onLaunch 的回调参数一致&am…

前端最全面试题【最新版本2024-7月】

文章目录 最常见问题javascript篇Javascript的运行机制javascript的数据类型怎样判断变量的类型数据类型转换闭包的优缺点v-if和v-for哪个优先级更高&#xff1f; 如果两个同时出现&#xff0c;应该怎么优化得到更好的性能&#xff1f;HTML5的新特性和CSS3的新特性div 上下居中…

SpringBoot注解--11--@JSONField @JsonProperty

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 一个问题&#xff1a;后端实体类isXXX开头的属性&#xff0c;传到前端后自动去掉is解决方法&#xff1a; JsonProperty和JSONField1.简介2.注解的区别2.1 底层框架不…

政安晨【零基础玩转各类开源AI项目】基于Ubuntu系统部署ComfyUI:功能最强大、模块化程度最高的Stable Diffusion图形用户界面和后台

目录 ComfyUI的特性介绍 开始安装 做点准备工作 在Conda虚拟环境中进行 依赖项的安装 运行 政安晨的个人主页&#xff1a;政安晨 欢迎 &#x1f44d;点赞✍评论⭐收藏 收录专栏: 零基础玩转各类开源AI项目 希望政安晨的博客能够对您有所裨益&#xff0c;如有不足之处&…

Rust vs Go: 特点与应用场景分析

目录 介绍Rust的特点Go的特点Rust的应用场景Go的应用场景总结 介绍 Rust和Go&#xff08;Golang&#xff09;是现代编程语言中两个非常流行的选择。凭借各自的独特优势和广泛的应用场景&#xff0c;吸引了大量开发者的关注。本文将详细介绍Rust和Go的特点&#xff0c;并探讨它…

【理解串】

目录 一、串的基本概念二、串的基本操作及实现三、串的存储实现3.1、静态数组实现3.2、动态数组实现 四、串的朴素模式匹配4.1、算法思想4.2、代码实现 五、KMP算法5.1、算法思想5.2、求模式串的next数组5.2、代码实现 一、串的基本概念 串&#xff1a;即字符串&#xff08;st…

一行命令快速导出、导入Python的依赖环境(Python)

文章目录 一、pip1、导出2、导入 二、Conda&#xff08;简&#xff09;1、导出1、导入 一、pip 1、导出 在Pycharm的Terminal窗口输入如下命令&#xff0c;即可将环境导出至文件requirements.txt。 pip freeze > C:\Users\sdl\Deskto\requirements.txt也可以在DOS界面执行…