多数值响应变量场景下stablelearner包stabletree函数报错如何处理
核心报错原因
你拟合的是双响应变量的ctree模型,stablelearner包的stabletree()虽然可以成功生成稳定性计算对象,但内置的summary()和barplot()方法暂未适配多响应树模型的后处理逻辑,无法正确提取数值型稳定性指标,因此触发上述报错。
解决方法
路径1:拆分单响应模型分别评估(推荐)
分别为两个响应变量拟合独立的单输出ctree,再做稳定性分析,可直接使用内置的后处理函数:
# 拟合DensitePf对应的单响应树模型 paluTree.pf <- partykit::ctree(I(DensitePf^.25) ~ Age + sexe + Temperature + Moustiquaire + Objet_gites + PrvPalu + RetenuEau + IndVegetation, data = subset.df, minsplit = 75, minbucket = 75, maxdepth = 4) # 评估单响应模型稳定性 diag.pf <- stablelearner::stabletree(paluTree.pf, B = 100) # 正常运行统计输出和可视化 summary(diag.pf) barplot(diag.pf) # 同理处理DensitePm对应的模型 paluTree.pm <- partykit::ctree(I(DensitePm^.25) ~ Age + sexe + Temperature + Moustiquaire + Objet_gites + PrvPalu + RetenuEau + IndVegetation, data = subset.df, minsplit = 75, minbucket = 75, maxdepth = 4) diag.pm <- stablelearner::stabletree(paluTree.pm, B = 100) summary(diag.pm) barplot(diag.pm)
路径2:保留多响应模型,手动提取结果
如果必须保留多响应模型的联合拟合结构,可直接从stabletree返回的对象中提取原始稳定性数据,自行计算指标和绘图:
# 查看稳定树对象的原始结果结构 str(diag.stabilite) # 提取变量稳定性的原始统计值 var_stab <- diag.stabilite$vartab # 手动处理后绘制稳定性柱状图 barplot(var_stab$similarity, names.arg = rownames(var_stab), las = 2)
注意事项
- 运行前先检查建模用的
subset.df是否存在缺失值,缺失值会导致重采样过程中生成无效树结构,也会触发同类报错。 - 调试阶段可将重采样次数
B调低到20,确认流程通畅后再调整为100或更高的数值,减少等待时间。
内容的提问来源于stack exchange,提问作者sdg
相关产品推荐
相关产品推荐

