You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

spatstat中数值标记双变量标记变异函数分析方法及代码问询

双变量数值标记变异函数分析方案

要使用markvario对两个带数值标记(胸径DBH)的点模式X1和Y2进行双变量对比,需先将两者合并为多类型点模式,再通过markvario的交叉分析参数实现,具体步骤如下:

1. 预处理:合并点模式并添加类型标记

给两个点模式添加类型标签以区分不同径级组,再合并为单一的多类型点模式:

# 为X1和Y2添加类型标记与DBH的组合标记
X1$marks <- data.frame(type = "GroupX", DBH = marks(X1))
Y2$marks <- data.frame(type = "GroupY", DBH = marks(Y2))

# 合并两个点模式
combined_ppp <- superimpose(GroupX = X1, GroupY = Y2)

2. 计算双变量交叉标记变异函数

使用markvario的i和j参数指定对比的两组,mark参数指定分析的数值标记(DBH):

# 计算GroupX与GroupY之间的交叉标记变异函数
cross_markvario <- markvario(combined_ppp, 
                             i = "GroupX", 
                             j = "GroupY", 
                             mark = "DBH", 
                             normalise = TRUE)

# 绘制结果
plot(cross_markvario, main = "双变量交叉标记变异函数(GroupX vs GroupY)")

3. 信封检验(显著性分析)

若需验证相关性的显著性,结合envelope函数做蒙特卡洛模拟检验,模拟时保持点位置不变、置换标记值生成零假设:

# 生成交叉标记变异函数的信封检验
cross_envelope <- envelope(combined_ppp, 
                           markvario, 
                           i = "GroupX", 
                           j = "GroupY", 
                           mark = "DBH", 
                           normalise = TRUE,
                           nsim = 199,
                           simulate = expression(rlabel(combined_ppp, labels = marks(combined_ppp)$DBH, permute = TRUE)),
                           savefuns = TRUE, 
                           savepatterns = TRUE)

# 绘制信封检验结果
plot(cross_envelope, main = "双变量交叉标记变异函数信封检验")

关键说明

  • markvario默认的半方差计算函数就是function(m1, m2) { (m1 - m2)^2 / 2 },无需额外指定f参数;
  • 交叉标记变异函数衡量GroupX的DBH与GroupY的DBH在不同空间距离下的半方差,数值越低说明该距离下两组径级的相关性越强;
  • 信封检验中,若观测曲线落在模拟包络之外,说明该距离下的相关性具有统计学显著性。

内容的提问来源于stack exchange,提问作者jingyu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 07:57:38