如何用spatstat包对多维时空点模式(ppx对象)建模?
解决spatstat中ppx对象无法用ppm建模的问题
ppm()函数仅支持二维空间点模式(ppp)、三维空间点模式(pp3)或正交方案(quad),不直接支持通用多维点模式ppx。针对你的时空标记点模式,提供两种可行方案:
方案1:转换为时空点模式对象,用stppm()建模
如果需要保留x、y(空间)和t(时间)作为坐标维度,age、size作为标记变量,可以将ppx转换为stpp时空点模式对象,使用专门的时空点过程建模函数stppm():
library(spatstat) set.seed(2022) df <- data.frame(x=runif(4),y=runif(4),t=runif(4), age=rep(c("old", "new"), 2), size=runif(4)) X <- ppx(data=df, coord.type=c("s","s","t","m","m")) # 提取时空坐标与标记 st_coords <- coords(X)[, 1:3] st_marks <- marks(X) # 创建时空点模式对象 stX <- stpp(coords = st_coords, marks = st_marks, window = owin(c(0, 1), c(0, 1)), # 空间范围 tlim = c(0, 1)) # 时间范围 # 拟合时空点过程模型 model <- stppm(stX ~ age + size, family = "poisson") summary(model)
方案2:将时间作为协变量,转换为ppp对象建模
如果不需要将时间作为坐标维度,而是作为协变量处理,可以把ppx转换为二维空间点模式ppp,将t、age、size作为协变量纳入模型:
library(spatstat) set.seed(2022) df <- data.frame(x=runif(4),y=runif(4),t=runif(4), age=rep(c("old", "new"), 2), size=runif(4)) X <- ppx(data=df, coord.type=c("s","s","t","m","m")) # 提取空间坐标与协变量 spat_coords <- coords(X)[, 1:2] cov_data <- df[, c("t", "age", "size")] # 创建二维空间点模式对象 ppX <- ppp(x = spat_coords[,1], y = spat_coords[,2], window = owin(c(0, 1), c(0, 1)), marks = cov_data) # 拟合空间点过程模型 model_ppm <- ppm(ppX ~ t + age + size) summary(model_ppm)
内容的提问来源于stack exchange,提问作者oespinozah
相关产品推荐
相关产品推荐

