因果分析:原理、方法论、应用

article/2025/5/10 21:48:30

什么是因果分析?

因果分析(Causal Analysis)是分析彼此之间的因果关系。

因果推断(Causal Inference)是基于原因推结果,是因果分析的一部分。

因果分析是数据分析、数据科学中重要的方法,广泛应用于A/B实验,异常分析,用户增长等领域。

本文尝试从宏观视角,用逻辑来推导因果分析的基础、原理、方法,应用的知识体系。

首先,介绍了因果分析的概念、要素和分类等基础知识;

接着,介绍了因果分析的A/B实验、鱼骨图分析等常见的因果分析方法的原理;

然后,介绍了A/B实验(策略调整)、异常分析(DAU下降)等因果分析方法的应用,并介绍了R、Python因果推断工具;

最后,对因果分析进行总结,指出因果分析的本质,介绍了因果关系与相关关系的区别,及发展趋势。

本文目录如下:

1. 因果分析基础
1.1. 因果分析的概念
1.2. 因果分析的要素
1.3. 因果分析的分类

2. 因果分析原理
2.1. A/B 实验的原理
2.2. 鱼骨图分析的原理

3. 因果分析应用
3.1. A/B 实验:策略调整
3.2. 异常分析:DAU下降
3.3. 因果推断工具

4. 因果分析总结
4.1. 因果分析的本质
4.2. 因果关系 VS 相关关系
4.3. 因果分析的发展趋势

接下来,让我们一起走进因果分析的世界,去尝试探讨因果分析的基础、原理、方法论和应用。

1. 因果分析基础

1.1. 因果分析的概念

因果是指原因和结果,因果关系则是原因和结果的关系。

什么是因果分析?

这里推荐知乎的一篇优秀文章:较清晰的描述了因果分析的概念:因果关系 - 知乎 (zhihu.com)https://zhuanlan.zhihu.com/p/555170435

因果分析是分析彼此之间的因果关系。

1.2. 因果分析的要素

原因可能是多个,导致的结果也可能是多个。

这里我们把问题聚焦,仅探讨抽象的因果关系,所以因果分析可以抽象如下:

因果分析的三要素是:原因、结果和关系。

1.3. 因果分析的分类

  • 按照因果分析的三要素,把因果分析分为三类:
  • 第一类:由原因推结果,又称为因果推断(Causal Inference);
  • 第二类:由结果找原因;
  • 第三类:原因和结果互推;

因果分析都有哪些方法?

因果分析三类典型代表方法如下表所示:

这里特别说明:因果推断(Causal Inference)是由原因推结果,又称因果推理,因果推断法,是因果分析的一类,在数据科学得到广泛应用,与机器学习结合越来越紧密。

2. 因果分析原理

互联网领域,A/B 实验、鱼骨图分析法是常用的因果分析方法,所以接下来重点阐述这两种方法的原理。

2.1. A/B 实验的原理

A/B 实验,也称 A/B 测试、A/B 试验,是一种随机对照实验,用于实验验证因果关系。

A/B 实验,是因果实验的代表,是因果归因、数据归因的主要手段。

A/B 实验是一种单因素归因,适用于验证单因素的因果关系。

2.2. 鱼骨图分析的原理

鱼骨图分析(Cause and Effect Analysis Chart,也称因果分析法)是典型的由结果找原因的方法。

鱼骨图分析法是对一个问题,分类别、穷举性地列出所有影响因素,进行进一步分析。

其中鱼头是结果(问题),大鱼骨是原因的类别,小鱼骨是具体原因。

鱼骨图分析适用于头脑风暴,寻找多个可能的原因。

3. 因果分析应用

接下来介绍一些因果分析的典型应用场景。

由原因推结果的A/B实验的应用;由结果找原因的异常分析的应用。

3.1. A/B 实验:策略调整

微软的调整页面颜色,提高点击率的A/B实验。

3.2. 异常分析:DAU下降

在异常分析中,异常是结果,找到导致异常的原因,并给出优化建议。

3.3. 因果推断工具

R、Python因果推断工具很多,比如Dowhy、Causal ML、EconML、causalToolbox等。更多因果推断工具、因果推断方法、因果推断模型可参考论文《A Survey on Causal Inference》以及关河因果产品:

新型数据分析产品_因果分析_关河因果【官网】 (grandhoo.com)https://yinguo.grandhoo.com/home

4. 因果分析总结

4.1. 因果分析的本质

因果分析的本质就是论证因果关系的充分性、必要性。

4.2. 因果关系 VS 相关关系

因果关系一定是相关关系,但相关关系不一定是因果关系。

4.3. 因果分析的发展趋势

个人觉得:

原因推结果这个方向,比如元分析(Meta-analysis)、因果推断机器学习;

结果找原因这个方向,比如破界创新。

关于破界创新的工业应用案例,可以参考《因果分析应用之破界创新:从结果到原因,再从原因到结果》。

https://zhuanlan.zhihu.com/p/539417288

参考文献:

总结:

《精益数据分析》作者认为:"发现相关性可以帮助你预测未来,而发现因果关系意味着你可以改变未来",所以重视因果关系,重视因果分析吧。

因果分析可以定位问题,挖掘商业价值,洞见机会,在互联网领域有广泛的应用,比如因果推断、A/B实验、用户增长、异常分析和流失分析等。

但是商业是个复杂生态,因果分析是个很好的分析工具,还要结合具体的用户、业务、数据进行针对性的分析。

结束语:

由于个人的经历、能力和水平是有限的,我的可能是片面的,也可能是错的,这里抛砖引玉。

由于个人的经历、能力和水平是有限的,我的可能是片面的,也可能是错的

理论本身是务虚的,需要实践、实践、再实践。可以参考阿里、快手、关河因果在因果推断上的实践。

你的反馈,正的负的都是有价值的,有助于我加速迭代升级——更深入、更全面。留下您的精彩评论吧!


http://chatgpt.dhexx.cn/article/5yYCdIQ8.shtml

相关文章

C语言有负号的除法以及求余运算规则

举例说明 abc…d 1753…2 被除数除数商…余数 有负号的运算规则 求: -17除以5的商和余数17除以-5的商和余数-17除以-5的商和余数 答: abc…d 用a代表被除数,用b代表除数,用c代表商,用d代表余数. c的数值是|a|/|b|,c是正号还是负号由a和b的负号数量决定;d的正负号和a相同…

C语言取余问题

如果 % 左边的操作数是正数&#xff0c;则取余的结果为正数或零&#xff1b;如果 % 左边的操作数是负数&#xff0c;则取余的结果为负数或零。 例如代码运行如下&#xff1a; 主代码&#xff1a; #include<iostream> using namespace std; int main() {cout<<(13…

c语言怎么对大数求余,C语言:大数取余

大数取余数(数组) 今天做学校的oj时遇到一题&#xff0c;问题可见一下截图&#xff1a; 查遍各大论坛&#xff0c;都没有遇到合适的方法&#xff0c;普通方法不可用&#xff0c;要采用数组的形式。 被除数超过long long类型&#xff0c;不能采用常规思路&#xff0c;否则会出现…

C语言--求余问题

C在线工具 | 菜鸟工具 在c语言中&#xff0c;如果 a为一个四位数 那么a%1000/100是啥&#xff1f; 假设a的值为1345&#xff0c;那么当计算a%1000时&#xff0c;值为345 #include <stdio.h>int main() {int a 1345;int b a%1000;printf("%d",b); } 而345/…

软件开发流程图

文件下载https://download.csdn.net/download/weixin_43250197/12243113

嵌入式软件开发的特点和流程

嵌入式软件就是嵌入在硬件中的操作系统和开发工具软件&#xff0c;被广泛应用于工业控制、消费电子、医疗、通信等领域&#xff0c;我们常见的手机、电脑、数码相机等都运用到了嵌入式软件技术。为了确保嵌入式系统的运行&#xff0c;嵌入式软件迅速崛起&#xff0c;在整个软件…

一套完整的软件开发流程是怎样的?

​做什么事都需要一个流程&#xff0c;软件开发也不例外。 那么&#xff0c;一个软件从无到有到底是怎么开发的&#xff1f;一个软件产品的结果为什么是这样&#xff1f;为什么开发的速度不能再快一点。为什么程序员大多秃顶&#xff1f;他们有那么忙吗&#xff1f;完整的软件…

汽车软件V流程开发

1.系统需求分析 调研并输出系统需求文档 2.系统架构设计 通常和第一步并行&#xff0c;并在系统需求文档中体现。第1和第2步都是系统层级的&#xff0c;下面应该分软件和硬件两个分支&#xff0c;这里我们只关注软件这个分支。 3.软件需求分析 输出软件需求文档&#xff0…

详解自动驾驶安全软件开发流程

1 引言 自动驾驶汽车开发越来越重视性能、质量和性价比&#xff0c;自动驾驶口碑成为新技术应用取得市场成功的关键&#xff0c;而口碑的建立依赖于相关软件开发流程、周期、时间和质量。一家汽车企业只有拥有或者其软件开发供应商具有成熟的软件开发团队、软件开发流程、可复用…

软件开发流程:需求评审流程

1 常规需求 图1 常规需求评审流程 2 非常规需求 图2 非常规需求评审流程 3 紧急需求 图3 紧急需求评审流程

软件开发流程知识概括

软件开发流程知识概括 软件开发流程简述开发流程详解软件开发流程涉及的图软件开发总结 软件开发流程简述 研发流程简述&#xff1a; 研发流程详解&#xff1a; 需求提出&#xff1a; ①这个环节主要是产品爸爸给我们提需求&#xff0c;每个需求都是他们从用户&#xff0c…

软件开发的一般流程是什么?

软件开发流程分为: 需求确认——概要设计——详细设计——编码——单元测试——集成测试——系统测试——维护 软件开发是一项包括需求捕捉、需求分析、设计、实现和测试的系统工程。软件一般是用某种程序设计语言来实现的。通常采用软件开发工具可以进行开发。软件分为系统软…

python----列表操作

1. append(添加&#xff0c;添加的类型不变) a [1, 2] b [3, 4] c a.append(b) print(a--->, a) print(b--->, b) print(c--->, c)2. extend(末尾添加&#xff0c;会合并成一个列表) a [1, 2] b [3, 4] c a.extend(b) print(a--->, a) print(b--->, b) …

python——列表基础操作

1.列表的格式 列表的相关操作&#xff1a; 2.添加append()列表里面包含列表: extend和append的区别&#xff1a;append的最终列表中添加的是一个元素&#xff0c;extend的最终列表中显示的是追加的多个元素 第二种方式extend(): 指定对应索引新增数据insert&#xff1a; &am…

在python中、列表中的元素可以是_Python列表操作集合

对于python列表里元素的操作主要分为以下几个方面&#xff1a; 1、向列表里面加元素&#xff1b; 向python列表里面添加元素主要有三种方法&#xff1a; &#xff08;1&#xff09;append&#xff08;&#xff09; append()对于列表的操作主要实现的是在特定的列表最后添加…

python使用下标可以修改列表的元素值吗_Python列表操作最全面总结

1.列表添加元素 列表中可以使用append、insert、extend方法实现元素的添加。 append会把新元素添加到列表末尾 A = ["a", "b", "c"] A.append("d") print(A) 输出 [a, b, c, d] insert(index, object) 在指定位置index前插入元素objec…

Python列表操作常用函数、方法大全

目录 简介列表基本方法访问列表元素&#xff08;即索引&#xff09;index方法enumerate()函数 在列表中添加元素append方法insert方法 修改列表元素删除列表元素del语句pop()函数remove方法 列表排序sort方法sorted()函数reverse方法 列表长度 len()函数列表转换 列表高阶操作数…

Python列表操作方法详解

这篇文章主要介绍了Python列表操作方法详解,需要的朋友可以参考下. 本节内容 0、列表常用功能汇总1、定义列表2、访问列表中的元素3、切片4、追加5、插入6、修改7、拷贝8、删除9、扩展10、统计11、翻转12、排序13、获取下标值14、清空列表列表是Python最常用的数据类型之一,通…

python的列表的操作

1.列表的创建与删除 介绍&#xff1a; 1&#xff09;变量只能存储一个元素&#xff0c;但是列表能存储无限多元素。这样程序就可以很方便的对这些元素操作 2&#xff09;列表相当于其他语言的数组 列表示意图&#xff1a; 代码例子&#xff1a; 列表创建方式&#xff1a; 列…

Python中列表的基本操作

目录 1、定义列表2、访问列表3、增删改操作4、合并列表5、列表切片6、遍历列表7、列表转换 列表通常用来存储多个数据&#xff0c;每一个数据之间用逗号隔开&#xff0c;列表中的数据被称为元素&#xff0c;列表的左右两边带有中括号。 1、定义列表 定义列表时初始元素可以为…