【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)
> gdvariable         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.rhkb.cn/news/359395.html

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

相关文章

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…

超越招聘技术人才目标的最佳技术招聘统计数据

研究发现&#xff0c;难以找到的人才比以往任何时候都更难找到&#xff1a;根据新人才委员会招聘调查报告&#xff1a;2024年难以找到的人才的战略和战略&#xff0c;60%的受访者表示&#xff0c;熟练人才的招聘时间比一年前长。调查进一步揭示了以下关于招聘技术的关键事实&am…

Git 常用命令,一文全搞懂

注意&#xff1a;每一次切换分支的时候&#xff0c;本地代码都会自动跟随改变&#xff0c;不需要重新pull,除非有人更新了代码 git remote add origin 地址 连接远程仓库 git clone 地址 克隆项目到本地 git init 更新本地隐藏文件初始化仓库 git add . 代…

Java--Data类

1.Data类 java.util.Date.表示指定的时间信息&#xff0c;不支持国际化 构造方法 new Date()&#xff1a;当前系统日期和时间 new Date(long)&#xff1a;给定日期和时间 主要方法&#xff1a; after(Date):判断当前日期对象是否在给定日期对象之后 before(Date):判断当前日期…

基础购物车(Javascript)

使用Javascript写一个基础购物车&#xff0c;其中包含商品数量加加减减&#xff0c;下面的总价和总数量跟着商品数量变动&#xff0c;还可以自己添加需要的商品。 基础购物车的结构样式如下&#xff1a; HTML代码&#xff1a; <body><table border"1px" c…

LeetCode26. 删除有序数组中的重复项题解

LeetCode26. 删除有序数组中的重复项题解 题目链接&#xff1a; https://leetcode.cn/problems/remove-duplicates-from-sorted-array 题目描述&#xff1a; 给你一个 非严格递增排列 的数组 nums &#xff0c;请你 原地 删除重复出现的元素&#xff0c;使每个元素 只出现一…

JavaWeb——Mysql的启动/登录/卸载

目录 1.Mysql服务器 2.Mysql的简单使用 2.1 启动Mysql&#xff1a; 2.2 登录Mysql 2.3 退出 3. 连接别人的数据库 4.卸载mqsql 1.Mysql服务器 安装了Mysql的计算机都成为Mysql服务器 2.Mysql的简单使用 2.1 启动Mysql&#xff1a; 第一种方法&#xff1a;搜索服务&am…

一文读懂交换机MAC地址表:五大关键点,图解21步

HCIA 新班开课了华为HCIA课程介绍苏州面授班 | 全国直播班循环开班&#xff0c;免费重学前言 什么是MAC地址表?MAC地址表有什么作用&#xff1f;MAC地址表里面包含了哪些要素&#xff1f;今天带你好好唠唠。 我们以一个案例为例&#xff1a; 如上图&#xff1a;PC1和PC2通…

2024.6.24 IDEA中文乱码问题(服务器 控制台 TOMcat)实测已解决

1.问题产生原因&#xff1a; 1.文件编码不一致&#xff1a;如果文件的编码方式与IDEA设置的编码方式不一致&#xff0c;就会产生乱码。确保文件和IDEA使用相同的编码&#xff0c;通常是UTF-8。2.IDEA设置问题&#xff1a;检查IDEA的全局编码设置和项目编码设置是否正确。3.终端…

adb 查看哪些应用是双开的

adb shell pm list users 得到 这 里有 user 0 ,11,999 其中0是系统默认的&#xff0c;11是平行空间的&#xff0c;999是双开用户 pm list packages --user 999 -3 得到了999用户安装第三方应用的包名 pm list packages --user 11 -3 得到了隐私空间用户安装第三方应用的…

Windows环境如何ssh远程连接本地局域网内的Archcraft系统

文章目录 前言1. 本地SSH连接测试2. Archcraft安装Cpolar3. 配置 SSH公网地址4. 公网远程SSH连接小结 5. 固定SSH公网地址6. SSH固定地址连接 前言 本文主要介绍如何在Archcraft系统中安装Cpolar内网穿透工具,并以实现Windows环境ssh远程连接本地局域网Archcraft系统来说明使用…

React+TS 从零开始教程(2):简中简 HelloWolrd

源码链接&#xff1a;https://pan.quark.cn/s/c6fbc31dcb02 这一节&#xff0c;我们来见识ReactTS的威力&#xff0c;开始上手开发第一个组件&#xff0c;什么组件呢&#xff1f; 当然是简中简的 HelloWolrd组件啦。 在src下创建一个components&#xff0c;然后新建Hello.tsx …

mp4转换成mp3怎么转?教你几种值得收藏的转换方法!

mp4转换成mp3怎么转&#xff1f;MP4&#xff0c;这一深入人心的数字多媒体容器格式&#xff0c;无疑在当今数字世界中占据了一席之地&#xff0c;那么&#xff0c;它究竟有何过人之处呢&#xff1f;首先&#xff0c;MP4的跨平台兼容性是其一大亮点&#xff0c;不论是在Windows的…

MySQL字典数据库设计与实现 ---项目实战

软件准备✍&#xff1a;Mysql与Navicat可视化命令大全 ----项目实战 文章前言部分 目录 一.摘要 二.设计内容 三.项目实现 一.摘要 本项目关注于字典数据库表结构的设计和数据管理。通过现有的sql文件&#xff0c;实现system_dict_type和system_dict_data两个数据表。随后…

文本批量高效编辑神器:空格秒变分隔符,提升工作效率

在信息爆炸的时代&#xff0c;文本处理已成为我们日常工作中不可或缺的一部分。然而&#xff0c;面对海量的文本数据&#xff0c;如何高效、准确地进行编辑和整理&#xff0c;成为了我们面临的难题。今天&#xff0c;我要向大家介绍一款文本批量高效编辑神器——首助编辑高手&a…

微信小程序轮播图

效果图 详情可见 微信小程序 参照&#xff1a;swiper | uni-app官网 代码&#xff1a; <!--轮播图-- > <swiper interval"2000" autoplay"true" circular"true" style"height: 300px;"><swiper-item style&qu…

Redis—String数据类型及其常用命令详解

文章目录 Redis概述1.Redis-String数据类型概述2.常用命令2.1 SET&#xff1a;添加或者修改已经存在的一个String类型的键值对2.2 GET&#xff1a;根据key获取String类型的value2.3 MSET&#xff1a;批量添加多个String类型的键值对2.4 MGET&#xff1a;根据多个key获取多个Str…

前后端分离项目面试总结

一&#xff1a;是否登录状态 服务端登录的时候&#xff0c;给分配一个session用于存储数据&#xff0c;同时将sessionID返回给浏览器&#xff0c;浏览器通过cookie把sessionID存储起来&#xff0c;下次访问时携带上&#xff0c;服务端就可以通过sessionID来确定用户是否登录。 …

pdf压缩大小,PDF压缩大小不影响清晰度

你是否曾为PDF文件过大而烦恼&#xff1f;想要分享或上传文件时&#xff0c;却因为它的体积而束手无策&#xff1f;别担心&#xff0c;今天我将为大家分享一些简单实用的 PDF 压缩技巧&#xff0c;让你的文件轻松压缩pdf。 打开“轻云处理pdf官网”&#xff0c; 的网站。然后上…

安徽理工大学2计算机考研情况,招收计算机专业的学院和联培都不少!

安徽理工大学&#xff08;Anhui University of Science and Technology&#xff09;&#xff0c;位于淮南市&#xff0c;是安徽省和应急管理部共建高校&#xff0c;安徽省高等教育振兴计划“地方特色高水平大学”建设高校&#xff0c;安徽省高峰学科建设计划特别支持高校&#…