gpt4 book ai didi

r - 如何从地理栅格获取 `ppm` 的协变量数据?

转载 作者:行者123 更新时间:2023-12-02 01:44:42 25 4
gpt4 key购买 nike

我想用 spatstat::ppm 拟合泊松点过程模型,但我不确定向函数提供协变量数据的最佳方法是什么。我知道 spatstat 需要平面坐标,因此在创建 ppp 点模式对象之前,我已将点位置数据转换为平面 crs。协变量数据位于具有未投影地理坐标的栅格堆栈中,我了解 projecting rasters is generally ill-advised 。我使用点的原始地理坐标和 raster::extract 从栅格中提取了点位置的协变量值。到目前为止,一切都很好。问题是...

it is not sufficient to have observed the covariate only at the points of the data point pattern; the covariate must also have been observed at other locations in the window. -ppm helpfile

我似乎有两个选项可以向 data 参数提供协变量数据。

  1. 像素图像;由于光栅投影问题,这似乎是不明智的。
  2. 可以在任何位置 (x,y) 进行计算以获得相应协变量值的函数列表(每个协变量一个)。这似乎是可行的方法,但我编写这样一个函数的尝试结果却慢得离谱。将坐标转换为栅格的 crs 后,它会为每个坐标对调用 raster::extract。虽然在给定大量点时,raster::extract 相当快,但每次调用似乎都会产生很大的开销。根据microbenchmark,对于单个协变量,坐标转换大约需要 4 毫秒,提取大约需要 582 毫秒,或者每个点大约需要 4 秒才能获得所有 7 个协变量。我不知道 ppm 会调用此函数多少次,但即使模式中的每个点调用一次,也会花费太长时间。

有什么方法可以找出 ppm 将查询协变量数据的完整点集是什么,以便我可以通过一次调用预先提取这些点?

看来我的用例(地理栅格中的协变量)应该很常见,所以我猜测有一种既定的方法可以正确地做到这一点。它是什么?

最佳答案

感谢您提出了一个写得很好的问题,清楚地表明了您的需求。如果有一个简单的可重现的例子,例如使用来自rasterspatstat的内置数据或人工生成的数据。由于缺乏可重现的示例,我的答案将不包含任何代码,但概述了您可以做什么。

ppm 的第一步是制定求积方案或类 quadlogiquad,具体取决于 中使用的最大似然近似>ppm。这些可以由用户通过 quadschemequadscheme.logi 直接生成。求积方案包含 ppm 将评估协变量的所有点。您可以使用函数coords 提取正交方案的坐标。如果您构建一个包含在这些点评估的所有协变量的 data.frame,您可以将其作为 ppmdata 参数提供,而正交方案为第一个论点。为了更好地理解事情,请尝试阅读 help(ppm.quad) 的“详细信息”部分。

另一种可以最佳利用数据的方法是提取当前栅格堆栈的网格点以及所有协变量值并投影该点数据。然后将其转换为一个简单的 data.frame,其中包含 xycovar1covar2< 列 等。然后您可以使用 xy 以及您感兴趣的点观测来手动创建正交方案,其余列可以作为 提供>数据ppm

比较这两种方法的结果以及仅投影栅格堆栈并将其转换为 im 对象列表的结果会很有趣。

关于r - 如何从地理栅格获取 `ppm` 的协变量数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58385573/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com