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

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

相关推荐
Channing Lewis1 小时前
PHP 解析 Excel 的那些坑:一次“行号错位”引发的数据丢失
开发语言·php·excel
小小龙学IT1 小时前
Apache Airflow 2.x 深度指南:用 Python 编排一切的现代化工作流引擎
开发语言·python·apache
少爷晚安。1 小时前
Java基础02_JDK&JRE下载安装及环境配置
java·开发语言
小冷爱读书1 小时前
allocator
开发语言·c++
小冷爱读书1 小时前
C++ 单例四种实现完整演进逻辑
开发语言·c++·c++学习
bubiyoushang8882 小时前
电力线信道“五类噪声”仿真MATLAB
开发语言·matlab
cici158742 小时前
彩色图像模糊增强(Fuzzy Enhancement)MATLAB 实现
开发语言·算法·matlab
kaikaile19952 小时前
图像稀疏化分解 + 压缩感知(CS)重建 MATLAB
开发语言·计算机视觉·matlab
yugi9878382 小时前
PNCC(Power-Normalized Cepstral Coefficients)— MATLAB 实现
开发语言·人工智能·matlab