请求提供R语言mRMRe包实现生存数据MRMR特征选择的代码
使用mRMRe包进行生存数据的MRMR特征选择
步骤1:安装并加载依赖包
先安装并加载mRMRe和survival包(后者用于获取标准生存数据集):
install.packages(c("mRMRe", "survival")) library(mRMRe) library(survival)
步骤2:准备生存数据集
以survival包内置的lung数据集为例,先做数据清理和编码调整:
# 加载数据集 data(lung) # 移除含缺失值的样本 lung_clean <- na.omit(lung) # 将分类变量转为因子 lung_clean$sex <- as.factor(lung_clean$sex) # 统一生存状态编码:1=事件发生(死亡),0=无事件(存活) lung_clean$status <- ifelse(lung_clean$status == 1, 1, 0)
步骤3:创建mRMRe专用数据对象
核心是指定生存型目标变量,需传入时间列和状态列的索引,并设置target_types = "survival":
# 创建mRMRe数据对象 # target_indices顺序:先时间列(第2列),后状态列(第3列),不可颠倒 mr_data <- mRMRe.data( data = lung_clean, target_indices = c(2, 3), target_types = "survival" )
步骤4:运行MRMR特征选择
经典MRMR方法(单组特征结果)
选择5个与生存结局最相关且冗余度最低的特征:
# 执行经典MRMR,指定要选择的特征数量 mr_classic <- mRMR.classic(data = mr_data, feature_count = 5) # 查看选中的特征信息 selected_idx <- mr_classic@solutions[[1]] cat("选中的特征索引:", selected_idx, "\n") cat("选中的特征名称:", colnames(lung_clean)[selected_idx], "\n")
集成MRMR方法(稳健性更高)
通过bootstrap多次采样生成多组特征,统计各特征的入选频率:
# 集成MRMR:10次bootstrap采样,每次选5个特征 mr_ensemble <- mRMR.ensemble( data = mr_data, feature_count = 5, bootstrap_count = 10 ) # 按入选频率降序展示特征 freq_table <- mr_ensemble@frequency print(freq_table[order(freq_table, decreasing = TRUE), ])
关键注意事项
- 目标变量索引必须遵循时间列在前,状态列在后的顺序,且状态列需统一为0(无事件)/1(事件发生)编码。
mRMRe对缺失值敏感,需提前清理含缺失值的样本。feature_count参数可根据实际需求调整要选择的特征数量。
内容的提问来源于stack exchange,提问作者Basheer Ahmad
相关产品推荐
相关产品推荐

