如何在spatstat中对带定量标记的双变量点模式做标记相关分析?
spatstat定量双变量标记分析相关问题解答
问题1:对一种或多种点模式进行定量双变量标记分析的流程
- 数据准备:确保点模式是
spatstat的ppp对象,定量标记为数值型向量。单物种双标记场景下,将两个标记存入marks数据框;多物种各带定量标记时,合并多个点模式为多类型ppp对象,同时保留各自的定量标记列。 - 数据校验:用
summary(X)查看点模式和标记的统计特征,确认无缺失值、标记类型正确;通过plot(X, markcol=marks(X)$diameter)可视化点分布与标记的初步关联。 - 方法选择:根据研究目标匹配函数:
- 单一点模式内两个定量标记的空间关联:使用
markcorr - 两个不同点模式(或多类型模式的两类)之间的定量标记关联:使用
markcrosscorr
- 单一点模式内两个定量标记的空间关联:使用
- 计算分析函数:调用对应函数时,指定距离序列
r、边缘校正方法(如correction="Ripley"适用于规则区域,"translate"适用于不规则区域)。示例:# 单模式双标记分析 mc_self <- markcorr(X, mark1="diameter", mark2="growth", r=seq(0,10,0.5)) # 双模式标记交叉分析 mc_cross <- markcrosscorr(X_combined, i="sp1", j="sp2", mark1="diam1", mark2="diam2", r=seq(0,10,0.5)) - 结果解读与验证:
- 函数值与1对比:>1为正相关,<1为负相关,≈1无关联
- 用
envelope()生成零模型置信区间,判断关联显著性:env <- envelope(mc_cross, nsim=99, simulate=expression(resample(X_combined, control=list(marks="swap")))) plot(env) - 结合距离区间分析关联的空间尺度特征
- 补充分析:若关联显著,可进一步分析标记的条件分布,或拆分距离段细化关联规律。
问题2:用标记相关函数(markcorr)对带定量标记的点模式X1和X2进行双变量比较的策略
注意:markcorr默认用于单一点模式内的标记自相关,双模式间的定量标记关联更适合用markcrosscorr,具体策略如下:
- 合并点模式:将X1和X2合并为多类型
ppp对象,保留各自的定量标记:X_combined <- superimpose(sp1=X1, sp2=X2) marks(X_combined) <- data.frame(species=marks(X_combined), diameter=c(marks(X1), marks(X2))) - 计算标记交叉相关函数:指定两个物种类型和对应的定量标记,设置合理的距离序列与校正方法:
mc <- markcrosscorr(X_combined, i="sp1", j="sp2", mark1="diameter", mark2="diameter", r=seq(0,15,1), correction="translate") - 生成显著性验证的置信区间:采用标记交换的零模型(保持点位置和物种类型,随机打乱标记),模拟生成置信区间:
env <- envelope(mc, nsim=99, simulate=expression(resample(X_combined, control=list(marks="swap")))) - 结果解读:
- 若某距离r处函数值>1:说明该距离下sp1的大个体附近更易出现sp2的大个体(正相关)
- 若函数值<1:说明sp1大个体附近sp2小个体占比更高(负相关)
- 若实际曲线落在置信区间外,说明该尺度下的关联具有统计显著性
- 注意事项:距离序列的最大值不要超过研究区域最小边长的1/4,避免边缘效应干扰结果。
问题3:评估sp1的X1不同大小个体与sp2的X2不同大小个体的关联,能否用双变量标记相关函数?策略是什么?
完全可以通过双变量标记交叉相关函数实现,无需将定量标记转为定性分组,具体策略:
- 合并多类型点模式:将X1(sp1)和X2(sp2)合并为一个多类型
ppp对象,统一存储直径标记:X_combined <- superimpose(sp1=X1, sp2=X2) # 假设X1和X2的marks直接是直径数值 marks(X_combined) <- data.frame(species=marks(X_combined), diameter=c(marks(X1), marks(X2))) - 计算定量标记交叉相关函数:调用
markcrosscorr,指定两个物种类型和直径标记,设置距离序列与校正方法:mc <- markcrosscorr(X_combined, i="sp1", j="sp2", mark1="diameter", mark2="diameter", r=seq(0,20,1), correction="Ripley") - 验证显著性:用标记交换的零模型生成置信区间,判断关联是否显著:
env <- envelope(mc, nsim=99, simulate=expression(resample(X_combined, control=list(marks="swap")))) plot(env, main="Sp1与Sp2直径的空间交叉关联") - 结果解读:
- 函数值>1:对应距离下,sp1和sp2的个体直径呈正空间关联(大个体聚在一起)
- 函数值<1:对应距离下,sp1大个体与sp2小个体倾向于共存(负关联)
- 曲线超出置信区间的距离段,说明该尺度下的关联是显著的
- 可选细化:如果需要聚焦特定大小组的关联,可先对直径按分位数(如前25%、中间50%、后25%)分组,转为定性标记后用
crosscorr做类型间的空间关联,但直接用定量标记的markcrosscorr能保留更精细的连续尺度关联信息。
内容的提问来源于stack exchange,提问作者Tieygons
相关产品推荐
相关产品推荐

