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

鸡生蛋还是蛋生鸡? 基于python的CCM因果关系计算

文章目录

  • 前言
  • 一、安装
  • 二、代码
    • 1.全部代码
    • 2.结果展示
  • 总结


前言

因果推断在科学研究中起着重要的作用,尤其是在复杂系统中,例如生态学、气候学、经济学等领域。在这些领域中,了解变量之间的因果关系可以帮助我们更好地理解系统的动态行为和相互作用。传统的相关性分析并不足以揭示因果性,因为相关性不代表因果关系。为了有效地解决这一问题,Convergent Cross Mapping (CCM) 被提出作为一种基于非线性动力学理论的因果推断方法。CCM 可以用来识别时间序列数据之间的因果关系,特别是在动态复杂系统中,其中变量之间可能存在交互作用或反馈机制。

本代码使用了 causal-ccm Python 库,旨在通过模拟混沌系统来验证和可视化 X 和 Y 两个时间序列之间的因果关系。通过调整不同的时间窗口长度(L)、时间滞后值(τ)和嵌入维度(E),我们可以深入探讨如何使用 CCM 检测系统中潜在的因果关系,并通过可视化图表展现因果性随时间窗口变化的收敛过程。

一、安装

安装
pip install causal-ccm

使用
假设我们想要检查X是否驱动y。我们首先使用:ccm定义

X和时间序列dataY
时差(如果我们得到我们的影子流形嵌入Tau =1[t, t-1, t-2…])
E -阴影歧管的嵌入维度(默认=2)
L -要考虑的时间范围,默认为时间序列长度X
我们导入包
从causal_ccm。Causal_ccm import CCM

我们定义:ccm
ccm1 = ccm(X, Y, tau, E, L) #用X, Y时间序列定义ccm

我们检查因果关系的强度,即预测与真实的相关性(见Sugihara(2012))。
ccm1.causality ()

我们可以想象X和Y的流形之间的交叉映射
ccm1.visualize_cross_mapping ()

我们将X- >y的相关性可视化
相关性越强=因果关系越强
ccm1.plot_ccm_correls ()

最后,我们可以通过计算具有不同L值的定义来检查预测(相关性)的收敛性

二、代码

1.全部代码

from causal_ccm.causal_ccm import ccm  # 导入 causal-ccm 包中的 ccm 类,用于因果推断
import pandas as pd  # 导入 pandas,用于数据处理
import matplotlib.pyplot as plt  # 导入 matplotlib,用于绘制图形
from tqdm import tqdm  # 导入 tqdm,用于在循环中显示进度条
import numpy as np  # 导入 numpy,用于数值计算

# 定义一个混沌系统函数,模拟 X 和 Y 之间的动态交互
# A 是 X 或 Y,B 是 Y 或 X,r 是系统参数,beta 是交互影响系数
def chaotic_func(A, B, r, beta):
    return A * (r - r * A - beta * B)

# 可视化并进行因果推断分析的函数
def viz_ccm(func, X, Y, L_range, tau, E):
    Xhat_My, Yhat_Mx = [], []  # 初始化两个列表,用于存储每个 L 对应的相关性(因果强度)

    # 遍历不同的 L 值,L 是时间窗口长度
    for L in tqdm(L_range):  # tqdm 提供进度条
        ccm_XY = func(X, Y, tau, E, L)  # 创建 ccm 对象,进行 X -> Y 的因果推断
        ccm_YX = func

相关文章:

  • ROS2的发展历史、核心架构和应用场景
  • 【机器学习】使用Python Spark MLlib进行预测模型训练
  • ChatDBA VS DeepSeek:快速诊断 OceanBase 集群新租户数据同步异常
  • GPU架构与通信互联技术介绍
  • 如何使用Tailwind CSS创建一个组合了很多样式的类名,实现样式复用
  • 【概念】Node.js,Express.js MongoDB Mongoose Express-Validator Async Handler
  • [ComfyUI] SDXL Prompt Styler 自定义节点的作用解析
  • 【前端扫盲】node.js npm nvm都是什么以及他们之间的关系
  • A Brief History: from GPT-1 to GPT-3
  • 自然语言处理(12:RNN(正式介绍))
  • 合宙780E开发学习-LUATOS-SOC云编译自定义固件
  • 业务相关
  • 程序控制结构
  • 理解文字识别:一文读懂OCR商业化产品的算法逻辑
  • 使用AI一步一步实现若依(26)
  • 汽车方向盘开关功能测试的技术解析
  • Redis中的数据类型与适用场景
  • 《基于机器学习发电数据电量预测》开题报告
  • LEMO 部署笔记
  • ESP32S3 WIFI 实现TCP服务器和静态IP
  • 200枚篆刻聚焦北京中轴线,“印记”申遗往事
  • 看见“看得见的手”,看见住房与土地——读《央地之间》
  • 人社部:一季度全国城镇新增就业308万人,同比增加5万人
  • 企业取消“大小周”引热议,半月谈:不能将显性加班变为隐性加班
  • 北汽蓝谷一季度净亏损9.5亿元,拟定增募资不超60亿元
  • 俄乌战火不熄,特朗普在梵蒂冈与泽连斯基会晤后口风突变