tigramite教程(二)生物地球科学案例研究

文章目录

  • 数据生成与绘图
  • 因果发现分析
    • 平稳性假设、确定性、潜在混杂因素
    • 结构假设
    • 参数假设
  • 使用PCMCIplus的滑动窗口分析
  • 聚合因果图
  • 非参数因果效应估计
    • 假设的图形和调整集
    • 干预的真实情况
    • 假设的参数模型和因果效应的估计
    • 使用关于图的不同假设进行估计
  • 非因果估计

项目地址

这个文件夹中的两个案例研究来自气候科学和生物地球科学,遵循以下审查论文中的 QAD-问卷和方法选择流程图(包含在 tigramite github 教程文件夹中):

Runge, J., Gerhardus, A., Varando, G., Eyring, V. & Camps-Valls, G. Causal inference for time series. Nat. Rev. Earth Environ. 10, 2553 (2023).

该审查论文的末尾列出了一些用于解决选定 QAD 问题的软件和方法。

这个例子将演示使用基于因果推断的技术来调查空气温度(Tair)对生态系统呼吸(Reco)的因果效应,数据还包括总初级生产力(GPP)和短波辐射(Rg)。为了更好地说明非参数因果效应估计,这个案例研究考虑了一个具有已知定量基准真实性的合成系统:
在这里插入图片描述
在这些方程中,被解释为一个结构因果模型(SCM),其中 η t ˙ \eta _{\dot{t }} ηt˙
是相互独立的标准正态噪声项,除了Tair,其中 η t ˙ T a i r = η t + 1 4 ∗ ϵ t 3 \eta _{\dot{t }}^{Tair}=\eta_t+\frac{1}{4}*{\epsilon}_t^3 ηt˙Tair=ηt+41ϵt3
(标准正态噪声项和)具有立方指数,以表示更极端的温度。SCM展示了Reco和Tair之间的单峰关系(请参见下图中的干预基准真相),这在真实数据中也被发现(请参见论文)。

分析将首先说明因果发现,然后进行因果效应估计。让我们从导入一些标准Python包以及tigramite因果推断包开始。

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.transforms as mtransformsimport sys
from copy import deepcopyimport sklearn
from sklearn.linear_model import LinearRegression
from sklearn.neural_network import MLPRegressor
from sklearn.gaussian_process import GaussianProcessRegressor
from sklearn.ensemble import RandomForestRegressor
from sklearn.preprocessing import StandardScaler
from scipy.stats import gaussian_kde
import warnings
from sklearn.exceptions import DataConversionWarning
warnings.filterwarnings(action='ignore')import tigramite
import tigramite.data_processing as pp
import tigramite.plotting as tpfrom tigramite.models import LinearMediation, Models
from tigramite.causal_effects import CausalEffectsfrom tigramite.pcmci import PCMCI
from tigramite.independence_tests.robust_parcorr import RobustParCorr

数据生成与绘图

步骤紧密遵循QAD模板(综述论文中的表1和图2流程图)。与气候示例不同,这里所有变量(节点)都已定义为每日连续值的时间序列。下一个问题是关于创建一个平稳数据集(图2流程图)。与气候示例不同,这里考虑了多个数据集(多个站点)的设置。在考虑的合成示例中,由于站点只是同一SCM的不同实现,因此平稳性是通过构造满足的(除了所有站点共享的季节性),因此,不同站点的时间序列可以简单地汇总(合并)。为了减轻季节性非平稳性,只考虑4月至9月(模型月份)的时期(见下图)。

# Time series length is 6 years
T = 365*6 + 1# 4 Variables
N = 4# We model 5 measurement sites
M = 5data_dict = {}
mask_dict = {}
for site in range(M):modeldata_mask = np.ones((T, N), dtype='int')for t in range(T):# April to Septemberif 90 <= t % 365 <= 273:modeldata_mask[t,:] = 0mask_dict[site] = modeldata_maskmodeldata = np.zeros((T,N))random_state = np.random.RandomState(site)noise = random_state.randn(T, N)noise[:, 1] += 0.25*random_state.randn(T)**3for t in range(1, T):modeldata[t,0] = np.abs(280.*np.abs(np.sin((t)*np.pi/365.))**2 + 50.*np.abs(np.sin(t*np.pi/365.))*noise[t,0])modeldata[t,1] = 0.8*modeldata[t-1,1] + 0.02*modeldata[t,0] + 5*noise[t,1]  modeldata[t,2] = np.abs(0.2* modeldata[t-1, 2] + 0.002*modeldata[t,0] * modeldata[t,1] + 3*noise[t,2]) modeldata[t,3] = np.abs(0.3*modeldata[t-1,3] + 0.9*modeldata[t,2] * 0.8**(0.12*(modeldata[t,1]-15)) + 2*noise[t,3])data_dict[site] = modeldata# Variable names
var_names = ['Rg', 'Tair', 'GPP', 'Reco']# Init Tigramite dataframe object
dataframe = pp.DataFrame(data=data_dict, mask = mask_dict,analysis_mode = 'multiple',var_names=var_names)
fig_axes = tp.plot_timeseries(dataframe,grey_masked_samples='data',adjust_plot=False,color = 'red',alpha=0.6, data_linewidth=0.3,selected_dataset=0)for index in range(1, len(data_dict)):adjust_plot = Falseif index == M - 1: adjust_plot = Truecolor = ['red', 'green', 'blue', 'yellow', 'lightblue'][index]tp.plot_timeseries(dataframe,fig_axes =fig_axes,grey_masked_samples='data',adjust_plot=adjust_plot,color=color,time_label='day',alpha=0.6, data_linewidth=0.3,selected_dataset=index)
plt.show()

在这里插入图片描述

因果发现分析

在得到这个平稳的数据集后,第一个因果问题涉及因果发现。为了选择合适的因果发现方法,必须确定可以合理做出的假设。

平稳性假设、确定性、潜在混杂因素

这里的数据来自多个数据集(因果发现框架中的蓝色框,论文中的图2),然而,这些数据集共享相同的基础分布,下一个问题是这个系统是否是确定性的。考虑到在这个规模下的动态复杂性,可以假设它是一个非确定性系统。下一个假设是是否有潜在的混杂因素,即因果影响两个或更多观察变量的未观察变量。在这里,由于限制分析仅限于季节,在此期间可以预期平稳性,因此合理地假设不存在隐藏的混杂因素,这在基础SCM中是正确的。

结构假设

接下来需要做出图类型的结构假设。由于这里的进程很快,同时因果效应(即,在数据的时间分辨率1天以下的因果影响)可能会发生。此外,在这里,可以通过在图中不允许Rg有任何父母节点来强制实施Rg是外生变量的领域知识。这些假设建议使用基于约束的因果发现算法PCMCI+(或其他类似选项,见图2)。
为了对PCMCI+估计的因果时间序列图中最大时间滞后做出假设(即 X t − τ j → X t j X_{t-\tau}^j \to X^j_t XtτjXtj,所有 τ \tau τ such that 在图中的最大),可以使用数据来调查滞后依赖函数,或者,像在这里一样,可以使用领域知识来证明 τ m a x = 1 \tau_{max}=1 τmax=1(以天为单位)。

参数假设

接下来,为PCMCI+选择下一个超参数是关于条件独立性的测试,这需要一个参数假设。下面我们使用Tigramite的plot_densities函数来通过联合和边际密度估计调查依赖关系的类型。在这里,我们描绘了原始数据以及实现正态分布边际的转换数据。

dataframe_here = deepcopy(dataframe)
matrix_lags = None
matrix = tp.setup_density_matrix(N=N, var_names=dataframe.var_names, **{

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/704523.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode_Java_动态规划(2)(题目+思路+代码)

131.分割回文串 给你一个字符串 s&#xff0c;请你将 s 分割成一些子串&#xff0c;使每个子串都是 回文串 。返回 s 所有可能的分割方案。 回文串 是正着读和反着读都一样的字符串。 示例 1&#xff1a; 输入&#xff1a;s "aab" 输出&#xff1a;[["a&qu…

ActiveMq PUT任意文件上传漏洞(CVE-2016-3088)漏洞复现

ActiveMQ ActiveMQ Web控制台分为三个应用程序&#xff1a;其中admin&#xff0c;api和fileserver&#xff0c;其中admin是管理员页面&#xff0c;api是界面&#xff0c;fileserver是用于存储文件的界面&#xff1b;admin和api需要先登录才能使用&#xff0c;fileserver不需要…

智慧餐饮系统架构的设计与实现

随着科技的不断发展&#xff0c;智慧餐饮系统在餐饮行业中扮演着越来越重要的角色。智慧餐饮系统整合了信息技术&#xff0c;以提高餐饮企业的管理效率、客户服务质量和市场竞争力。本文将探讨智慧餐饮系统架构的设计与实现&#xff0c;并探讨其在餐饮行业中的应用前景。 架构…

matlab采用不同数值方法求解微分方程

1、内容简介 略 60-可以交流、咨询、答疑 欧拉方法、改进欧拉、RK4、米尔斯坦方法求解微分方程 2、内容说明 略 lc; close all; clear all; % 参数赋值 global a global b global h a 1; b 2; Ni 1000; % 总步数 h 0.001; % 步长Xt1(1:Ni) 0; Xt2(…

【前端素材】推荐优质后台管理系统PORTAL平台模板(附源码)

一、需求分析 后台管理系统是一种具有多层次结构的软件系统&#xff0c;用于管理网站、应用程序或系统的后台操作和管理。下面是对后台管理系统的分层次、详细分析&#xff1a; 第一层&#xff1a;用户界面层 登录界面&#xff1a;提供用户登录验证&#xff0c;确保只有经过授…

MySQL 数据优化技巧:提升百万级数据聚合统计速度

MySQL 数据优化技巧&#xff1a;提升百万级数据聚合统计速度 MySQL 数据优化技巧&#xff1a;提升百万级数据聚合统计速度摘要引言索引优化1. 使用合适的索引类型2. 聚簇索引的应用 查询优化3. 减少数据检索范围4. 避免全表扫描 数据库设计优化5. 合理划分数据表6. 使用分区表 …

零基础学Python入门教程非常详细(从小白到高级),入门必看

目录&#xff1a;基础 第一章-第五章&#xff08;5.1-5.4&#xff09;&#xff1a;简介、配置与基础知识 第六章&#xff1a;判断语句 第一章&#xff1a;Python的概述 1.1&#xff1a;什么是Python? Python它是一种直译式&#xff0c;面向对象&#xff0c;解释式的脚本语…

NASA Earthdata wget批量下载

1 wegt下载 GNU Wget 1.21.4 for Windows (eternallybored.org) 2 创建your .urs_cookies and .dodsrc文件 只需要创建.urs_cookies文件 其实&#xff0c;通过txt可以直接创建 这个文件你想放到哪里&#xff0c;就放到哪里 Create .urs_cookies file: On Mac/Linux: cd ~ o…

绝对路径拼接漏洞 [NISACTF 2022]babyupload

打开题目 最开始以为是文件上传的漏洞 结果发现无论我们上传什么文件都会显示bad filename 去网上看了大佬的wp知道 我们直接去看源代码得到提示 /source 那我们去访问一下这个路径看看 得到一个下载文件 用记事本打开得到 源代码如下 from flask import Flask, request, r…

软考46-上午题-【数据库】-数据查询语言DQL1

一、SQL数据查询功能 SELECT语句的语法如下&#xff1a; 【注意】&#xff1a; 使用DISTINCT选项可以去重&#xff1b; form子句中出现多个基本表或视图时&#xff0c;系统首先执行笛卡尔积操作。 下面的查询示例均以这些表为基础 1-1、投影查询-SELECT 【回顾】&#xff1a;…

设计模式(七)装饰模式

相关文章设计模式系列 1.装饰模式简介 装饰模式介绍 装饰模式是结构型设计模式之一&#xff0c;不必改变类文件和使用继承的情况下&#xff0c;动态地扩展一个对象的功能&#xff0c;是继承的替代方案之一。它是通过创建一个包装对象&#xff0c;也就是装饰来包裹真实的对象…

【日常聊聊】Sora- 探索AI视频模型的无限可能

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a;日常聊聊 ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 前言 正文 方向一&#xff1a;技术解析 方向二&#xff1a;应用场景 方向三&#xff1a;未来展望 方向四&#xff1a;伦理与创意 方向…

[linux][异常检测] hung task, soft lockup, hard lockup, workqueue stall

hung task&#xff0c;soft lockup&#xff0c;hard lockup&#xff0c;workqueue stall 是 linux 内核中的异常检测机制&#xff0c;这 4 个检测均是通过时间维度上的检测来判断异常。 在时间维度上的检测机制&#xff0c;有两个核心的点&#xff1a; &#xff08;1&#xff…

web组态插件

插件演示地址&#xff1a;http://www.byzt.net 关于组态软件&#xff0c;首先要从组态的概念开始说起。 什么是组态 组态&#xff08;Configure&#xff09;的概念来自于20世纪70年代中期出现的第一代集散控制系统&#xff08;Distributed Control System&#xff09;&#xf…

紫外-可见吸收光谱法(UV-Vis)是最常用吸收光谱技术 市场持续扩大

紫外-可见吸收光谱法&#xff08;UV-Vis&#xff09;是最常用吸收光谱技术 市场持续扩大 紫外-可见吸收光谱法&#xff0c;也称为紫外-可见分光光度法&#xff0c;简称UV-Vis&#xff0c;利用样品分子在紫外和可见光激发下产生电子能级跃迁形成的吸收光谱&#xff0c;对元素进行…

基于Java SSM框架实现高校网课管理系统项目【项目源码+论文说明】

基于java的SSM框架实现高校网课管理系统演示 摘要 随着移动应用技术的发展&#xff0c;越来越多的学生借助于移动手机、电脑完成生活中的事务&#xff0c;许多的行业也更加重视与互联网的结合&#xff0c;以提高教学的教育水平和寻求更高的经济利益。针对高校网课管理系统&…

猫头虎分享已解决Bug || 解决SyntaxError: Unexpected token o in JSON at position 1

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通鸿蒙》 …

HashMap的put()方法执行流程

HashMap的数据结构在jdk1.8之前是数组链表&#xff0c;为了解决数据量过大、链表过长是查询效率会降低的问题变成了数组链表红黑树的结构&#xff0c;利用的是红黑树自平衡的特点。 链表的平均查找时间复杂度是O(n)&#xff0c;红黑树是O(log(n))。 HashMap中的put方法执行过…

mysql的增删改查(常用)

增(insert) 语法&#xff1a; insert into 表名&#xff08;字段&#xff09; values( 字段对应的值) 案例&#xff1a; 创建一个学生表 结构如下&#xff1a; create table student(id int ,name varchar(20),age int); 向表中插入2条数据 create table student(id int ,n…

小程序--vscode配置

要在vscode里开发微信小程序&#xff0c;需要安装以下两个插件&#xff1a; 安装后&#xff0c;即可使用vscode开发微信小程序。 注&#xff1a;若要实现鼠标悬浮提示&#xff0c;则需新建jsconfig.json文件&#xff0c;并进行配置&#xff0c;即可实现。 jsconfig.json内容如…