单双变量Ripley’s K函数 R 语言实现

素材汇总(免费下载或可通过主页的联系方式添加好友获取):【免费】单双变量Ripley'sK函数R语言实现(CSDN分享)资源-CSDN下载

1.使用方式

不再过多介绍Ripley's K函数,详情可参考文章开头提供的论文素材,知网引用格式为:1赖冠中.利用Ripley's K函数法的制造业微观企业数据空间集聚分析J.地理空间信息,2026,24(3):61-66.

,下面主要介绍R语言的使用:

R 复制代码
library(sf)
library(spatstat)
library(dplyr)

colors()

POIZZYppp <- as.ppp(st_read("E:\\论文\\K函数\\矢量数据\\BY_POI_制造业_分类.shp",query = "SELECT X7DL FROM \"BY_POI_制造业_分类\""))
POIZZY_Fppp <- as.ppp(st_read("E:\\论文\\K函数\\矢量数据\\BY_POI_制造业_分类.shp",query = "SELECT X7DL FROM \"BY_POI_制造业_分类\" WHERE  X7DL = 'PM'" ) )

POIZZYMJDppp <- as.ppp(st_read("E:\\论文\\K函数\\矢量数据\\BY_POI_制造业_分类.shp" ,query = "SELECT XYSMJ FROM \"BY_POI_制造业_分类\"" ) )
POIZZY_FMJDppp <- as.ppp(st_read("E:\\论文\\K函数\\矢量数据\\BY_POI_制造业_分类.shp",query = "SELECT XYSMJ FROM \"BY_POI_制造业_分类\" WHERE  XYSMJ = 'Ci'" ) )

wd3 <- as.owin(st_read("E:\\论文\\K函数\\矢量数据\\原始建_Dis全制_聚_Sim2.shp"))
areagywin <- as.owin(st_read("E:\\论文\\K函数\\矢量数据\\工业集聚区gj2000_Copy_Sim.shp"))
areagywin2 <- as.owin(st_read("E:\\论文\\K函数\\矢量数据\\工业集聚区gj2000_Copy_Sim2.shp"))
areagywin3 <- as.owin(st_read("E:\\论文\\K函数\\矢量数据\\工业集聚区gj2000_Copy_Sim3.shp"))
areagywin4 <- as.owin(st_read("E:\\论文\\K函数\\矢量数据\\工业集聚区gj2000_Copy_Sim4.shp"))
areagywin5 <- as.owin(st_read("E:\\论文\\K函数\\矢量数据\\工业集聚区gj2000_Copy_Buf_Sim_Eli1.shp"))
areagywin6 <- as.owin(st_read("E:\\论文\\K函数\\矢量数据\\工业集聚区gj2000_Copy_Buf_Sim_Eli2.shp"))

POIZZYpppwin3 <- POIZZYppp[areagywin3]
POIZZYpppwin5 <- POIZZYppp[areagywin5]
POIZZYpppwin6 <- POIZZYppp[areagywin6]
POIZZY_Fpppwin6 <- POIZZY_Fppp[areagywin6]

POIZZYMJDpppwin3 <- POIZZYMJDppp[wd3]
POIZZY_FMJDpppwin3 <- POIZZY_FMJDppp[wd3]
POIZZYMJDpppwin6 <- POIZZYMJDppp[areagywin6]
POIZZY_FMJDpppwin6 <- POIZZY_FMJDppp[areagywin6]

GYMJD_Lest <- Lest(POIZZYMJDpppwin6,correction="translation",r = seq(0, 8000, length.out = 51))
EGYMJD_FCi_Lest <- envelope(POIZZY_FMJDpppwin6, Lest, nsim=39,nrank = 1,correction="translation",r = seq(0, 8000, length.out = 801))
plot(GYMJD_Lest,.-r~r,xlim =c(0,8000))
plot(EGYMJD_FTi_Lest,.-r~r,xlim =c(0,8000))
plot(GYMJD_Lest,.-r~r,xlim =c(0,8000),ylim =c(-200,1500),legend=FALSE)
plot(EGYMJD_FLi_Lest,.-r~r,xlim =c(0,8000),ylim =c(-200,1500), col=c("magenta"   , "red",  "gray",  "gray"),shadecol=rgb(1, 0, 1, alpha = 0.2),legend=FALSE,add=TRUE)
dev.copy(png, file = "E:\\论文\\K函数\\出图\\kest\\GYMJDall2.png",width = 2400, height = 1800, res = c(300, 300))
dev.off()

POIZZYMJDpppms <- POIZZYMJDppp %mark% factor(st_read("E:\\论文\\K函数\\矢量数据\\BY_POI_制造业_分类.shp",query = "SELECT XYSMJ FROM \"BY_POI_制造业_分类\"")$"XYSMJ")
marks(POIZZYMJDpppms)
POIZZYMJDpppwin3 <- POIZZYMJDpppms[wd3]
marks(POIZZYMJDpppwin3)
E_FTiCi_Lcross <- envelope(POIZZYMJDpppwin3,Lcross,funargs=c("Ti","Ci"), nsim=39,nrank = 1,correction="translation",r = seq(0, 8000, length.out = 801))
plot(EMJD_FCi_Lest,.-r~r,xlim =c(0,8000),ylim =c(-200,2000), col=c("gold"  , "red",  "gray",  "gray"),shadecol=rgb(1, 0.843, 0, alpha = 0.2),legend=FALSE,add=TRUE)
plot(E_FLiTi_Lcross,.-r~r,xlim =c(0,8000))
plot(E_FTiCi_Lcross,.-r~r,xlim =c(0,8000),ylim =c(-200,2000), col=c( "green"  , "red",  "gray",  "gray"),shadecol=rgb(0, 1, 1, alpha = 0.2),legend=FALSE,add=TRUE)
dev.copy(png, file = "E:\\论文\\K函数\\出图\\kest\\MJDLcrossall2.png",width = 2400, height = 1800, res = c(300, 300))
dev.off()


E6_Lest <- envelope(POIZZYpppwin6, Lest, nsim=39,nrank = 1,correction="translation",r = seq(0, 8000, length.out = 801))
E_F6PM_Lest <- envelope(POIZZY_Fpppwin6, Lest, nsim=39,nrank = 1,correction="translation",r = seq(0, 8000, length.out = 801))

plot(EMJD_Lest,.-r~r,xlim =c(0,8000))
plot(E_F6PM_Lest,.-r~r,xlim =c(0,8000))

plot(E6_Lest,.-r~r,xlim =c(0,8000))
plot(E_F6PM_Lest,.-r~r,xlim =c(0,8000))

for (i in c("AF","TC","MC","WF","PP","ME","PM")) { 
    plot(get(paste0("E_F6", i,"_Lest")),.-r~r,xlim =c(0,8000))
}

plot(E_Lest,.-r~r,xlim =c(0,8000),ylim =c(-1500,2500))
plot(E6_Lest,.-r~r,xlim =c(0,8000),ylim =c(-1500,2500), col=c("black" , "red",  "gray",  "gray"),shadecol=rgb(0, 0, 0, alpha = 0.2),legend=FALSE)
plot(E_F6PM_Lest,.-r~r,xlim =c(0,8000),ylim =c(-1500,2500), col=c("cyan" , "red",  "gray",  "gray"),shadecol=rgb(0, 1, 1, alpha = 0.2),legend=FALSE,add=TRUE)

dev.copy(png, file = "E:\\论文\\K函数\\出图\\kest\\GYall2.png",width = 2400, height = 1800, res = c(300, 300))
dev.off()

POIZZYpppms <- POIZZYppp %mark% factor(st_read("E:\\论文\\K函数\\矢量数据\\BY_POI_制造业_分类.shp",query = "SELECT X7DL FROM \"BY_POI_制造业_分类\"")$"X7DL")
POIZZYpppmswin6 <- POIZZYpppms[areagywin6]


E_FAFTC_Lcross <- envelope(POIZZYpppmswin6,Lcross,funargs=c("AF","TC"), nsim=39,nrank = 1,correction="translation",r = seq(0, 8000, length.out = 801))
plot(E_FAFTC_Lcross ,.-r~r,xlim =c(0,8000))

df <-as.data.frame(E_FLcross)
head(df,10)

主要使用library(sf)、library(spatstat)、library(dplyr)中的函数,其中关键函数是envelope,需要注意的是使用as.owin转换为窗口格式以及置信区间的透明绘制。

单变量模式图1

双变量模式图2

其中横坐标r 为搜索阈值,纵坐标使用见下图3:

图3

2.总结

如果觉得有帮助,欢迎使用,如有疑问或交流可联系主页的联系方式。

相关推荐
xieliyu.11 小时前
UPD协议结构以及开发中注意事项
java·开发语言·笔记·java-ee
Yweir11 小时前
AI大模型开发-Python介绍、版本说明
开发语言·人工智能·python
峥嵘life19 小时前
Android16 311Y3 EAP-TLS 网络连接失败分析与修复总结
android·开发语言·人工智能·php
临床数据科学和人工智能兴趣组1 天前
网络爬虫(Web Scraping)是一种用于自动提取网页内容的技术
r语言·r语言-4.2.1
mqiqe1 天前
AgentScope Java Harness:4. 双层记忆系统 让 Agent 拥有真正的“长期大脑“
java·开发语言
gugucoding1 天前
46. 【Java】JUC并发工具:让并发更简单
java·开发语言
Nebula_g1 天前
JavaSE基础语法:面向对象高级(代码中的成分)
java·开发语言·编程·javase·技术栈·高级语法
for_ever_love__1 天前
python基础语法学习: 异常的传递性
开发语言·python·学习
依然鸣1 天前
PTA团体程序设计天梯赛L1真题讲解L1-077-080
开发语言·c++·算法·深度优先·pat考试·图论
byxdaz1 天前
QT中服务使用
开发语言·qt