Equatiomatic提取logistic回归模型方程报错问题排查
equatiomatic提取glm模型方程报错
object of type 'environment' is not subsettable 修复方案 错误触发场景
复现操作路径如下:
- 绑定数据集:执行
attach(data2)将数据集加载到搜索路径,数据中分类响应变量为gleason_score,连续预测变量为age - 拟合logistic回归:调用
glm(gleason_score ~ age, family=binomial(link = "logit"))完成模型拟合,结果赋值给glm.fit - 模型初步输出:摘要显示截距估计值为-2.17146,
age系数估计值为0.05155,模型AIC为141;已完成age与gleason_score散点图绘制并叠加拟合值连线 - 报错触发:执行
equatiomatic::extract_eq(glm.fit, wrap = FALSE,use_coefs = TRUE)提取模型方程时抛出错误:
Error in model$data[which(model$y == 1)[1], outcome_nm] : object of type 'environment' is not subsettable
错误根源
glm()函数调用时未显式传入data参数,完全依赖attach()挂载的搜索路径匹配模型变量,这种拟合方式生成的模型对象中,model$data字段存储的是模型运行时的环境对象,而非原始数据集本身。equatiomatic::extract_eq()在提取带系数的方程时,需要访问原始数据集校验响应变量的因子水平,对环境类型的对象使用数据框子集语法[]取值时,就会触发该类型错误。
修复步骤
- 执行
detach(data2)解除之前的数据集绑定,避免后续变量名匹配冲突 - 拟合模型时显式指定
data参数,不依赖attach()的搜索路径传参,修改拟合代码为:
glm.fit <- glm( formula = gleason_score ~ age, family = binomial(link = "logit"), data = data2 )
- 重新完成模型拟合后,再次执行原
extract_eq()调用语句即可正常输出带系数的模型方程。
内容的提问来源于stack exchange,提问作者Seyi
相关产品推荐
相关产品推荐

