问题描述
免责声明:我对 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)
我的问题如下:
- 是否有可能(或更重要的是,甚至有效)在某一天使用特定的水分变量和面膜进行 ppm 培训,然后将其应用到另一天使用不同的水分值和面膜。我曾考虑使用
update
函数来切换训练模型中的窗口和协变量字段,但还没有真正尝试过。如果答案是肯定的......我有点不清楚如何以编程方式实际执行此操作 - 是否可以使用附加数据在线更新 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 章。