单双变量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.总结

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

相关推荐
小羊没烦恼!35 分钟前
T-SQL查询进阶--理解SQL SERVER中的分区表
服务器·开发语言·前端·javascript·html
爱吃香菜的初学者1 小时前
十六.Linux——多线程(2)
linux·运维·开发语言
jeo陽1 小时前
04-循环实战:素数、最大公约数、级数求和与枚举法
c语言·开发语言·数据结构
暖核1 小时前
kubeadm 集群运维:Worker 节点下线删除、整套集群销毁重建指南
运维·开发语言·php
tachibana22 小时前
Go 语言里的 Context 是什么?
开发语言·后端·golang·go·语言
天桥下的卖艺者2 小时前
R语言使用ggcube包轻松绘制文章中的各类3D图形
开发语言·3d·r语言
唐钰小宝B3 小时前
深度解读 JDK 8、JDK 11、JDK 17 和 JDK 21 的区别
java·开发语言·windows
知识分享小能手4 小时前
C学习教程,从入门到精通,C语言指针 —— 详细知识点总结(10)
c语言·开发语言·学习
熊猫钓鱼>_>4 小时前
开源鸿蒙平台 KMP 三方库 kotlin-csv 适配全流程:从编码假设到沙箱真机互通验证
开发语言·人工智能·华为·kotlin·harmonyos·鸿蒙
张张123y4 小时前
# 后端第七课:FastAPI 实战入门(用刚学的 Python 写第一个 API 接口)
开发语言·python·mysql·api·fastapi