You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Tidymodels与Glmnet:Cox模型交叉验证非一致参数报错解决

解决tidymodels中Cox模型交叉验证的维度不匹配错误

你的代码报错的核心原因是未对分类预测变量(treatment、sex)进行数值编码,glmnet引擎要求输入纯数值矩阵,未编码的字符/因子变量会导致矩阵转换时出现维度不兼容问题。

修改步骤

只需在数据预处理配方中添加分类变量编码逻辑,具体修改如下:

  1. 更新预处理配方
# DATA PRE-PROCESSING
ph_preprocess <- recipe(event_surv ~ ., data = df) %>% 
  step_filter(time > 0) %>% 
  step_select(-time, -event) %>% 
  update_role(patid, new_role = "ID") %>% 
  # 将字符型分类变量转为因子
  step_mutate_at(vars(treatment, sex), factor) %>% 
  # 对所有分类预测变量生成哑变量(适配glmnet正则化需求)
  step_dummy(all_nominal_predictors(), one_hot = FALSE)
  1. 保持其他代码不变,重新运行tune_grid()即可正常执行交叉验证。

关键说明

  • step_mutate_at:确保分类变量以因子类型存在,避免字符型变量在编码时出现异常;
  • step_dummy:将分类变量转换为glmnet可处理的数值哑变量,one_hot=FALSE避免生成冗余列,更适合正则化模型的训练;
  • 移除了多余的update_role(event_surv, new_role = "outcome"),因为公式event_surv ~ .已明确指定其为结果变量。

内容的提问来源于stack exchange,提问作者Lukas D. Sauer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.01 17:24:51