空间聚类交叉验证通过基于空间坐标的聚类点将数据分成 V 组不相交的集合。分析数据的重采样由 V-1 的折叠/簇组成,而评估集包含最终的折叠/簇。
用法
spatial_clustering_cv(
data,
v = 10,
cluster_function = c("kmeans", "hclust"),
radius = NULL,
buffer = NULL,
...,
repeats = 1,
distance_function = function(x) as.dist(sf::st_distance(x))
)
参数
- data
-
将
sf
对象(通常来自sf::read_sf()
或sf::st_as_sf()
)拆分为折叠。 - v
-
数据集的分区数。
- cluster_function
-
应该使用哪个函数进行聚类?选项为
"kmeans"
(使用stats::kmeans()
)或"hclust"
(使用stats::hclust()
)。您也可以提供自己的函数;请参阅Details
。 - radius
-
数字:initially-selected 测试点的此距离内的点将被分配到评估集。如果
NULL
,则不应用半径。 - buffer
-
数字:测试集中任何点的此距离内的点(应用
radius
后)将不会分配给分析集或评估集。如果NULL
,则不应用缓冲区。 - ...
-
额外的参数传递给
stats::kmeans()
或stats::hclust()
。 - repeats
-
重复集群分区的次数。
- distance_function
-
应该使用哪个函数来计算距离?默认为
sf::st_distance()
,输出矩阵转换为stats::dist()
对象。您也可以提供自己的函数;查看具体信息。
值
带有类 spatial_clustering_cv
、 spatial_rset
、 rset
、 tbl_df
、 tbl
和 data.frame
的 tibble。结果包括数据分割对象的列和标识变量 id
。从非 sf
对象创建的重新采样将不具有 spatial_rset
类。
细节
如果 data
是 sf
对象,则根据观测值之间的距离创建聚类。每个簇都用作交叉验证的折叠。根据数据在空间上的分布方式,每个折叠中的观测值数量可能不相等。
您可以选择向 distance_function.
提供自定义函数。该函数应采用 sf
对象并返回带有数据点之间距离的 stats::dist()
对象。
您可以选择向 cluster_function
提供自定义函数。该函数必须采用三个参数:
-
dists
,一个带有数据点之间距离的stats::dist()
对象 -
v
,一个长度为 1 的数字,表示要创建的折叠数 -
...
,将任何其他命名参数传递给您的函数
该函数应返回长度为 nrow(data)
的簇分配向量,向量的每个元素对应于数据帧的匹配行。
空间样本 0.3.0 的变化
从 Spatialsample 版本 0.3.0 开始,此函数不再接受非 sf
对象作为 data
的参数。为了使用非空间数据执行聚类,请考虑使用 rsample::clustering_cv()
。
同样从版本 0.3.0 开始,此函数现在计算非点几何图形的 edge-to-edge 距离,与包的其余部分一致。早期版本依赖于 between-centroid 距离。
参考
A. Brenning,“遥感预测规则评估的空间交叉验证和引导程序:R 包 sperrorest”,2012 年 IEEE 国际地球科学和遥感研讨会,慕尼黑,2012 年,第 5372-5375 页,doi:10.1109/IGARSS.2012.6352393。
例子
data(Smithsonian, package = "modeldata")
smithsonian_sf <- sf::st_as_sf(
Smithsonian,
coords = c("longitude", "latitude"),
# Set CRS to WGS84
crs = 4326
)
# When providing sf objects, coords are inferred automatically
spatial_clustering_cv(smithsonian_sf, v = 5)
#> # 5-fold spatial cross-validation
#> # A tibble: 5 × 2
#> splits id
#> <list> <chr>
#> 1 <split [18/2]> Fold1
#> 2 <split [16/4]> Fold2
#> 3 <split [9/11]> Fold3
#> 4 <split [18/2]> Fold4
#> 5 <split [19/1]> Fold5
# Can use hclust instead:
spatial_clustering_cv(smithsonian_sf, v = 5, cluster_function = "hclust")
#> # 5-fold spatial cross-validation
#> # A tibble: 5 × 2
#> splits id
#> <list> <chr>
#> 1 <split [19/1]> Fold1
#> 2 <split [4/16]> Fold2
#> 3 <split [19/1]> Fold3
#> 4 <split [19/1]> Fold4
#> 5 <split [19/1]> Fold5
相关用法
- R spatialsample spatial_nndm_cv 最近邻距离匹配 (NNDM) 交叉验证
- R spatialsample spatial_block_cv 空间块交叉验证
- R spatialsample spatial_vfold 带缓冲的 V 形折叠交叉验证
- R spatialsample autoplot.spatial_rset 创建用于空间重采样的 ggplot。
- R variogram 计算空间变异函数
- R anova.trls 用于拟合趋势表面对象的方差分析表
- R Kfn 计算点模式的 K-fn
- R Kenvl 计算 K-fns 模拟的包络和平均值
- R correlogram 计算空间相关图
- R trmat 评估网格上的趋势面
- R Kaver 模拟的平均 K 函数
- R semat 评估网格预测的克里金标准误差
- R surf.ls 通过最小二乘法拟合趋势面
- R ppgetregion 获取空间点模式分析的域
- R pplik Strauss空间点过程的伪似然估计
- R surf.gls 通过广义最小二乘法拟合趋势面
- R ppregion 设置空间点模式分析的域
- R Strauss 模拟施特劳斯空间点过程
- R prmat 评估网格上的克里金曲面
- R ppinit 从文件中读取点过程对象
- R trls.influence 趋势面的回归诊断
- R SSI 模拟连续空间抑制点过程
- R predict.trls 趋势曲面拟合的预测方法
- R expcov 空间协方差函数
- R Psim 模拟二项式空间点过程
注:本文由纯净天空筛选整理自Michael Mahoney等大神的英文原创作品 Spatial Clustering Cross-Validation。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。