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

【Python实战因果推断】52_因果推理概论2

时间:2024-07-24 19:56:09浏览次数:19  
标签:销售量 Python 促销 52 处理 降价 企业 因果

目录

Association and Causation

The Treatment and the Outcome

The Fundamental Problem of Causal Inference


Association and Causation

直观上,你大概明白为什么相关性并不等于因果性。如果有人告诉你顶级咨询能促使你的业务改善,你难免会持怀疑态度。你怎么能确定是咨询公司真正促成了业务的提升,还是仅仅因为只有繁荣的企业才有能力聘请这些服务?

为了使事情更具体一点,设想你自己是一家在线市场公司的负责人。小型和中型企业使用你们的在线平台来宣传和销售产品。这些企业在诸如定价和促销时机等方面拥有完全自主权。但对你公司而言,这些企业的繁荣至关重要。因此,你决定通过给予指导来帮助他们,告诉他们如何、是否以及何时设立销售活动,即向消费者宣布暂时降价。要做到这一点,首先你需要了解的是降价对销售量的影响。如果增加的销量所带来的收益能够弥补低价销售的损失,那么促销活动就是个好主意。如果你还没注意到,这是一个因果问题。你需要回答的是,企业如果降价,相比不做任何改变,会多卖出多少额外的单位商品。

不用说,这是一个复杂的问题;也许对开头太复杂了。不同的企业在你的平台上运营。有的卖食品;有的卖衣物。有的卖化肥和农业用品。因此,降价可能对不同类型的企业有不同的影响。例如,对服装企业来说,在父亲节前一周宣布降价可能是个好主意。然而,类似的降价对农业企业可能几乎没什么效果。因此,让我们简化这个问题。让我们将注意力集中在一种类型的企业上:那些销售儿童玩具的企业。同时,让我们关注一年中的一个时期:圣诞节前的十二月。目前,你只尝试回答,在这些时期降价如何增加销售,这样你就可以将这些信息传递给儿童玩具行业的企业,让他们做出更好的决策。

为了决定促销是否是个好主意,你可以利用多个儿童玩具企业的信息。这些数据存储在一个pandas数据帧中供你访问。以下是前几行数据,以便你了解你正在处理的内容:

第一列是商店的唯一标识符(ID)。你拥有每个商店在十二月份的每周数据。你还有关于每个企业规模的信息,以当年每周平均销售的产品数量表示。一个布尔列(0或1)标记了该企业在当时是否正在进行促销活动。最后一列显示了该商店在那一周的平均每周销售额。

The Treatment and the Outcome

现在你已经有了一些数据可供分析,是时候学习我们的第一个技术要点了。让我们称 Ti​为单位i的处理:

T_i=\begin{cases}1\text{ if unit }i\text{ received the treatment}\\0\text{ otherwise}\end{cases}

这里的处理并不一定是指药物或医疗领域的任何东西。相反,它只是一个术语,我将用它来表示某种我想了解其效果的干预。在这个案例中,处理仅仅是在线平台内某家企业的一次降价,由is_on_sale列表示。

此外,我将把weekly_amount_sold(这里我想影响的变量)称为结果。我将用Yi​来表示单位i的结果。借助这两个新概念,我可以重新表述因果推断的目标,即学习处理T对结果Y的影响。在我们的例子中,这就相当于弄清楚is_on_sale对weekly_amount_sold的影响。

The Fundamental Problem of Causal Inference

这里问题变得有趣起来了。因果推断的根本问题在于,你无法在同一单位上同时观察到施加处理和未施加处理的情况。这就像是你面临两条分岔路,只能了解你选择走的那条路前方的情况。为了充分理解这个问题,让我们回到之前的例子,并绘制处理与结果的关系图,也就是根据is_on_sale来展示weekly_amount_sold。你可以立即发现,降价的商店销售量明显更高。

这也符合我们对世界运作方式的直觉:当价格低时,人们会购买更多,而促销(通常)意味着更低的价格。这是非常好的现象,因为因果推断与专家知识相辅相成。但你不能太过掉以轻心。给予折扣并加以宣传很可能会让顾客购买更多,但真的会多这么多吗?从图中可以看出,当有促销活动时,平均销售量似乎比没有促销时高出约150个单位。这听起来异常高,因为没有促销时的销售量范围大约在0到50个单位之间。如果你仔细思考,就会开始意识到你可能将关联性误认为因果性。可能只有大型企业,也就是本来就销售最多的企业,才能负担得起大幅度降价。也可能企业在接近圣诞节时进行促销,而这正是顾客购买最多的时期。

关键在于,只有当你能够在同一时间观察到同一个企业(单位),在有无促销的情况下,你才能确信降价对销售量的真实影响。只有比较这两种反事实的情况,你才能确定降价的效果。然而,正如前面讨论过的,因果推断的根本问题是,你根本无法做到这一点。相反,你需要想出其他办法。

标签:销售量,Python,促销,52,处理,降价,企业,因果
From: https://blog.csdn.net/qq_32146369/article/details/139638709

相关文章

  • 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......
  • 2024年全国职业院校(中职组)技能大赛(ZZ052大数据应用与服务)持续更新中!
    2024年职业院校中职组ZZ052大数据应用与服务赛项赛题第01套【子任务一:基础环境准备】##模块一:平台搭建与运维(一)任务一:大数据平台搭建本模块需要使用root用户完成相关配置;所有组件均在/root/software目录下。1.子任务一:基础环境准备master、slave1、slave2......
  • 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会......