如何在rsample生成的嵌套Bootstrap对象上计算Gini系数
解决方案
可以结合dplyr和purrr包实现需求,无需展开嵌套对象或使用for循环,具体步骤如下:
- 加载所需依赖包:
library(rsample) library(purrr) library(pROC) library(dplyr)
- 为
Sampled_Data添加Gini列:
Sampled_Data <- Sampled_Data %>% mutate(Gini = map_dbl(splits, ~ { # 提取每个bootstrap样本的训练集(apparent样本对应原数据集) sample_data <- training(.x) # 计算Gini系数 2 * auc(sample_data$Status, sample_data$Expenses) - 1 }))
运行后Sampled_Data会生成你期望的结构,示例如下:
splits id Gini <list> <chr> <dbl> 1 <split [34338/12635]> Bootstrap1 0.xx 2 <split [34338/12592]> Bootstrap2 0.yy 3 <split [34338/34338]> Apparent 0.zz
关键说明
map_dbl():purrr包的迭代函数,针对splits列的每个split对象计算数值结果,直接生成数值型的Gini列。training():rsample包的函数,用于从split对象中提取重采样后的训练数据集(apparent样本的训练集即为原始数据集)。
内容的提问来源于stack exchange,提问作者Rgrvkfer
相关产品推荐
相关产品推荐

