确定森林间隙内的树木是否使用R进行聚类?


14

所附的数据集显示了大约50个大小不一的森林林中的大约6000棵树苗。我对学习这些树苗如何在各自的间隙(即成簇,随机,分散)内生长感兴趣。如您所知,传统方法是运行Global Moran'sI。但是,间隙聚集中的树木聚集似乎是对Moran's I的不当使用。我对Moran's I使用50米的阈值距离进行了一些测试统计,产生了无意义的结果(即p值= 0.0000000 ...)。缺口聚集之间的相互作用很可能产生这些结果。我曾考虑过创建一个脚本来遍历各个树冠间隙并确定每个间隙内的聚类,尽管向公众展示这些结果是有问题的。

量化集群中集群的最佳方法是什么?

在此处输入图片说明


1
Aaron,您说您尝试运行Moran's I,是否有兴趣测量树苗的属性与相邻树苗的属性的比较(即您是否正在处理标记的点模式)?标题似乎暗示您仅对树苗相对彼此的位置感兴趣,而不对树苗的属性感兴趣。
MannyG

@MannyG是的,我只想确定树苗是否相对于任何给定林隙内其他树苗的位置成簇。仅有一种感兴趣的树种,而幼树的大小则不受关注。
亚伦

Answers:


7

您没有统一的随机字段,因此尝试一次分析所有数据将违反您选择对问题进行统计的假设。从您的帖子中还不清楚您的数据是否是标记点过程(即与每个树位置关联的直径或高度)。如果此数据不代表标记的过程,则我不知道您如何应用Moran's-I。如果数据仅表示空间位置,我建议使用带Besag-L变换的Ripley's-K标准化零期望值。这允许对聚类进行多尺度评估。如果您的数据具有关联的值,那么最好的选择是本地Moran's-I(LISA)。我实际上会用两个统计数据来查看它。无论您选择什么,您仍然需要遍历每个站点以产生有效结果。这是一些示例R代码,用于使用内置的红木树苗数据集对Ripley's-K / Besag's-L进行Monte Carlo模拟。修改它以遍历您的站点并为每个站点生成图表应该非常简单。

# ADD REQUIRED PACKAGES
require(sp)
require(spatstat)
options(scipen=5)

# USE REDWOOD SAPLING DATASET
spp <- SpatialPoints(coords(redwood))

###################################################
###### START BESAG'S-L MONTE CARLO  ANALYSUS ######
###################################################
# CREATE CONVEX HULL FOR ANALYSIS WINDOW                       
W=ripras(coordinates(spp)) 

# COERCE TO spatstat ppp OBJECT
spp.ppp=as.ppp(coordinates(spp), W)                     
  plot(spp.ppp) 

# ESTIMATE BANDWIDTH
area <- area.owin(W)
lambda <- spp.ppp$n/area
 ripley <- min(diff(W$xrange), diff(W$yrange))/4
   rlarge <- sqrt(1000/(pi * lambda))
     rmax <- min(rlarge, ripley)
bw <- seq(0, rmax, by=rmax/10)  

# CALCULATE PERMUTED CROSS-K AND PLOT RESULTS       
Lenv <- envelope(spp.ppp, fun="Kest", r=bw, i="1", j="2", nsim=99, nrank=5, 
                 transform=expression(sqrt(./pi)-bw), global=TRUE)            
plot(Lenv, main="Besag's-L", xlab="Distance", ylab="L(r)", legend=F, col=c("white","black","grey","grey"), 
    lty=c(1,2,2,2), lwd=c(2,1,1,1) )
     polygon( c(Lenv$r, rev(Lenv$r)), c(Lenv$lo, rev(Lenv$hi)), col="lightgrey", border="grey")
       lines(supsmu(bw, Lenv$obs), lwd=2)
       lines(bw, Lenv$theo, lwd=1, lty=2)
         legend("topleft", c(expression(hat(L)(r)), "Simulation Envelope", "theo"), pch=c(-32,22),
                col=c("black","grey"), lty=c(1,0,2), lwd=c(2,0,2), pt.bg=c("white","grey"))

1
但是,您不能只使用凸包作为点模式的窗口!请记住,窗口是产生点的图案所作用的区域。您先验地知道树木仅在这些设置的区域中生长,并且您必须设置窗口以反映出来。您可以通过将K(r)的范围设置为很小的范围(约为清除大小的0.3倍)来减轻这种情况,但是由于缺少边缘效果校正,您会得到有偏差的结果。Jeffrey使用整个研究区域的大小来定义他的rmax。
Spacedman 2012年

1
在我的示例中,是,我正在使用整个区域。因此,这就是为什么我建议循环遍历每个示例站点(间隙)的原因。每次将子集划分到特定样本区域时,您都将重新运行分析。您无法将整个研究区域视为随机字段,因为您没有连续采样。实际上,仅采样了缺口,您将获得独立的图。默认情况下,我正在调用的Kest函数使用“边界”边缘校正。还有其他可用的边缘校正选项。我认为您的实验单位是树冠间隙,应该这样分析。
杰弗里·埃文斯

1
在考虑这一点。您实际上应该使用代表每个间隙的多边形作为窗口。如果您对问题进行子集化以反映实验单位,则CSR和K将产生偏差,因为该面积并不反映实际的冠层间隙大小。我和@Spacedman的建议都存在此问题。
Jeffrey Evans

2
请注意,我的扩展示例仅使用了粗网格,因为这是一种使用大致正确的结构创建事物的相当简单的方法。您的面具应该看起来像您开阔的森林区域的地图。尝试从数据定义掩码在技术上是错误的!
Spacedman

1
@Spacedman。我喜欢您的方法,并且肯定有效。我特别担心的是树冠间隙是实验单位。在您的方法中,如果两个间隙接近,则带宽可以合理地包括来自不同采样单位的观测值。另外,所得的统计数据不应反映实验单元的“池”,而应代表每个单元,并推断出跨实验单元的通用模式得出的空间过程。如果从全球范围来看,它代表了一个不稳定的强度过程,它违反了统计假设。
杰弗里·埃文斯

4

您所拥有的是带有窗口的点模式,该窗口是许多小的不连续的多边形区域。

package:spatstat只要您在正确的窗口中输入CSR,就应该可以使用CSR中的任何测试。这可以是定义每个清除的多个(x,y)对集合,也可以是空间上(0,1)值的二进制矩阵。

首先让我们定义一些看起来像您的数据的东西:

set.seed(310366)
nclust <- function(x0, y0, radius, n) {
               return(runifdisc(n, radius, centre=c(x0, y0)))
             }
c = rPoissonCluster(15, 0.04, nclust, radius=0.02, n=5)
plot(c)

并假装我们的清除是方形单元格,它恰好是这样的:

m = matrix(0,20,20)
m[1+20*cbind(c$x,c$y)]=1
imask = owin(c(0,1),c(0,1),mask = t(m)==1 )
pp1 = ppp(x=c$x,y=c$y,window=imask)
plot(pp1)

因此,我们可以在该窗口中绘制这些点的K函数。我们希望这是非CSR,因为这些点似乎聚集在单元中。请注意,我必须将距离范围更改为较小-像元大小的数量级-否则将在整个图案大小的距离上评估K函数。

plot(Kest(pp1,r=seq(0,.02,len=20)))

如果我们在同一单元格中生成一些CSR点,则可以比较K函数图。这应该更像是CSR:

ppSim = rpoispp(73/(24/400),win=imask)
plot(ppSim)
plot(Kest(ppSim,r=seq(0,.02,len=20)))

斑驳的窗户中的两点图案

您实际上看不到第一个模式中聚集在单元格中的点,但是如果在图形窗口中单独绘制点,则其清晰可见。第二个图案中的点在像元内是均匀的(并且不存在于黑色区域中),并且K函数Kpois(r)与CSR K函数明显不同,对于聚类数据,CSR K函数与均匀数据相似。


2

除了安迪的帖子:

您要计算的是空间同质性的度量(假设是:“您的点是否聚类了吗?”),例如Ripley的L和K函数

这篇博客文章很好地解释了R中的操作方法。根据描述的代码,我将首先标记数据集中的每个聚类,然后通过Ripley的K为每个聚类循环计算关键包络


我目前已删除我的答案。一些简短的分析表明,基于K均值的机会性识别图将本地统计数据的聚集程度比偶然性提示的要高。尽管+1仍然适用此答案(只是根据数据制作窗口比我最初的答案所提出的问题要多)。
安迪W
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.