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

基于协变量的点过程建模:R中quadscheme函数的正确使用

以降水为协变量建模火灾爆发:quadscheme与协变量匹配问题解决

错误原因

你遇到的Number of rows in ‘covariates’ does not equal the number of quadrature points错误,核心原因是:

  • quadscheme生成的求积点包含两部分:100个火灾观测点 + 40个自定义虚拟点,总计140个点
  • 你传入的Cov只有40行(对应虚拟点的降水数据),无法覆盖所有140个求积点,导致行数不匹配

正确解决方案

协变量必须为**每一个求积点(观测点+虚拟点)**提供对应的值。由于你的降水数据是稀疏站点数据,需要通过空间插值将其扩展到整个研究区域,再为每个求积点匹配降水值。

修正后的完整代码

library(spatstat)

# 1. 构建火灾观测点模式
fire_outbreaks <- data.frame(
  x = runif(100, min = 0, max = 100),
  y = runif(100, min = 0, max = 100)
)
fire_ppp <- ppp(fire_outbreaks$x, fire_outbreaks$y, owin(c(0, 100), c(0, 100)))

# 2. 构建带标记的降水点模式(标记为降水值)
precipitation <- data.frame(
  x = runif(40, min = 0, max = 100),
  y = runif(40, min = 0, max = 100),
  precip_mm = runif(40, min = 0, max = 4)
)
precip_ppp <- ppp(
  x = precipitation$x, 
  y = precipitation$y, 
  window = owin(c(0, 100), c(0, 100)),
  marks = precipitation$precip_mm
)

# 3. 创建求积方案(观测点+自定义虚拟点)
dummy_ppp <- ppp(precipitation$x, precipitation$y, window = owin(c(0, 100), c(0, 100)))
quad <- quadscheme(data = fire_ppp, dummy = dummy_ppp)

# 4. 空间插值:将稀疏降水数据扩展为区域连续图像
# 这里使用双线性插值,也可根据需求选择其他方法(如"idw")
precip_im <- interpolate(precip_ppp, method = "bilinear")

# 5. 为所有求积点匹配降水值
cov_precip <- as.im(quad) %over% precip_im
cov_df <- data.frame(precip_mm = cov_precip)

# 6. 拟合泊松点过程模型
model <- ppm(quad, ~ precip_mm, family = Poisson())
summary(model)

简化写法

你也可以直接将插值后的降水图像传入ppm,函数会自动提取每个求积点的协变量值,无需手动构建数据框:

# 直接用插值图像作为协变量
model <- ppm(quad, ~ precip_im, family = Poisson())

关键注意事项

  • 虚拟点必须转为ppp格式传入quadscheme,不能直接传列表
  • 协变量需覆盖所有求积点:观测点也需要对应降水值,不能只提供虚拟点的
  • 插值方法可根据数据特性调整:如降水数据更适合反距离加权(method="idw"),可替换interpolate中的参数

内容的提问来源于stack exchange,提问作者Alex Monito Nhancololo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 09:35:10