利用R

利用R,r,spatial,spatstat,R,Spatial,Spatstat,我想知道是否有一个内置函数可以在R中的“父”窗口外推断点模式。例如,让我们生成一个空间点模式“X”: require(spatstat) X <- ppp(runif(200), runif(200), c(0,1), c(0,1), unitname=c("metre","metre")) 我的问题是:如何在比原始窗口(1×1 m)大的新窗口内重新采样200个点;换句话说,我如何在保持相同重采样密度的情况下,将200个空间点的小集合外推到更大的范围内;假设我想在5×5米的范围内总共看

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

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

我的问题是:如何在比原始窗口(1×1 m)大的新窗口内重新采样200个点;换句话说,我如何在保持相同重采样密度的情况下,将200个空间点的小集合外推到更大的范围内;假设我想在5×5米的范围内总共看到1000个数据点?

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

a <- quadratresample(X, nx = 25, ny = 5, replace = F, nsamples = 25)
要组合它们,请使用叠加:

b = superimpose(a)

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

我不确定我是否理解您使用的“外推”。你只是想放大重采样,即从1x1窗口中采样200个点,并将它们放在5x5窗口中,具有相同的相对位置吗?是的,你是对的,这就是我所说的外推-数据密度将保持不变/单位面积,但我想在更大范围内重采样,也就是说,如果在1×1米的区域内有200个点,那么在5×5米的区域内会有1000个点。好的,不放大,而是创建某种数据。是否要重复200个点的重采样模式,以便在5x5区域中有25个副本?是的,但随机性的模式每次都会不同好,因此您要进行25个不同的重采样,并将它们放置在5x5网格中,彼此相邻?看起来不错,但叠加部分给我一个错误:>b=叠加(a)叠加错误。默认值(a):参数1没有组件x和y@ToNoY您正在运行哪个版本的
spatat
?在版本1.42-0中,他们为叠加添加了列表方法。如果你更新到最新的版本,它应该可以工作。我有版本1-43-0,我仍然得到与@ToNoY相同的错误。通过将列表的内容提取为参数,我解决了这个问题:
do.call(叠加,list.of.ppps)
a <- quadratresample(X, nx = 25, ny = 5, replace = F, nsamples = 25)
for (i in seq_along(a)) {
    a[[i]] = shift(a[[i]], vec = c((i - 1) %% 5, (i - 1) %/% 5))
}
b = superimpose(a)