yzhlinscau的个人博客分享 http://blog.sciencenet.cn/u/yzhlinscau

博文

生态R包spatstat的部分用法(二)

已有 8496 次阅读 2019-1-7 11:02 |个人分类:R|系统分类:科研笔记| 空间生态学, 点格局函数

继之前的帖子,该部分的代码,主要来自咨询我问题的朋友提供的。我帮忙查看运行代码,下述的代码相对会专业一点,可能更利于生态学的网友。


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)

blob.png


##零模型为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)

blob.png

2.2 双变量g函数(完全随机零模型)

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)

blob.png

2.3 双变量g函数(先决条件零模型

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)

blob.png

2.4 双变量P函数

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)

blob.png

2.5 标记相关函数

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)

blob.png










https://blog.sciencenet.cn/blog-1114360-1155740.html

上一篇:生态R包spatstat的部分用法(一)
下一篇:生态R包spatstat的部分用法(三)--地形分析
收藏 IP: 125.88.24.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (1 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-11-28 10:42

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部