R语言实现多要素偏相关分析

news2024/11/26 6:19:11

偏相关分析是指当两个变量同时与第三个变量相关时,将第三个变量的影响剔除,只分析另外两个变量之间相关程度的过程,判定指标是相关系数的R值。

在GIS中,偏相关分析也十分常见,我们经常需要分析某一个指数与相关环境参数的相关程度,例如NDVI与气温,降水,地形之间的相关系数。这与我们日常研究息息相关,因此掌握偏相关分析,对我们GISers比较重要。

虽然目前网络上有许多教程,但大部分是针对三个变量,且需要收费查阅,十分不便捷。

本文以标准化降水蒸散发指数SPEI与风速,降水,气温,日照时数,相对湿度等五个变量的偏相关分析为例,利用R语言进行解答。以达到大家只需更改数据存储路径,即可进行偏相关分析的目的。

话不多说,让我们开始吧!

01数据的规范

R语言进行栅格数据处理时,要求输入数据的统一规范,这包括输入栅格数据的空间参考,像元大小(分辨率),投影完全一致,我们在进行偏相关分析时,数据来源宽泛,标准不一,在数据的预处理上要特别重视,它是我们进行下一步代码操作的基础。常见的方法和工具有“投影”“重采样”“按掩膜提取”等等。这些都可以使用ArcGIS进行操作,小编在之前的文章也有过部分介绍。

02R语言代码的编写

将我们前期处理好的栅格数据按一定的命名规范,存储在本地文件夹后,我们就可以进行代码的编写了。

代码分成四部分:第一步加载所需要的包;第二步读取研究数据;第三步编写偏相关分析函数并应用;第四步导出数据。

在代码的注释中,小编已写的尽量详细,大家可以根据自己的需求来对更多或者更少变量的情况进行个性化的处理。


# 加载所需包
library(terra)
library(ppcor)

# 读取栅格数据,分别是SPEI和其他五类环境数据
MRSEI <- rast(dir("G:/demo/002/SPEI", full.names = TRUE, pattern = '.tif$'))
# 这句代码就是找到对应目录下的文件后缀名为tif……的文件,并将他们存储在MRESI这个对象中,它现在就存了9个栅格
fs <- rast(dir("G:/demo/002/五类气象数据/风速", full.names = TRUE, pattern = '.tif$'))
pre <- rast(dir("G:/demo/002/五类气象数据/降水", full.names = TRUE, pattern = '.tif$'))
tem <- rast(dir("G:/demo/002/五类气象数据/气温", full.names = TRUE, pattern = '.tif$'))
tim <- rast(dir("G:/demo/002/五类气象数据/日照时数", full.names = TRUE, pattern = '.tif$'))
shi <- rast(dir("G:/demo/002/五类气象数据/相对湿度", full.names = TRUE, pattern = '.tif$'))

# 合并处理后的栅格数据
z <- c(MRSEI, pre, tem, fs, tim, shi)#MRSEI1-9, pre:10-18,tem:19-27,fs:28-36,tim:37-45,shi:46,54

# 定义计算偏相关的函数fun_cor
fun_cor <- function(x) {
  # 如果任何一个值是 NA,则返回 NA
  if (any(is.na(x))) {
    return(c(NA, NA, NA, NA, NA))
  } else {
    # 尝试执行偏相关计算,处理可能的错误
    tryCatch({
      npre = ppcor::pcor.test(x[1:9],x[10:18],list(x[19:27],x[28:36],x[37:45],x[46:54]),method = "pearson")
      ntem = ppcor::pcor.test(x[1:9],x[19:27],list(x[10:18],x[28:36],x[37:45],x[46:54]),method = "pearson")
      nfs = ppcor::pcor.test(x[1:9],x[28:36],list(x[19:27],x[10:18],x[37:45],x[46:54]),method = "pearson")
      ntim = ppcor::pcor.test(x[1:9],x[37:45],list(x[19:27],x[28:36],x[10:18],x[46:54]),method = "pearson")
      nshi = ppcor::pcor.test(x[1:9],x[46:54],list(x[19:27],x[28:36],x[10:18],x[37:45]),method = "pearson")
      #返回降水数据的相关性和显著性检验的P值
      nprer = npre$estimate 
      nprep = npre$p.value 
      #返回气温数据的相关性和显著性检验的P值 
      ntemr = ntem$estimate
      ntemp = ntem$p.value
      nfsr = nfs$estimate
      nfsp = nfs$p.value #显著性检验的方法也有很多种
      ntimr = ntim$estimate
      ntimp = ntim$p.value
      nshir = nshi$estimate
      nship = nshi$p.value
      #在这里我就只return 五个变量的相关性了,P值就不return ,有需求的小伙伴可以自行导出
      return(c(nprer,ntemr,nfsr,ntimr,nshir))
    }, error = function(e) {
      return(c(NA, NA, NA, NA, NA))  # 如果出现错误,返回 NA
    })
  }
}
#开始运行函数
result <- terra::app(z,fun_cor,cores = 8)
#预览结果
plot(result)
将结果导出到本地,这里就导出两个为例吧
writeRaster(result[[1]],filename = "G:/demo/降水相关.tif")
writeRaster(result[[2]],filename = "G:/demo/气温相关.tif")

03  结果展示

按照本文示例代码的,我将得到五个变量的相关系数栅格图,下面是plot预览的效果。

这就是本文的全部内容,小伙伴可以直接修改数据路径运行代码,创作不易,希望大家多多支持,点赞转发!我是加拿大一枝黄花,我们下次再会。

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

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

相关文章

基于Java中的SSM框架实现快餐店线上点餐系统项目【项目源码+论文说明】

基于Java中的SSM框架实现快餐店线上点餐系统演示 摘要 随着计算机互联网的高速发展。餐饮业的发展也加入了电子商务团队。各种网上点餐系统纷纷涌现&#xff0c;不仅增加了商户的销售量和营业额&#xff0c;而且为买家提供了极大的方便&#xff0c;足不出户&#xff0c;就能订…

Docker进阶教程 - 4 Docker网络

更好的阅读体验&#xff1a;点这里 &#xff08; www.doubibiji.com &#xff09; 4 Docker网络 先说我们现在遇到的问题&#xff1a; 我们现在有一个 Redis 容器&#xff0c;一个 SpringBoot 项目容器&#xff0c;在 SpringBoot 项目的代码中如何访问 Redis 容器中的服务呢…

Harbor镜像仓库的安装和使用

1 Harbor安装 参考文章&#xff1a; 银河麒麟v10离线安装harbor 由于配置了本地私有yum源&#xff0c;因此&#xff0c;直接使用yum命令安装docker和docker-compose 1.1 安装docker yum install docker-ce1.2 安装docker-compose yum install docker-compose1.3 安装harbo…

服务器被挖矿后修改密码报错Authentication token manipulation error

服务器被挖矿&#xff0c;需要修改密码&#xff0c;结果执行的时候发现报错 passwd: Authentication token manipulation error 尝试执行下列命令后再进行密码修改&#xff0c;修改成功 chattr -i /etc/passwd /etc/shadowchattr的主要用法 参考文章: https://c.biancheng.ne…

GEE遥感云大数据林业应用典型案例及GPT模型应用

近年来遥感技术得到了突飞猛进的发展&#xff0c;航天、航空、临近空间等多遥感平台不断增加&#xff0c;数据的空间、时间、光谱分辨率不断提高&#xff0c;数据量猛增&#xff0c;遥感数据已经越来越具有大数据特征。遥感大数据的出现为相关研究提供了前所未有的机遇&#xf…

威纶通触摸屏在编辑画面时如何更改窗口画面大小?

威纶通触摸屏在编辑画面时如何更改窗口画面大小&#xff1f; 如下图所示&#xff0c;Windows11系统下&#xff0c;打开威纶通触摸屏编程软件easy builder pro&#xff0c;此时可以看到画面窗口非常小&#xff0c;不方便编辑和操作&#xff0c; 如下图所示&#xff0c;点击上方工…

swagger3快速使用

目录 &#x1f37f;1.导入依赖 &#x1f32d;2.添加配置文件 &#x1f9c2;3.添加注解 &#x1f96f;4.访问客户端 1.导入依赖 引入swagger3的依赖包 <dependency><groupId>io.springfox</groupId><artifactId>springfox-boot-starter</artif…

B3870 [GESP202309 四级] 变长编码(膜拜版)

本题包括&#xff1a; 1.进制的超强使用 2.进制的截位使用 本题参考洛谷题解&#xff1a;https://www.luogu.com.cn/article/daqzhu5m &#xff08;在线膜拜作者的代码中&#xff09; 难度&#xff1a;普及- 对于笔者而言&#xff1a; 这道题在洛谷上通过率很高&#xff0c;…

“JavaScript: void(0)的替代方案有哪些?”

学习目标&#xff1a; 理解javascript:void(0)的工作原理&#xff0c;以及它在前端开发中的作用和用途。掌握javascript:void(0)的正确用法&#xff0c;包括在HTML中使用和在事件处理程序中使用。能够识别javascript:void(0)可能引起的常见问题&#xff0c;并学会相应的解决方…

理财第一课:炒股词典

文章目录 基础代码规则委比委差量比换手率市盈率市净率 短线操作散户亏钱的原因庄家分析炒股战法波浪理论其它 钱者&#xff0c;人生之大事&#xff0c;死生存亡之地&#xff0c;不可不察也。耕田之利&#xff0c;十倍&#xff1b;珠玉之赢&#xff0c;百倍&#xff1b;闹革命&…

安科瑞消防产品监控系统解决方案【电气火灾 消防设备 】

一、电气火灾监控系统 系统概述 l针对低压用电环节各回路中的剩余电流、温度和故障电弧等进行实时监测&#xff1b; l侧重点为低压用电环节的安全性&#xff0c;当剩余电流越限时报警输出&#xff0c;以提醒维护人员进行安全检查&#xff0c;防止因漏电引起的火灾发生&#…

【GameFramework框架内置模块】9、有限状态机(FSM)

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享简书地址 大家好&#xff0c;我是佛系工程师☆恬静的小魔龙☆&#xff0c;不定时更新Unity开发技巧&#xff0c;觉得有用记得一键三连哦。 一、前言 【GameFramework框架】系列教程目录&#xff1a; https://blog.csdn.net/q7…

从零开始写 Docker(七)---实现 mydocker commit 打包容器成镜像

本文为从零开始写 Docker 系列第七篇&#xff0c;实现类似 docker commit 的功能&#xff0c;把运行状态的容器存储成镜像保存下来。 完整代码见&#xff1a;https://github.com/lixd/mydocker 欢迎 Star 推荐阅读以下文章对 docker 基本实现有一个大致认识&#xff1a; 核心原…

解决jenkins运行磁盘满的问题

参考&#xff1a;https://blog.csdn.net/ouyang_peng/article/details/79225993 分配磁盘空间相关操作&#xff1a; https://cloud.tencent.com/developer/article/2230624 登录jenkins相对应的服务或容器中查看磁盘情况&#xff1a; df -h在102挂载服务器上看到是这两个文件…

OSPF特殊区域(stub\nssa)

stub区域——只有1类、2类、3类&#xff1b;完全stub区域——只有1类、2类 NSSA区域&#xff1a;本区域将自己引入的外部路由发布给其他区域&#xff0c;但不需要接收其他区域的路由 在NSSA区域的路由器上&#xff0c;引入外部路由时&#xff0c;不会转换成5类LSA&#xff0c…

Ethsign银河活动开启,简单参与领6个NFT

简介&#xff1a;EthSign是一个基于区块链技术的去中心化电子签名平台&#xff0c;目的是解决传统中心化电子签名服务的各种问题。用户可以使用钱包或社交媒体帐户生成的私钥签署文件和协议&#xff0c;数字签名记录在链上&#xff0c;文件经过加密存储在去中心化存储网络中&am…

CSS学习(3)-浮动和定位

一、浮动 1. 元素浮动后的特点 脱离文档流。不管浮动前是什么元素&#xff0c;浮动后&#xff1a;默认宽与高都是被内容撑开&#xff08;尽可能小&#xff09;&#xff0c;而且可以设置宽 高。不会独占一行&#xff0c;可以与其他元素共用一行。不会 margin 合并&#xff0c;…

DETR算法简介

DETR方法是一种使用了Transformer的端到端的目标检测方法&#xff0c;也是经典目标检测算法之一&#xff0c;本文将用最少的话&#xff0c;介绍DETR算法的大致思想。之前的方法或多或少的都不要添加一下额外的步骤&#xff0c;进行人为干预&#xff0c;即使是号称端到端的YOLO系…

Linux卸载Zabbix6 Agent v1 v2 简易操作手册

一、Zabbix6 卸载Zabbix Agent v1 要在Linux系统上卸载Zabbix Agent v1(zabbix_agent)&#xff0c;您可以使用包管理器执行此操作。以下是针对不同Linux发行版的卸载命令&#xff1a; # 对于基于Debian的系统&#xff08;如Ubuntu&#xff09;: sudo apt-get remove zabbix-ag…

Java项目实战记录:雷达数据插值

Java项目实战记录&#xff1a;雷达数据插值 业务背景 之前已经实现了雷达数据的解析和雷达数据后端渲染功能&#xff0c;现在又有一个新的需求。之前是将雷达数据点使用GeoTools渲染成PNG的图片&#xff0c;但这个数据返给前端后不能无极缩放&#xff0c;因为它是个栅格图片&…