首页 > 编程语言 >【Python实战因果推断】53_因果推理概论3

【Python实战因果推断】53_因果推理概论3

时间:2024-07-24 19:56:26浏览次数:21  
标签:IsOnSales 变量 Python 模型 建模 53 BusinessSize 因果

目录

Causal Models


Causal Models

因果模型是一系列分配机制的集合,我们用符号来表示。在这个机制里,我使用u来代表模型外部的变量,也就是说,我不关心它们是如何生成的。而其他的变量则是我非常关注的,因此它们被纳入了模型之中。最后,存在函数f,用来描述一个变量如何映射到另一个变量上。以下面的因果模型为例:

在讨论因果关系时,直觉可以帮助我们理解基本的问题,但如果想要超越简单的直觉,就需要一些正式的符号表示。这将成为我们日常交流的语言,用来谈论因果性。你可以把它看作是我们与因果推理领域的同行共同使用的语言。

因果模型是由一系列的赋值机制构成的,用符号表示。在这些机制中,我用u来表示模型之外的变量,意味着我不对它们的生成过程作出任何声明。而其他的变量是我非常关注的,因此它们被包含在模型中。最后,存在函数f,用来将一个变量映射到另一个变量上。举个因果模型的例子:T\leftarrow f_t(u_t)\\Y\leftarrow f_y(T,u_y)

在第一个方程中,我表达的是u_t,一组我没有明确建模的变量(也称为外生变量),通过函数ft影响处理因素T。接下来,T与另一组我同样选择不建模的变量u_y一起,通过函数f_y共同影响结果Y。在最后一个方程中的u_y说明结果不仅仅由处理因素T单独决定,还有其他变量也在其中起作用,即使我选择不将它们纳入模型。把这个概念应用到销售的例子中,这意味着每周销量weekly_amount_sold受是否打折is_on_sale以及其它未指定的因素u共同影响。u的作用在于解释所有由它引起的、模型内变量尚未涵盖的变量变异——这些模型内的变量也被称为内生变量。在我的例子中,可以说降价是由某些因素导致的,这些因素可能是企业规模,也可能是什么别的东西,但它们并不在模型之内。

IsOnSales\leftarrow f_t(u_t)\\AmountSold\leftarrow f_y(IsOnSales,u_y)

我使用箭头符号而非等号,是为了明确指出因果关系的不可逆性。在传统代数中,等号意味着等式的两边可以互换,比如 Y = T + X 等价于 T = Y - X,但我并不想表达 T 导致 Y 的情况与 Y 导致 T 是等同的。尽管如此,出于书写便利,我有时还是会使用等号,不过你要记住,由于因果关系的不可逆性,处理因果模型时,你不能像在传统代数中那样随意变换等号两边的内容。

如果你想更明确地建模更多的变量,你可以将它们从u中分离出来,并在模型中给予考虑。比如,之前我提到价格大幅下调与不调价之间的巨大差异可能是因为规模较大的企业能够进行更激进的销售策略。在之前的模型中,BusinessSize(企业规模)并没有被明确地纳入模型。相反,它的影响被归结到一边,与u中的其他一切因素一样。但是,我可以将其明确地建模:

\begin{aligned} BusinessSize\leftarrow f_s(u_s) \\ IsOnSales\leftarrow f_t(BusinessSize,u_t) \\ AmountSold\leftarrow f_y\Big(IsOnSales,BusinessSize,u_y\Big) \end{aligned}

为了引入这个额外的内生变量,首先,我正在添加一个新的方程式来表示这个变量是如何形成的。接着,我将BusinessSize从ut中移除。也就是说,我不再把它当作模型外的一个变量,而是明确表示BusinessSize与一些其他我仍然选择不建模的外部因素共同影响IsOnSales。这正是形式化地编码了大企业更有可能降价的信念。最后,我也可以在最后一个方程中加入BusinessSize。这编码了大企业也卖得多的信念,换句话说,BusinessSize是治疗IsOnSales和结果AmountSold的共同原因。

由于这种建模方式可能对你来说是新的,将其与你可能更熟悉的东西联系起来是有益的。如果你来自经济学或统计学领域,你可能会习惯于另一种方式来建模相同的问题。

AmountSold_i=\alpha+\beta_1IsOnSales_i+\beta_2BusinessSize_i+e_i

起初看起来很不一样,但仔细检查后会发现前面的模型与你早先看到的模型非常相似。首先,注意它是如何取代前一个模型中的最后一个方程,并展开了fy函数,明确表明内生变量IsOnSales和BusinessSize是以线性和加性的方式组合形成结果AmountSold的。从这个意义上讲,这个线性模型比你之前看到的假设更多。可以说,它给变量之间的关系强加了一个函数形式。其次,你没有说关于独立(内生)变量IsOnSales和BusinessSize是如何形成的。最后,这个模型使用的是等号,而不是赋值操作符,但我们已经同意不必太在意这一点。

标签:IsOnSales,变量,Python,模型,建模,53,BusinessSize,因果
From: https://blog.csdn.net/qq_32146369/article/details/139691418

相关文章

  • 【Python实战因果推断】52_因果推理概论2
    目录AssociationandCausationTheTreatmentandtheOutcomeTheFundamentalProblemofCausalInferenceAssociationandCausation直观上,你大概明白为什么相关性并不等于因果性。如果有人告诉你顶级咨询能促使你的业务改善,你难免会持怀疑态度。你怎么能确定是咨询......
  • Python类与面向对象编程
    大家好!今天我们将探讨Python中的类及其在面向对象编程(OOP)中的应用。面向对象编程是一种编程范式,它使用“对象”来模拟现实世界的事务,使代码更加结构化和易于维护。在这篇文章中,我们将详细了解类和实例的概念、'self'关键字的作用、魔法函数的定义以及构造函数和析构函数的用......
  • Python基础入门(六)
    Python基础入门(六)一、本节目标掌握文件的概念和操作:文本文件、CSV文件综合案例:奖励富翁系统、汽车租聘系统二、文件介绍文件是计算机中用于存储数据的一种载体,一般存储在磁盘上文件通过以一定的格式和结构存储数据,可以包含文本、图像、音频、视频等各种类型的信息文件在......
  • Python 中 eval 与 exec 的相同点和不同点
    相同点在Python中,eval和exec都可以用来执行动态生成(dynamicallygenerated)的代码。两者在Python3中的函数声明基本相同,如下所示:eval(expression[,globals[,locals]])exec(object[,globals[,locals]])其中,输入参数中,globals必须是字典(dict)类型,表示全局空间的变量,......
  • Python获取list中指定元素索引的两种方法
    在平时开发过程中,经常遇到需要在数据中获取特定的元素的信息,如到达目的地最近的车站,橱窗里面最贵的物品等等。怎么办?看下面方法一:利用数组自身的特性list.index(target),其中a是你的目标list,target是你需要的下标对应的值li=[10,8,9,26,72,6,28]print(li.index(8))但是,......
  • Python模块重载的五种方法
    1.环境准备新建一个foo文件夹,其下包含一个bar.py文件$treefoofoo└──bar.py0directories,1filebar.py的内容非常简单,只写了个print语句print("successfultobeimported")只要bar.py被导入一次,就被执行一次print2.禁止重复导入'由于有sys.module......
  • Python打印类的属性
    一、使用__dict__打印类的属性classPerson:def__init__(self,name,age):self.name=nameself.age=ageperson=Person("Tom",18)print(person.__dict__)使用__dict__方法可以直接打印出类的属性及其对应的值。上述代码中,我们首先定义了一个P......
  • 什么是Python中的闭包与装饰器
    1.闭包闭包(Closure)是指在一个函数内部定义的函数,并且这个内部函数可以访问其外部函数作用域中定义的变量。在Python中,闭包是一个强大且灵活的编程工具,可以实现许多有趣和实用的功能。让我们通过一个简单的示例来说明闭包的基本概念:defouter_function(x):definner_f......
  • Python-无ABI文件打包EVM合约方法名及参数方法
    #pipinstalleth-abiimporteth_abi#pipinstallsafe-pysha3fromsha3importkeccak_256defkeccak_256_hash(data:str)->bytes: k=keccak_256() k.update(data.encode()) returnk.digest()defpack_abi_data(method:str=None,params:list=No......
  • pycharm配置及python环境相关配置
     python虚拟环境不同项目依赖的第三方包的版本可能不一样,这样一个环境就没法同时开发不同的项目,所以需要创建不同的虚拟环境virtualenv用户创建独立的python环境,多个python项目互相独立互不影响安装方法pipinstallvirtualenv创建虚拟环境virtualenvvenv会......