【问题标题】:Can regression and IDW spatial interpolation be done in one model in R?可以在 R 中的一个模型中完成回归和 IDW 空间插值吗?
【发布时间】:2013-07-31 12:00:00
【问题描述】:

我对变量 T(温度)进行空间建模。我使用文献中常用的方法——执行回归(使用高度等变量),然后使用 IDW 对残差进行空间插值。 R package gstat 似乎有这个选项:

interpolated <- idw(T ~ altitude, stations, grid, idp=6)
spplot(interpolated["var1.pred"])

但在idw() 的文档中,他们写道:

函数 idw 执行 [...] 。不要在公式中与预测变量一起使用。

实际上,结果看起来就像只执行回归,没有残差的空间插值。我知道我可以手动完成:

m1 <- lm(T ~ altitude, data = data.frame(stations))
Tres <- resid(m1)
res.int <- idw(Tres ~ 1, stations, grid, idp=6)
Tpred <- predict.lm(m1, grid)
spplot(SpatialGridDataFrame(grid, data.frame(T = Tpred + data.frame(res.int)['var1.pred'])))

但这有很多缺点——模型不在一个对象中,所以你不能直接做总结,检查偏差,残差,最重要的是,做交叉验证......一切都必须手动完成。所以,

有没有办法在 R 中的一个模型中进行回归和 IDW?

请注意,我不想使用不同的空间插值方法,因为 IDW 用于该建模领域并且已针对这些目的进行了很好的测试。

【问题讨论】:

  • 对不起,我忘了Tpred的计算 - 已修复

标签: r spatial spatial-interpolation gstat kriging


【解决方案1】:

所以你想要的是先做回归,然后对残差执行 IDW。从理论和软件的角度来看,这不能一次性完成:

  • 理论,克里金法提供了一种统一的方法,使用线性模型一次性处理模型和残差并创建预测,即具有空间相关残差的线性回归。在混合模型的情况下,这个理论框架不存在。由于这种临时性质,我不建议这样做。
  • 实际上,gstat 根本不支持一次性完成。

我建议直接使用克里金法,这是一种非常成熟和公开的方法。如果这在您的专业领域中没有被大量使用,那么现在是介绍它的好时机。您还可以查看fields 包中的Tps 函数。

几年前我为荷兰气象局写了a technical report,你可能会感兴趣,它涉及蒸发的插值。

【讨论】:

  • 亲爱的保罗,谢谢,非常有趣!我想使用 IDW,因为它在许多论文中进行了测试和发表,用于温度插值。例如西班牙的 Ninyerola 和许多其他国家。根据他的研究,样条曲线更糟。所以样条线已经出来了,克里金法,我还不知道有任何研究可以将它与 IDW 进行温度建模比较,我不想这样做,因为它只是更大研究的一小部分......我知道这是死板的,但在这种情况下,我倾向于坚持使用已发布的解决方案 :-)
猜你喜欢
  • 2017-01-28
  • 2017-01-28
  • 2014-05-24
  • 1970-01-01
  • 2022-12-03
  • 1970-01-01
  • 2011-09-13
  • 2015-07-09
  • 2023-03-21
相关资源
最近更新 更多