R 使用ppx和nndist查找每种类型的最近邻
对于一个包含三个协变量和一个治疗指标的数据集,我试图找到每个个体的最近邻。特别是,我想在每个治疗组中找到最近的邻居R 使用ppx和nndist查找每种类型的最近邻,r,spatial,nearest-neighbor,spatstat,R,Spatial,Nearest Neighbor,Spatstat,对于一个包含三个协变量和一个治疗指标的数据集,我试图找到每个个体的最近邻。特别是,我想在每个治疗组中找到最近的邻居 # Generate a treatment indicator factor treatment <- factor(data_train[,"a"], levels = c("0", "1"), labels = c("Untreated", "Treated")) # Put the covariate data into 'points' format pointp
# Generate a treatment indicator factor
treatment <- factor(data_train[,"a"], levels = c("0", "1"), labels = c("Untreated", "Treated"))
# Put the covariate data into 'points' format
pointpattern <- ppx(data = data.frame(data_train[, c("Z1", "Z2", "Z3")], "Treatment" = treatment), coord.type = c("s", "s", "s", "m"))
# Find the nearest neighbour of each type
dists <- nndist(X = pointpattern, by = marks(pointpattern))
#生成治疗指标因子
治疗本例中使用的函数nndist.ppx
无法识别参数by
这是关于R
中的“类和方法”。函数nndist
是通用的;在类为“ppx”
的对象上调用nndist
时,系统调用函数nndist.ppx
,该函数是该类的“方法”
您可以通过查看其帮助文件来检查nndist.ppx
的功能;它不支持的参数
还有其他的nndist
方法可以通过
识别参数,例如nndist.ppp
,我猜您正在查看相关文档
我们将在spatstat
中更新代码,以便nndist.ppx
也可以使用此功能
同时,您可以使用函数nncross.ppx
查找从一组点到另一组点的最近距离。以下是如何获得您想要的结果:
Y <- split(pointpattern) # divide into groups
m <- length(Y) # number of groups
n <- npoints(pointpattern)
result <- matrix(, n, m) # final results will go here
partresults <- list() # collect results for each group here
for(i in 1:m) {
Yi <- Y[[i]]
ni <- npoints(Yi)
a <- matrix(, ni, m)
a[,i] <- nndist(Yi)
for(j in (1:m)[-i])
a[,j] <- nncross(Yi, Y[[j]], what="d")
partresults[[i]] <- a
}
split(result, marks(pointpattern)) <- partresults
Y更新:nndist(X,by)
现在适用于ppx
对象,在spatstat
的开发版本中(版本1.63-3.037及更高版本)