【R语言】地理探测器模拟及分析(Geographical detector)

地理探测器模拟及分析

  • 1. 写在前面
  • 2. R语言实现
    • 2.1 数据导入
    • 2.2 确定数据离散化的最优方法与最优分类
    • 2.3 分异及因子探测器(factor detector)
    • 2.4 生态探测器(ecological detector)
    • 2.5 交互因子探测器(interaction detector)
    • 2.6 风险探测器(risk detector)

1. 写在前面

🗺️🔍地理探测器是一种用于探测空间分异性以及揭示其背后驱动因子的统计学方法。它由中国科学院地理科学与资源研究所的王劲峰研究员提出,并已被广泛应用于社会环境因素和自然环境因素的影响机理研究。地理探测器模型的核心思想是,如果某个自变量对某个因变量有重要影响,那么自变量和因变量的空间分布应该具有相似性。通过计算和比较各单因子的q值,可以判断它们对空间分异性的解释力,q值越大表示解释力越强。
  在当前的研究进展方面,地理探测器已经被应用于多个领域,包括城市扩张驱动力因素分析、健康与风险因子关系的评估、土壤重金属的空间分异及其影响因素分析、青藏高原多年冻土分布影响因子分析等。此外,地理探测器模型的最优离散化研究也取得了进展,这对于提高模型评估结果的精度具有重要意义。
✨✨地理探测器模型的优势在于它没有过多的假设条件,可以克服传统统计方法处理变量所受的限制,因此在空间分析领域得到了广泛的应用和认可。随着研究的深入,地理探测器模型也在不断地优化和发展,以适应更多领域的研究需求。
  当前已有很多的中英文文献涉及到了地理探测器,地理探测器主要包括了因子探测器、交互探测器、风险探测器和生态探测,其中因子探测器和交互探测器使用较为广泛。我个人人为交互探测器可以探测不同环境因子的交互作用,可以更加深刻地认识到环境变量之间的非线性、非对称和动态影响。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2. R语言实现

  为了方便,我任意选择了一个数据集,数据内容如下:

在这里插入图片描述

其中Y为响应变量(因变量),X为自变量,一共2000个样本。此外,X5、X9和X10为类别型变量(离散变量)。

2.1 数据导入

  首先进行相关包和数据导入,这里我们使用了地探测器“GD”包。此外,需要注意的是,read_exce() 函数导入的数据为tibble格式,但是GD中需要数据框格式,否则会报错,因此需要对数据格式进行转换:

library(GD)
library(openxlsx)
library(readxl)
setwd("D:/2007lucc")
data<-read_excel("result.xlsx")
View(data)
str(data)
# 将tibble数据格式转换为data.frame格式
data <- as.data.frame(data) 
#class(data) # 查看数据类型,此时应为data.frame
str(data)

数据结构:

> str(data)
'data.frame':	2000 obs. of  11 variables:
 $ Y  : num  97 97 97 97 97 97 97 97 89 105 ...
 $ X1 : num  17.1 17.6 16.8 16.8 17 ...
 $ X2 : num  -2.45 -2.07 -2.48 -2.43 -2.37 ...
 $ X3 : num  68 68 69.4 68.4 68.4 ...
 $ X4 : num  993 1006 858 961 967 ...
 $ X5 : num  4 4 4 4 4 4 4 4 4 4 ...
 $ X6 : num  446 306 491 393 331 552 422 482 286 638 ...
 $ X7 : num  191 148 151 207 286 ...
 $ X8 : num  5.96 5.19 1.47 2.98 1.04 ...
 $ X9 : num  4 4 4 4 4 4 4 4 4 4 ...
 $ X10: num  23111112 23115192 23111112 23110140 23111112 ...

2.2 确定数据离散化的最优方法与最优分类

  在进行地理探测器分析之前,需要对连续变量进行离散化操作,并且找到最佳离散类别,已进行更好的分析模拟。离散化方法主要包括:equal,natural,quantile,geometric和sd,通过optidisc()函数可以自动选择最优离散化方法和类别数。

#多个变量,包括连续变量
discmethod <-c("equal","natural","quantile","geometric","sd")
discitv <-c(3:7) #离散分类的数量,3到7类,建议不要分太多的类别,否则optidisc()函数运行时间过长
dataFin <- data
data.continuous <- dataFin[, c(1:5, 7:9)] # 只对连续变量进行离散化,一共有7个连续变量
#数据离散化
odc1 <-optidisc(Y~., data = data.continuous ,discmethod, discitv) # 这一步比较耗时,大概几分钟到几十分钟
dim(data.continuous)
plot(odc1)
data.continuous  <-do.call(cbind,lapply(1:7,function(x)data.frame(
                                 cut(data.continuous [, -1][, x],
                                     unique(odc1[[x]]$itv),
                                     include.lowest =TRUE))))
dataFin[,c(2:5, 7:9)] <-data.continuous 

在这里插入图片描述
结果展示:
在这里插入图片描述
在这里插入图片描述

   数据准备好之后就可以进行地理探测器(GD)分析了!!!

2.3 分异及因子探测器(factor detector)

  分异及因子探测主要用于探测Y的空间分异性;以及探测某因子X多大程度上解释了属性Y的空间分异,用q值度量。简单点来说就是环境变量对因变量的贡献度。
在这里插入图片描述
  写论文的时候,尽量将以上原理和公示进行展示和补充。

# 单因子探测器
gd <-gd(Y~., data = dataFin[,c(1, 2:11)])
gd
plot(gd)
> gd
   variable         qv          sig
1        X1 0.43614146 1.387049e-10
2        X2 0.36292021 2.817672e-10
3        X3 0.35501601 8.356258e-10
4        X4 0.21368849 7.493217e-10
5        X5 0.11939089 6.191341e-10
6        X6 0.16985611 2.561658e-10
7        X7 0.00815299 2.947367e-03
8        X8 0.05664708 3.956563e-10
9        X9 0.23192232 3.588341e-10
10      X10 0.35382549 4.703113e-03

在这里插入图片描述

2.4 生态探测器(ecological detector)

  生态探测主要用于比较两因子X1和X2对属性Y的空间分布的影响是否有显著的差异

# 生态探测器
gdeco <-gdeco(Y~., data = dataFin[,c(1, 2:11)])
gdeco
plot(gdeco)
> gdeco
Ecological detector:
   variable   X1   X2   X3   X4   X5   X6   X7   X8   X9  X10
1        X1 <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
2        X2    Y <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
3        X3    Y    N <NA> <NA> <NA> <NA> <NA> <NA> <NA> <NA>
4        X4    Y    Y    Y <NA> <NA> <NA> <NA> <NA> <NA> <NA>
5        X5    Y    Y    Y    Y <NA> <NA> <NA> <NA> <NA> <NA>
6        X6    Y    Y    Y    Y    Y <NA> <NA> <NA> <NA> <NA>
7        X7    Y    Y    Y    Y    Y    Y <NA> <NA> <NA> <NA>
8        X8    Y    Y    Y    Y    Y    Y    Y <NA> <NA> <NA>
9        X9    Y    Y    Y    Y    Y    Y    Y    Y <NA> <NA>
10      X10    Y    N    N    Y    Y    Y    Y    Y    Y <NA>

在这里插入图片描述

2.5 交互因子探测器(interaction detector)

  交互探测器共包含了5种类别,但根据以往的经验,结果以增强或非线性增强作用为主。
在这里插入图片描述
在这里插入图片描述

  这里我选择了一篇论文的交互作用的结果,其中包含了4种类别的交互作用结果。

# 交互作用探测器
gdint <-gdinteract(Y~., data = dataFin[,c(1, 2:11)])
gdint
plot(gdint)
> gdint
Interaction detector:
   variable     X1     X2     X3     X4     X5     X6     X7     X8     X9 X10
1        X1     NA     NA     NA     NA     NA     NA     NA     NA     NA  NA
2        X2 0.4821     NA     NA     NA     NA     NA     NA     NA     NA  NA
3        X3 0.4750 0.4374     NA     NA     NA     NA     NA     NA     NA  NA
4        X4 0.4675 0.4335 0.4599     NA     NA     NA     NA     NA     NA  NA
5        X5 0.4491 0.3925 0.3918 0.3180     NA     NA     NA     NA     NA  NA
6        X6 0.4755 0.4038 0.4377 0.3242 0.3044     NA     NA     NA     NA  NA
7        X7 0.4476 0.3737 0.3636 0.2254 0.1277 0.1890     NA     NA     NA  NA
8        X8 0.4573 0.3837 0.4029 0.2505 0.1910 0.1989 0.0693     NA     NA  NA
9        X9 0.4697 0.4158 0.3823 0.3602 0.2698 0.3462 0.2394 0.2902     NA  NA
10      X10 0.5265 0.4758 0.4726 0.4445 0.3775 0.4457 0.3770 0.4073 0.4016  NA

在这里插入图片描述

总体而言,因子交互作用的结果表现为增强或者非线性增强。

2.6 风险探测器(risk detector)

  判断两个子区域间的属性均值是否有显著的差别。若为N,则表示不显著,即两个子区域内属性均值无差别。若为Y,则有显著差别。

## 风险因子探测器
# 显著性
gdrisk <-gdrisk(Y~X1+X2+X3+X9, data = dataFin[,c(1, 2:11)])
gdrisk
plot(gdrisk)
# 风险探测(平均风险)
riskmean <- riskmean(Y~X1+X2+X3+X9, data = dataFin[,c(1, 2:11)])
riskmean
plot(riskmean)

在这里插入图片描述

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

处理机调度算法即cpu scheduling

i Arrival Time 到达时间Burst Time服务时间 response time开始时间-到达时间 FCFS 按照进程顺序 finsh 按照进程顺序 从0开始依次加上服务时间 周转时间即 finsh时间-到达时间&#xff08;注意不是开始时间&#xff09; waiting time等待时间开始时间-到达时间 带权周转时…

VsCode-PlatformIO 开发环境搭建

在VScode中搜索PlatformIO&#xff0c;然后点击install 安装即可 安装后重新打开vscode&#xff0c;会出现如下界面。

Photoshop揭秘:图像处理领域的领军软件

Photoshop 是一款由 Adobe 企业开发的图像处理软件&#xff0c;也被大家简称为 PS。在广告设计、摄影后期、数字绘画、网页设计等各个领域都得到了广泛的应用&#xff0c;是目前业界最受欢迎的图像处理软件之一。作为一款图像处理软件&#xff0c;Photoshop 为设计者提供了许多…

接到一家公司做团购活动类型的策划海报项目,使用AI给他们设计了相关的海报

在这个充满挑战和机遇的时代&#xff0c;我有幸接到一家公司的委托&#xff0c;为他们策划一场团购活动。这不仅是对我的专业能力的认可&#xff0c;也是对我创新思维的考验。 这家公司是一家知名的电子产品销售商&#xff0c;他们希望通过团购活动来提升产品的销售量和品牌的…

基于国产飞腾2000制作的paddleocr hubserving服务docker镜像文件

目录导航 paddleocr hubserving国产化飞腾、鲲鹏armv8 api服务镜像制作 一、编译paddle 二、准备Dockerfile文件 三、制作paddleocr hubserving服务镜像 四、paddleocr hubserving镜像导出和导入 paddleocr hubserving国产化飞腾、鲲鹏armv8 api服务镜像制作 一、编译padd…

爆火的AI姓名头像号篇篇10w+, 流量主赚麻了...

最近二师兄在刷公众号时&#xff0c;看到一个非常有趣的账号。简单又“暴li”。 几乎篇篇10w。点击去一看&#xff0c;内容也是非常极简&#xff0c;利用姓氏生成头像。一个字都不多。 几乎每篇文末都有广告&#xff0c;一篇10w按照800来算&#xff0c; 一个月大概 ~~一七得七、…

重生奇迹MU整理装备注意事项

想成为奇迹MU的顶尖玩家&#xff0c;整理装备是必不可少的一项技能。在这篇文章中&#xff0c;我们将为您分享一些整理装备的注意事项与技巧&#xff0c;帮助您在游戏中更好地管理装备&#xff0c;提升你的实力。 整理装备&#xff0c;须知几点 整理装备是每位玩家必须完成的…

异步编程中的性能优化技巧

异步编程中的性能优化技巧 在上一篇文章中&#xff0c;我们详细介绍了Python中的异步编程及其基础知识和实战应用。今天&#xff0c;我们将深入探讨异步编程中的性能优化技巧&#xff0c;帮助你进一步提升异步代码的效率。 异步编程中的性能优化技巧结语 异步编程中的常见性能问…

电子设计新宠SmartEDA:揭秘其爆红背后的神秘力量

SmartEDA账号免费领取https://www.ismarteda.com 在当下这个电子科技迅猛发展的时代&#xff0c;电子设计领域的创新层出不穷。其中&#xff0c;SmartEDA作为一颗璀璨的新星&#xff0c;凭借其卓越的性能和便捷的操作体验&#xff0c;迅速在电子设计领域崭露头角&#xff0c;成…

【MAUI】resource xml/file_paths (aka com.xxx.xxx:xml/ file _paths) not found.

APP2260:resource xml/file_paths (aka com.zettlercn.wms:xml/ file _paths) not found. This error is likely caused by an issue with the AndroidManifest.xml file or an Android manifest generation attribute in a source code file MAUI从6.0升级到8.0,调试发现资源…

kylinos 国产操作系统离线安装firefox 麒麟操作系统安装新版本firefox

1. 火狐地址&#xff1a; 下载 Firefox 浏览器&#xff0c;这里有简体中文及其他 90 多种语言版本供您选择 2. 选择&#xff1a; 3. 下载完之后&#xff0c;上传到离线机器 4. 解压缩&#xff1a; tar -xvjf firefox-127.0.1.tar.bz2 5. 去点击解压后的文件夹&#xff0c;找…

mybatisplus字段注入MetaObjectHandler扫描不到我的指定填充字段

使用mybatisplus自带的字段填充策略注入值的时候&#xff0c;发现并没有扫描到我的指定字段。 1. 初始代码 Component Slf4j public class MyMetaObjectHandler implements MetaObjectHandler {private static final String createByFiled "createBy";private stati…

eclipse中没有SERVER的解决办法(超详细)

将 Tomcat 和 Eclipse 相关联时&#xff0c;Eclipse有的版本发现 发现eclipse->【Window】->【Preferences】里没有【server】从而配置不了Runtime Environment。所以需要通过eclipse进行安装。 通过我个人的经验下面给出解决办法&#xff1a; 一、获取 Eclipse版本 点击…

使用MyBatisPlus进行字段的自动填充

使用MyBatisPlus进行字段的自动填充 需求场景 当我们往数据库里面插入一条数据&#xff0c;或者是更新一条数据时&#xff0c;一般都需要标记创建时间create_time和更新时间update_time的值&#xff0c;但是如果我们每张表的每个请求&#xff0c;在执行sql语句的时候我们都手…

绝望的C#:TreeView为什么双击自动展开、折叠?双击事件的参数根本不是双击位置

双击打开编辑窗口应该是个再正常不过的想法吧&#xff1f;但是被自动展开、折叠搅了。 为什么自动展开折叠就出问题了&#xff1f;因为在某些情况下自动展开、折叠改变了节点的显示位置&#xff0c;节点的位置向下了——因为折叠导致下方内容变少&#xff0c;控件为了避免下方出…

六月惊喜| 事件分析Plus上线

前情回顾 ClkLog在四月先上线了一版<事件分析>&#xff0c;可以通过元数据的配置&#xff0c;创建并统计自定义事件的数据情况&#xff08;例如&#xff1a;用户数、触发次数、人均次数&#xff09;。 功能上线后好多小伙伴说希望我们加紧上线自定义的事件分析。ClkLog实…

全新升级微信分销商城小程序源码系统 前后端分离 带完整的安装代码包以及搭建部署教程

系统概述 微信分销商城小程序源码系统是基于先进的技术和理念开发而成的。它旨在为企业和商家打造一个功能齐全、用户体验良好的分销平台&#xff0c;帮助他们更好地管理商品、销售渠道和用户关系&#xff0c;实现业务的快速增长和持续发展。 代码示例 系统特色功能一览 1.多…

JuiceFS 社区版 v1.2 发布,新增企业级权限管理、平滑升级功能

JuiceFS 社区版 v1.2 今天正式发布&#xff0c;这是自 2021 年开源以来的第三个大版本。v1.2 也是一个长期支持版本&#xff08;LTS&#xff09;。我们将持续维护 v1.2 以及 v1.1 这两个版本&#xff0c;v1.0 将停止更新。 JuiceFS 是为云环境设计的分布式文件系统&#xff0c;…

汇川学习笔记7 - 雕刻机项目

1、系统上电轴准备好之后&#xff0c;自动复回原点一次&#xff0c; 2、在雕刻机面板上有三个按钮用来控制画三种图形 3、注意cnc代码放置的文件夹 4、FILE0文件内容 5、FILE1文件内容 6、FILE2文件内容 7、程序代码下载地址 https://download.csdn.net/download/qq_6191667…

HTML(14)——结构伪类选择器和伪元素选择器

结构伪类选择器 作用&#xff1a; 根据元素的结构关系查找元素 选择器说明E:first-child查找第一个E元素E:last-child查找最后一个E元素E:nth-child(N)查找第N个E元素(第一个元素N值为1) 例如&#xff1a;查找第一个li标签&#xff0c;将背景改为绿色 <style> li:fir…