因果论(五)——Structural Causal Model(SCM 结构因果模型、函数模型和图模型)

2023-10-22 07:20

本文主要是介绍因果论(五)——Structural Causal Model(SCM 结构因果模型、函数模型和图模型),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、核心思想

SCM的核心思想是因果图,因果图之前已经介绍过,SCM和RCM是等价的。

SCM的关键在于图模型,来源于贝叶斯网络,将Bayes网络加上外部干预,用来定义外部干预的因果作用和描述多个变量之间的因果关系,利用因果网络不仅能定量评价因果作用,还能定性确定混杂因素,用于从数据挖掘因果关系

二、结构方程

结构因果模型中的一个重要概念是结构方程 (structural equations ),其假设每个节点xi都对应一个未观测到的外生变量ui(exogenous variable,或者叫做遗漏因子),节点的值由该遗漏因子ui及父代变量pai通过一个方程来唯一确定,遗漏因子会造成扰动(误差),它可能是未知 or/and 随机的,我们并不关心它们变化的原因。 这个方程为:
x_{i} = f(pa_{i},u_{i})
结构方程和因果图的对应关系如下图所示。

 与代数方程不同,结构方程其代表 变量的生成机制,只能由等式右边对左边赋值,而不能随意变换方向。外生变量描述的是对应节点变量的所有随机因素,其自身具有确定性的概率分布,通常 未被观测也无法进行控制,而且 SCM 中假设所有外生变量之间相互独立。

三、SCM基本概念

SCM就是加入do算子,前文已经介绍过。

根据do操作,变可以定义因果效应,比如二值得Z对于Y的平均因果效应定义为:

ACE(Z\rightarrow Y) = E(Y|do(Z)=1)-E(X|do(Z)=0)

上面do操作下的期望,分别对应do操作下的分布。

四、d分离

前文已经介绍过

五、前门法则和后门法则

六、因果模型中的概率预测

已知一个函数因果模型(如下式),如果我们从pai的每个成员画一个指向Xi的箭头,那么得到的图G称为因果图。如果因果图是无欢的,那么对应的模型称为半马尔科夫模型,变量X的值由变量U的值唯一决定。在这样的条件下,联合分布P(x1,x2,...,xn)由误差变量的分布P(u)唯一决定。如果除了无环以外,误差项是联合独立的,那么该模型称为马尔科夫模型。

x_{1}=f_{i}(pa_{i},u_{i}), i=1,2,...,n

七、函数模型中的反事实

反事实语句不能在随机因果网络的框架下定义。

这篇关于因果论(五)——Structural Causal Model(SCM 结构因果模型、函数模型和图模型)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/259947

相关文章

Java的IO模型、Netty原理解析

《Java的IO模型、Netty原理解析》Java的I/O是以流的方式进行数据输入输出的,Java的类库涉及很多领域的IO内容:标准的输入输出,文件的操作、网络上的数据传输流、字符串流、对象流等,这篇... 目录1.什么是IO2.同步与异步、阻塞与非阻塞3.三种IO模型BIO(blocking I/O)NI

使用Java实现通用树形结构构建工具类

《使用Java实现通用树形结构构建工具类》这篇文章主要为大家详细介绍了如何使用Java实现通用树形结构构建工具类,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录完整代码一、设计思想与核心功能二、核心实现原理1. 数据结构准备阶段2. 循环依赖检测算法3. 树形结构构建4. 搜索子

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应

GORM中Model和Table的区别及使用

《GORM中Model和Table的区别及使用》Model和Table是两种与数据库表交互的核心方法,但它们的用途和行为存在著差异,本文主要介绍了GORM中Model和Table的区别及使用,具有一... 目录1. Model 的作用与特点1.1 核心用途1.2 行为特点1.3 示例China编程代码2. Tab

利用Python开发Markdown表格结构转换为Excel工具

《利用Python开发Markdown表格结构转换为Excel工具》在数据管理和文档编写过程中,我们经常使用Markdown来记录表格数据,但它没有Excel使用方便,所以本文将使用Python编写一... 目录1.完整代码2. 项目概述3. 代码解析3.1 依赖库3.2 GUI 设计3.3 解析 Mark

Android Kotlin 高阶函数详解及其在协程中的应用小结

《AndroidKotlin高阶函数详解及其在协程中的应用小结》高阶函数是Kotlin中的一个重要特性,它能够将函数作为一等公民(First-ClassCitizen),使得代码更加简洁、灵活和可... 目录1. 引言2. 什么是高阶函数?3. 高阶函数的基础用法3.1 传递函数作为参数3.2 Lambda

C++中::SHCreateDirectoryEx函数使用方法

《C++中::SHCreateDirectoryEx函数使用方法》::SHCreateDirectoryEx用于创建多级目录,类似于mkdir-p命令,本文主要介绍了C++中::SHCreateDir... 目录1. 函数原型与依赖项2. 基本使用示例示例 1:创建单层目录示例 2:创建多级目录3. 关键注

C++中函数模板与类模板的简单使用及区别介绍

《C++中函数模板与类模板的简单使用及区别介绍》这篇文章介绍了C++中的模板机制,包括函数模板和类模板的概念、语法和实际应用,函数模板通过类型参数实现泛型操作,而类模板允许创建可处理多种数据类型的类,... 目录一、函数模板定义语法真实示例二、类模板三、关键区别四、注意事项 ‌在C++中,模板是实现泛型编程

kotlin的函数forEach示例详解

《kotlin的函数forEach示例详解》在Kotlin中,forEach是一个高阶函数,用于遍历集合中的每个元素并对其执行指定的操作,它的核心特点是简洁、函数式,适用于需要遍历集合且无需返回值的场... 目录一、基本用法1️⃣ 遍历集合2️⃣ 遍历数组3️⃣ 遍历 Map二、与 for 循环的区别三、高

C语言字符函数和字符串函数示例详解

《C语言字符函数和字符串函数示例详解》本文详细介绍了C语言中字符分类函数、字符转换函数及字符串操作函数的使用方法,并通过示例代码展示了如何实现这些功能,通过这些内容,读者可以深入理解并掌握C语言中的字... 目录一、字符分类函数二、字符转换函数三、strlen的使用和模拟实现3.1strlen函数3.2st