使用多个数据集训练和模拟 spatstat ppm

问题描述

免责声明:我对 spatstat 和空间点建模非常陌生……请原谅我的天真。

我最近尝试使用 spatstat 来拟合和模拟与天气现象相关的空间点模式,其中空间模式代表一组目击者报告(例如,冰雹发生的报告),观察窗口和协变量基于一些气象参数(例如,窗口是湿度至少为 X 的区域,然后在训练模型时将湿度变量作为协变量额外传递)。

moistureMask = owin(mask=moisture>X)
moistureVar = im(moisture)

obsPPP = ppp(x=obsX,y=obsY,window=moistureMask)
myModel = ppm(obsPPP ~ moistureVar)

### then simulate
mySim = simulate(myModel,nsim=10)

我的问题如下:

  1. 是否有可能(或更重要的是,甚至有效)在某一天使用特定的水分变量和面膜进行 ppm 培训,然后将其应用到另一天使用不同的水分值和面膜。我曾考虑使用 update 函数来切换训练模型中的窗口和协变量字段,但还没有真正尝试过。如果答案是肯定的......我有点不清楚如何以编程方式实际执行此操作
  2. 是否可以使用附加数据在线更新 ppm。例如,使用不同日期的数据(每个日期都有自己的窗口和协变量),迭代地训练模型(类似于使用训练数据块训练了多少机器学习模型)。例如,假设我有 10 年的每日数据,我想用它来训练模型,还有另外 10 年的水分变量,我想模拟点模式。同样,我在这里也考虑了 update 函数,但不清楚新模型是仅基于新数据,还是原始数据和新数据的组合。

如果我的方向完全错误,请告诉我。感谢参考资料和资源。

解决方法

如果您使用 ppm 拟合模型并通过指定新数据和/或新协变量对其进行更新,则新数据将替换旧数据;更新后的模型参数仅使用您在调用 update 时提供的新数据来确定。

update 命令的语法在 update.ppm(类 update 的对象的泛型 ppm 的方法)的在线帮助中有描述。>

看来您真正想要做的是将一个点过程模型拟合到许多复制数据集,每个数据集由一个预测变量 moistureVar 和一个点模式 obsPPP 组成。在这种情况下,您应该使用函数 mppm,它使点过程模型适合复制数据。

为此,首先创建一个包含每天湿度区域的列表 A,以及另一个包含每天冰雹报告位置模式的列表 B。也就是说,A[[1]] 是第 1 天的湿度区域,B[[1]] 是第 1 天冰雹报告位置的点模式,依此类推。然后做

   h <- hyperframe(moistureVar=A,obsPPP=B)
   m <- mppm(obsPPP ~ moistureVar,data=h)

这将使单点过程模型适合全套数据。

终于可以指出模型了

  obsPPP ~ moistureVar

非常简单,因为 moistureVar 是一个二元预测器。该模型将简单地说冰雹报告的强度在高湿度区域内采用一个值,在该区域外采用另一个值。作为替代方案,您可以考虑使用水分含量(例如湿度)作为预测变量。

有关详细信息,请参阅 the spatstat book 的第 9 章和第 16 章。