|||
继之前的帖子,该部分的代码,主要来自咨询我问题的朋友提供的。我帮忙查看运行代码,下述的代码相对会专业一点,可能更利于生态学的网友。
1. 数据读取
library(spatstat) setwd("C:/Users/yzhlin/Desktop/LS") df<-readxl::read_excel("data1.xls", sheet=1,skip=1) df1<-df[,1:12]
2.点格局函数
2.1 单变量g函数(含包迹线)
sp<-ppp(df1s$Xcoor.60,df1s$Ycoor.60, range(df1s$Xcoor.60),range(df1s$Ycoor.60)) ##零模型为完全空间随机分布 g11.enve.CSR=function(p){ ##生成包迹线,pcf表示g函数,从0到100m,步长为1. enve=envelope(p,pcf,r=seq(0,100,1)) enve } sp.res1<-g11.enve.CSR(sp) plot(sp.res1)
##零模型为sigma=R的异质泊松分布 g11.enve.HP=function(p,R){ ##生成包迹线,pcf表示g函数,从0到100m,步长为1. enve=envelope(p,pcf,r=seq(0,100,1), simulate=expression(superimpose(p,rpoispp(density(p,sigma=R)))) ) enve } sp.res2<-g11.enve.HP(sp,30) # slowly! plot(sp.res2)
df1s.2<-subset(df1,Specc=="华润楠") sp.2<-ppp(df1s.2$Xcoor.60,df1s.2$Ycoor.60, range(df1s.2$Xcoor.60),range(df1s.2$Ycoor.60)) g12=function(p1,p2){ #p1,p2为ppp形式 ##可能由于之前的操作,在工作空间中存在的p已经有了标记,这一步去掉标记 p1=unmark(p1) p2=unmark(p2) ##给p1,p2重新加上标记 marks(p1)=as.factor(rep("A",npoints(p1))) marks(p2)=as.factor(rep("B",npoints(p2))) ##合并p1,p2,这样才可以用pcf这个函数(计算双变量g函数) p21=superimpose(p2,p1) ##生成标记线 even=envelope(p21,pcfcross,r=seq(0,100,1)) even } sp.res12.g12<-g12(sp,sp.2) plot(sp.res12.g12)
g12.AC=function(p1,p2,R){ #p1,p2为ppp形式 #R是异质泊松分布取的sigma值 p1=unmark(p1) p2=unmark(p2) ##给p1,p2重新加上标记 marks(p1)=as.factor(rep("A",npoints(p1))) marks(p2)=as.factor(rep("B",npoints(p2))) ##合并p1,p2,这样才可以用pcf这个函数(计算双变量g函数) p21=superimpose(p2,p1) ##生成标记线 even=envelope(p21,pcfcross,r=seq(0,100,1), simulate= expression( superimpose(p2,rmpoispp(density(p1,sigma=R),types="A")) ) ) even } sp.res12.g12.AC<-g12.AC(sp,sp.2,R=30) plot(sp.res12.g12.AC)
P12=function(p1,p2){ #p1,p2为ppp形式 p1=unmark(p1) p2=unmark(p2) ##给p1,p2重新加上标记 marks(p1)=as.factor(rep("A",npoints(p1))) marks(p2)=as.factor(rep("B",npoints(p2))) ##合并p1,p2,这样才可以用pcf这个函数(计算双变量g函数) p21=superimpose(p2,p1) ##采用随机标签零模型,rlabel函数随机p21 even=envelope(p21,markconnect,r=seq(0,100,1), simulate= expression( rlabel(p21,labels=factor(c("B", "A")), permute=FALSE) ) ) even } sp.res12.P12<-g12.AC(sp,sp.2) plot(sp.res12.P12)
sp2<-ppp(df1s$Xcoor.60,df1s$Ycoor.60, range(df1s$Xcoor.60),range(df1s$Ycoor.60), marks=df1s$Dbh) EDBH=envelope(sp2,markcorr,r=seq(0,50,1), simulate=expression( rlabel(sp2, labels=marks(sp2), permute=TRUE) ), savefuns=TRUE, savepatterns=TRUE) plot(EDBH)
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-11-28 10:42
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社