【问题标题】:Extrapolating spatial point patterns using R使用 R 外推空间点模式
【发布时间】:2015-09-16 17:15:01
【问题描述】:

我想知道是否有一个内置函数可以在 R 中的“父”窗口之外推断点模式。例如,让我们生成一个空间点模式“X”:

require(spatstat)
X <- ppp(runif(200), runif(200), 
c(0,1), c(0,1), unitname=c("metre","metre"))

让我们重新采样数据:

a <- quadratresample(X, nx=25, ny=5, replace=F, nsamples = 1)

但新点是在同一区域/空间窗口内生成的

> a
 planar point pattern: 200 points 
window: rectangle = [0, 1] x [0, 1] metres  

我的问题是:如何在比原始窗口大的新窗口中重新采样 200 个点(1 x 1 m);换句话说,我将如何在保持相同的重采样密度的同时将这小组 200 个空间点外推到更大的范围;假设我想在 5 x 5 m 范围内查看总共 1,000 个数据点?

【问题讨论】:

  • 我不确定我是否理解您对“外推”的使用。您是否只想扩大重采样,即从 1x1 窗口中采样 200 个点并将它们放在具有相同相对位置的 5x5 窗口中?
  • 是的,你是对的,这就是我外推的意思 - 数据密度将保持不变/单位面积,但我想在更大范围内重新采样,即如果 1 x 1 m 中有 200 个点面积,将有 1,000 个跨越 5 x 5 m 的区域
  • 好的,所以扩大规模,创建某种数据。是否要重复 200 个点的重采样模式,以便在 5x5 区域中有 25 个副本?
  • 是的,但随机性每次的模式都会不同
  • 好的,那么您想进行 25 个不同的重采样并将它们放在一个 5x5 的网格中,彼此相邻?

标签: r spatial spatstat


【解决方案1】:

这很容易,因为spatstat 为我们提供了所有正确的工具。您目前有一个 1x1 网格。您需要一个由 25 个 1x1 网格构成的 5x5 网格。我们可以使用nsamples 参数对这些网格的点进行采样:

a <- quadratresample(X, nx = 25, ny = 5, replace = F, nsamples = 25)

现在我们有一个包含 25 个ppps 的列表。正如您所指出的,所有这些都将在同一个 1x1 窗口中。为了将它们变成一个网格,我们将它们适当地移动,从 x 偏移 0 到 4 个单位,在 y 偏移中从 0 到 4 个单位:

for (i in seq_along(a)) {
    a[[i]] = shift(a[[i]], vec = c((i - 1) %% 5, (i - 1) %/% 5))
}

要将它们组合起来,请使用superimpose

b = superimpose(a)

这会在 5x5 窗口中提供一个具有 200 * 25 = 5000 个点的 ppp 对象,这会保留原始的每单位平方 200 个点。

【讨论】:

  • 看起来不错,但叠加部分给我一个错误:> b=superimpose(a) superimpose.default(a) 中的错误:参数 1 没有组件 x 和 y
  • @ToNoY 你运行的是什么版本的spatstat?在 1.42-0 版本中,他们添加了一个 list 方法用于叠加。如果您更新到最新版本,它应该可以工作。
  • 我有版本 1-43-0,但我仍然遇到与 @ToNoY 相同的错误。我通过提取列表的内容作为参数解决了这个问题:do.call(superimpose, list.of.ppps).
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-01-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-14
  • 2015-10-05
相关资源
最近更新 更多