当前位置: 首页 > news >正文

【因果推断python】32_合成控制2

目录

合成控制作为线性回归的一种实现​编辑


合成控制作为线性回归的一种实现

为了估计综合控制的治疗效果,我们将尝试构建一个类似于干预期之前的治疗单元的“假单元”。然后,我们将看到这个“假单位”在干预后的表现。合成控制和它所模仿的单位之间的区别在于治疗效果。

要使用线性回归做到这一点,我们将使用 OLS 找到权重。我们将最小化干预前期间供体池中单位的加权平均值与治疗单位之间的平方距离。

为此,我们需要的第一件事是将单位(在我们的例子中为状态)转换为列,将时间转换为行。由于我们有 2 个功能,cigsale 和 retprice,我们将它们堆叠在一起,就像我们在上图中所做的那样。我们将建立一个在干预前看起来很像加利福尼亚的合成控制,并看看它在干预后的表现如何。出于这个原因,重要的是我们只选择干预前的时期。在这里,这些功能似乎具有相似的规模,因此我们不会对它们做任何事情。如果特征的比例不同,一个是千位,另一个是小数,在最小化差异时,较大的特征将是最重要的。为避免这种情况,首先对它们进行扩展很重要。

features = ["cigsale", "retprice"]inverted = (cigar.query("~after_treatment") # filter pre-intervention period.pivot(index='state', columns="year")[features] # make one column per year and one row per state.T) # flip the table to have one column per stateinverted.head()

现在,我们可以将 Y 变量定义为加利福尼亚州,将 X 定义为其他州。

y = inverted[3].values # state of california
X = inverted.drop(columns=3).values  # other states

然后,我们运行回归。 有一个截距相当于添加另一个状态,其中每一行都是 1。你可以这样做,但我认为它更复杂,我就省略了。 回归将返回一组权重,以最小化治疗单位与供体池中单位之间的平方差。

from sklearn.linear_model import LinearRegression
weights_lr = LinearRegression(fit_intercept=False).fit(X, y).coef_
weights_lr.round(3)array([-0.436, -1.038,  0.679,  0.078,  0.339,  1.213,  0.143,  0.555,-0.295,  0.052, -0.529,  1.235, -0.549,  0.437, -0.023, -0.266,-0.25 , -0.667, -0.106, -0.145,  0.109,  0.242, -0.328,  0.594,0.243, -0.171, -0.02 ,  0.14 , -0.811,  0.362,  0.519, -0.304,0.805, -0.318, -1.246,  0.773, -0.055, -0.032])

这些权重向我们展示了如何构建合成控制。 我们将状态 1 的结果乘以 -0.436,状态 2 的结果乘以 -1.038,状态 4 的结果乘以 0.679,依此类推。 我们可以通过池中状态的矩阵和权重之间的点积来实现这一点。

calif_synth_lr = (cigar.query("~california").pivot(index='year', columns="state")["cigsale"].values.dot(weights_lr))

现在我们有了合成控制,我们可以用加利福尼亚州的结果变量来绘制它。

plt.figure(figsize=(10,6))
plt.plot(cigar.query("california")["year"], cigar.query("california")["cigsale"], label="California")
plt.plot(cigar.query("california")["year"], calif_synth_lr, label="Synthetic Control")
plt.vlines(x=1988, ymin=40, ymax=140, linestyle=":", lw=2, label="Proposition 99")
plt.ylabel("Gap in per-capita cigarette sales (in packs)")
plt.legend();

好吧……似乎有些不对劲。这张照片中什么吸引了你的注意力?首先,干预后,合成控制的卷烟销量超过了加州。这表明干预措施成功地降低了卷烟需求。其次,注意干预前的时期是如何完美拟合的。合成控制能够与加利福尼亚州完全匹配。这表明我们的综合控制模型可能过度拟合数据。另一个迹象是干预后综合控制结果变量的巨大差异。注意它是如何不遵循平滑模式的。相反,它会上下波动。

如果我们思考为什么会发生这种情况,请记住我们的供体池中有 38 个州。因此,我们的线性回归有 38 个参数可供使用,以使预处理池与处理尽可能接近。在这种情况下,即使 T 很大,N 也很大,这给我们的线性回归模型提供了太多的灵活性。如果您熟悉正则化模型,可以使用 Ridge 或 Lasso 回归来解决此问题。在这里,我们将研究另一种更传统的避免过拟合的方法。

相关文章:

【因果推断python】32_合成控制2

目录 合成控制作为线性回归的一种实现​编辑 合成控制作为线性回归的一种实现 为了估计综合控制的治疗效果,我们将尝试构建一个类似于干预期之前的治疗单元的“假单元”。然后,我们将看到这个“假单位”在干预后的表现。合成控制和它所模仿的单位之间的…...

Linux-笔记 全志平台OTG虚拟 串口、网口、U盘笔记

前言: 此文章方法适用于全志通用平台,并且三种虚拟功能同一时间只能使用一个,原因是此3种功能都是内核USB Gadget precomposed configurations的其中一个选项,只能单选,不能多选,而且不能通过修改配置文件去…...

Qt实现SwitchButton滑动开关按钮组件

概述 使用Qt如何制作一个滑动开关按钮,同类的文章和代码网上很多,但很多都是pyqt编写的,也有c编写的,大家可以参考. 我这里主要是实现了一个滑动按钮,富有滑动动画和文字,话不多说,上代码 自定义…...

C++进阶:继承

文章目录 继承的概念继承的定义方式继承关系和访问限定符基类和派生类对象的赋值转换继承中的作用域派生类中的默认成员函数构造函数拷贝构造函数赋值拷贝函数析构函数 总结 继承的概念 继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允…...

SFTP工具

SFTP工具 工具类配置类调用 工具类 Slf4j Component public class SFTPUtils {Resourceprivate SftpConfig sftpConfig;Session session null;Channel channel null;/*** 网络图片url** param fileUrl* throws JSchException*/public String uploadFileSFTP(String fileUrl) …...

服务器数据恢复—vxfs文件系统元数据被破坏的数据恢复案例

服务器存储数据恢复环境: 某品牌MSA2000服务器存储中有一组由8块SAS硬盘组建的raid5磁盘阵列,其中包含一块热备盘。分配了6个LUN,均分配给HP-Unix小机使用。磁盘分区由LVM进行管理,存放的数据主要为Oracle数据库及OA服务端。 服务…...

【SCAU数据挖掘】数据挖掘期末总复习题库简答题及解析——上

1.K-Means 假定我们对A、B、C、D四个样品分别测量两个变量,得到的结果见下表。 样品 变量 X1X2 A 5 3 B -1 1 C 1 -2 D -3 -2 利用K-Means方法将以上的样品聚成两类。为了实施均值法(K-Means)聚类,首先将这些样品随意分成两类(A、B)和(C、…...

云时代的Java:在云环境中实施Java的最佳实践

引言 云计算已经成为现代软件开发不可或缺的一部分,它提供了灵活性、可扩展性和成本效益。对于Java开发者来说,掌握在云环境中部署和管理Java应用的最佳实践是至关重要的。本文将探讨一些关键策略,帮助你最大化Java在云平台上的性能和效率。…...

STL - 常用算法

概述&#xff1a; 算法主要是由头文件<algorithm><functional><numeric>组成<algorithm>是所有STL头文件中最大的一个&#xff0c;范围涉及比较、 交换、查找、遍历操作、复制、修改等等<numeric>体积很小&#xff0c;只包括几个在序列上面进行…...

Qt | QTextStream 类(文本流)

01、字符编码 1、怎样将字符转换为二进制形式进行存储,存在一个编码的问题,通常都需进行两次编码, 2、字符集:字符的第一次编码是将字符编码为与一个数值(如一个 10 进制整数)相对应,比如把字符 A 编码为 10 进制的 65,B 编码为 66 等。把每一个字符都编码为与一个数值…...

Python学习笔记7:入门知识(七)

前言 之前说过我更换了新的学习路线&#xff0c;现在是根据官方文档和书籍Python crash course来进行学习的&#xff0c;在目前的学习中&#xff0c;对于之前的知识有一些遗漏&#xff0c;这里进行补充。 学习资料有两个&#xff0c;书籍中文版PDF&#xff0c;关注我私信发送…...

如何翻译和本地化游戏?翻译访谈

如何翻译和本地化游戏&#xff1f;这个过程的技术细节有哪些&#xff1f;游戏翻译不同于电影翻译。Logrus IT游戏本地化部门负责人阿列克谢费奥多罗夫&#xff08;Alexey Fedorov&#xff09;在接受RUDN语言学系外语系教授和研究人员的采访时谈到了这一点&#xff0c;他是由尤利…...

[C++] 从零实现一个ping服务

&#x1f4bb;文章目录 前言ICMP概念报文格式 Ping服务实现系统调用函数具体实现运行测试 总结 前言 ping命令&#xff0c;因为其简单、易用等特点&#xff0c;几乎所有的操作系统都内置了一个ping命令。如果你是一名C初学者&#xff0c;对网络编程、系统编程有所了解&#xff…...

2024网络安全学习路线 非常详细 推荐学习

关键词&#xff1a;网络安全入门、渗透测试学习、零基础学安全、网络安全学习路线 首先咱们聊聊&#xff0c;学习网络安全方向通常会有哪些问题 1、打基础时间太长 学基础花费很长时间&#xff0c;光语言都有几门&#xff0c;有些人会倒在学习 linux 系统及命令的路上&#…...

STM32F103ZET6_HAL_CAN

1定义时钟 2定义按键 按键上拉电阻 3开启串口 4打开CAN&#xff08;具体什么意思上一篇讲了&#xff09; 5生成代码 /* USER CODE BEGIN Header */ /********************************************************************************* file : main.c* brief …...

javaWeb项目-ssm+vue网上租车系统功能介绍

本项目源码&#xff1a;java-基于ssmvue的网上租车系统源码说明文档资料资源-CSDN文库 项目关键技术 开发工具&#xff1a;IDEA 、Eclipse 编程语言: Java 数据库: MySQL5.7 框架&#xff1a;ssm、Springboot 前端&#xff1a;Vue、ElementUI 关键技术&#xff1a;springboot、…...

Go模板页面浏览器显示HTML源码问题

<!--* Title: This is a file for ……* Author: JackieZheng* Date: 2024-06-09 17:00:01* LastEditTime: 2024-06-09 17:01:12* LastEditors: Please set LastEditors* Description:* FilePath: \\GoCode\\templates\\index.html --> <!DOCTYPE html> <html …...

弃用Docker Desktop:在WSL2中玩转Docker之Docker Engine 部署与WSL入门

Docker技术概论 在WSL2中玩转Docker之Docker Engine部署 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite&#xff1a;http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of this article:https://bl…...

Mac下载了docker,在终端使用docker命令时用不了

问题&#xff1a;在mac使用docker的时候&#xff0c;拉取docker镜像失败 原因&#xff1a;docker是需要用app使用的 &#xff0c;所以在使用的时候必须打开这个桌面端软件才可以在终端上使用docker命令&#xff01;&#xff01;&#xff01;...

Spring Security——基于MyBatis

目录 项目总结 新建一个项目 pom.xml application.properties配置文件 User实体类 UserMapper映射接口 UserService访问数据库中的用户信息 WebSecurityConfig配置类 MyAuthenticationFailureHandler登录失败后 MyAuthenticationSuccessHandlerw登录成功后 WebSecur…...

Qt——升级系列(Level Four):控件概述、QWidget 核心属性、按钮类控件

目录 控件概述 QWidget 核心属性 核心属性概览 enabled geometry windowTitle windowIcon windowOpacity cursor font toolTip focusPolicy styleSheet 按钮类控件 Push Button Radio Buttion Check Box Tool Button 控件概述 Widget 是 Qt 中的核⼼概念. 英⽂原义是 "…...

品质卓越为你打造App UI 风格

品质卓越为你打造App UI 风格...

ei期刊和sci期刊的区别

ei期刊和sci期刊的区别 ei期刊和sci期刊的区别是什么?Sci和ei都属于国际期刊的一种&#xff0c;但是二者之间存在一些区别&#xff0c;选择期刊投稿时需要注意这些区别。EI期刊刊物的审查周期短&#xff0c;SCI学术期刊的审查期长。难度要求不同&#xff0c;SCI期刊比EI期刊对…...

从零手写实现 nginx-20-placeholder 占位符 $

前言 大家好&#xff0c;我是老马。很高兴遇到你。 我们为 java 开发者实现了 java 版本的 nginx https://github.com/houbb/nginx4j 如果你想知道 servlet 如何处理的&#xff0c;可以参考我的另一个项目&#xff1a; 手写从零实现简易版 tomcat minicat 手写 nginx 系列 …...

leetcode290:单词规律

题目链接&#xff1a;290. 单词规律 - 力扣&#xff08;LeetCode&#xff09; class Solution { public:bool wordPattern(string pattern, string s) {unordered_map<char, string> s2t;unordered_map<string, char> t2s;int len pattern.size();int CountSpace…...

IDEA 2022

介绍 【尚硅谷IDEA安装idea实战教程&#xff08;百万播放&#xff0c;新版来袭&#xff09;】 jetbrains 中文官网 IDEA 官网 IDEA 从 IDEA 2022.1 版本开始支持 JDK 17&#xff0c;也就是说如果想要使用 JDK 17&#xff0c;那么就要下载 IDEA 2022.1 或之后的版本。 公司…...

Vue TypeScript 实战:掌握静态类型编程

title: Vue TypeScript 实战&#xff1a;掌握静态类型编程 date: 2024/6/10 updated: 2024/6/10 excerpt: 这篇文章介绍了如何在TypeScript环境下为Vue.js应用搭建项目结构&#xff0c;包括初始化配置、创建Vue组件、实现状态管理利用Vuex、配置路由以及性能优化的方法&#x…...

Hudi extraMetadata 研究总结

前言 研究总结 Hudi extraMetadata ,记录研究过程。主要目的是通过 extraMetadata 保存 source 表的 commitTime (checkpoint), 来实现增量读Hudi表写Hudi表时,保存增量读状态的事务性,实现类似于流任务中的 exactly-once 背景需求 有个需求:增量读Hudi表关联其他Hudi…...

Vue31-自定义指令:总结

一、自定义函数的陷阱 1-1、自定义函数名 自定义函数名&#xff0c;不能用驼峰式&#xff01;&#xff01;&#xff01; 示例1&#xff1a; 示例2&#xff1a; 1-2、指令回调函数的this 【回顾】&#xff1a; 所有由vue管理的函数&#xff0c;里面的this直接就是vm实例对象。…...

Windows环境如何使用Flutter Version Manager (fvm)

Windows环境如何使用Flutter Version Manager (fvm) Flutter Version Manager (fvm) 是一个用于管理多个 Flutter SDK 版本的命令行工具&#xff0c;它允许开发者在不同项目之间轻松切换 Flutter 版本。这对于需要维护多个使用不同 Flutter 版本的项目的开发人员来说非常有用。…...

页游网站建设/新闻软文发稿平台

InitializingBean 记住一点&#xff1a;InitializingBean接口为bean提供了初始化方法的方式&#xff0c;它只包括afterPropertiesSet方法&#xff0c;凡是继承该接口的子类&#xff0c;在初始化bean的时候会执行该方法。 下面看下简单的例子&#xff1a;&#xff08;环境是用…...

asp.net mvc 手机网站/杭州千锋教育地址

ReentrantLock&#xff1a; 表示重入锁&#xff0c;它是唯一一个实现了 Lock 接口的类。重入锁指的是线程在获得锁之后&#xff0c;再次获取该锁不需要阻塞&#xff0c;而直接关联一次计数器增加重入次数 ReentrantLock 重入锁 重入锁&#xff0c;表示支持重新进入的锁&…...

乘客电梯做推广的网站/哈尔滨seo推广优化

微信收款商业版小微商户是微信支付官方推出的收款综合经营工具&#xff0c;商户无需开发&#xff0c;一键开通&#xff0c;即刻拥有丰富的经营收款能力&#xff0c;并支持顾客使用信用卡支付。注&#xff1a;微信收款商业版开通后&#xff0c;商户可轻松管理&#xff0c;智慧经…...

深圳网站建设哪家最好/建站优化公司

本文演示如何在E-MapReduce上部署Storm集群和Kafka集群&#xff0c;并运行Storm作业消费Kafka数据。 环境准备 本文选择在杭州Region进行测试&#xff0c;版本选择EMR-3.8.0&#xff0c;本次测试需要的组件版本有&#xff1a; Kafka&#xff1a;2.11_1.0.0Storm: 1.0.1本文使用…...

平面设计找图网站/市场营销经典案例

简介&#xff1a; 后端&#xff1a;开发使用bootstrap框架&#xff0c;源码无加密&#xff0c;程序中预留位置 可拓展为支持创作者入驻取图小程序&#xff0c;接口使用json传送数据&#xff0c;未进行加密。 前端&#xff1a;三端程序使用uniapp开发&#xff0c;前端源码中仅…...

醴陵网站建设llwzjs/企业做个网站多少钱

一、软件及SSH keys&#xff1a; 由于我的Bitbucket账号的邮箱及用户名与Github相同&#xff0c;所以SSH Public Keys可以用Github的&#xff0c;登录Bitbucket&#xff0c;悬浮在用户名boliquan那里点击“Account”&#xff0c;点击左边的“SSH keys”即可进行设置 软件不用再…...