首页 > 解决方案 > Gibbs 区域交互模型的 effectfun 和 parres 错误

问题描述

我正在使用 spatstat v.1.59-0 来构建一些点过程模型,但是我遇到了一些验证工具的问题,特别effectfun是残差图parres

该模型的rings_pp组成部分由 52 个考古遗址的点位置组成,elev是一个 DEM 转换为spatstat像素图像。我正在尝试使用区域交互参数 ( AreaInter) 和elev

我使用以下代码将模型拟合到数据:
rr1 <- data.frame(r=seq(100, 2000, by=50)) p1 <- profilepl(rr1, AreaInter, rings_pp~elev, aic=T) ppm5 <- as.ppm(p1)

一切似乎都运行良好(例如,其他诊断显示模型与数据合理拟合),除非我尝试使用effectfunparres评估高程协变量的影响,但它们不会起作用。

parres给出错误Error in m[, d$relevant, drop = FALSE] : (subscript) logical subscript too long当我回溯错误时,我得到以下信息:

`> trace(parres(ppm5, "elev"))
Error in m[, d$relevant, drop = FALSE] : 
  (subscript) logical subscript too long
> traceback()
4: effectFun.can(x)
3: effectFun(xxx)
2: parres(ppm5, "elev")
1: trace(parres(ppm5, "elev"))`

effectfun什么时候可以工作,se.fit=FALSE但什么时候不工作,se.fit=TRUE并给出以下错误:Error in quadform(mm, vc) : ncol(x) == nrow(v) is not TRUE当我回溯错误时,我得到以下信息:

`> trace(plot(effectfun(ppm5, "elev", se.fit=T)))
Error in quadform(mm, vc) : ncol(x) == nrow(v) is not TRUE
> traceback()
8: stop(simpleError(msg, call = sys.call(-1)))
7: stopifnot(ncol(x) == nrow(v))
6: quadform(mm, vc)
5: predict.ppm(orig.model, locations = fakeloc, covariates = fakecov, 
   se = se.fit)
4: predict(orig.model, locations = fakeloc, covariates = fakecov, 
   se = se.fit)
3: effectfun(ppm5, "elev", se.fit = T)
2: plot(effectfun(ppm5, "elev", se.fit = T))
1: trace(plot(effectfun(ppm5, "elev", se.fit = T)))`

当我拟合一个不均匀的模型ppm1 <- ppm(rings_pp, ~elev)并且工作正常effectfunparres显示出良好的拟合时(尽管使用残差 K 函数Kres表明该模型没有考虑聚类)。所以这似乎与我如何拟合吉布斯AreaInter模型有关。

任何建议将不胜感激。

标签: rspatstat

解决方案


再次感谢您提出明确的问题。

这是一个bug,可以通过简单的例子来演示

fit <- ppm(cells ~ x, AreaInter(0.07))
plot(effectfun(fit, se.fit=TRUE))
plot(parres(fit))

我会尽快调查并修复它。

后记:这已在 GitHub 存储库spatstat上可用的(version 1.59-0.020)的开发版本中得到修复

.


推荐阅读