使用 spatstat 包将数据框转换为 ppp 对象

converting data frame to ppp object using spatstat package

我有一个数据框

df <- data.frame(x = rep(seq(1:10), 10), y = rep(seq(1:10), each = 10), diameter = rnorm(100, 0.3, 0.03), height = rnorm(100, 0.2, 001))

我想通过 spatstat 包的 ppp 转换为 ppp 文件。我希望 diameterheight 变量是 marks,但我不能这样做。我试过 f.ex 这个

pp1<-ppp(df$x, df$y,  marks = data.frame(df %>% select(diameter, height)))

但不起作用。

我想要的输出类似于附加到 spatstat

的数据文件 finepines
> finpines
Marked planar point pattern: 126 points
Mark variables: diameter, height 
window: rectangle = [-5, 5] x [-8, 2] metres

你可以试试这个,但我无法判断你是否可以接受这个警告:

Warning message: In ppp(df$x, df$y, marks = data.frame(df %>% select(diameter, height))) : 99 points were rejected as lying outside the specified window

library(spatstat)
library(dplyr)
df <- data.frame(x = rep(seq(1:10), 10), y = rep(seq(1:10), each = 10), diameter = rnorm(100, 0.3, 0.03), height = rnorm(100, 0.2, 001))
pp1<-ppp(df$x, df$y,  marks = data.frame(df %>% select(diameter, height)))

输出为:

> pp1
Marked planar point pattern: 1 point
Mark variables: diameter, height 
window: rectangle = [0, 1] x [0, 1] units
*** 99 illegal points stored in attr(,“rejects”) ***

您需要先定义观察点 window,然后才能定义平面点模式 ppp,因为我们需要知道观察点的位置和没有观察点的位置。例如。该过程的强度是每个区域的平均点数,因此我们需要知道研究区域的面积。

在您的示例中,我假设研究区域(观察 window)为 [0, 11] x [0, 11]。然后你可以这样做:

library(spatstat)
df <- data.frame(x = rep(seq(1:10), 10),
                 y = rep(seq(1:10), each = 10),
                 diameter = rnorm(100, 0.3, 0.03),
                 height = rnorm(100, 0.2, 001))
W <- owin( c(0, 11), c(0,11) )
pp1 <- as.ppp( df, W = W)