空间聚类交叉验证通过基于空间坐标的聚类点将数据分成 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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。
