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

多项回归:如何去除L/Q/R格式,显示完整分类变量系数?

问题原因与解决方法

为什么系数显示格式不同?

测试数据里的x是普通字符型因子(无有序属性),R默认对这类名义分类变量采用哑变量编码(treatment coding),生成的系数以x水平名的形式(如xb、xc)呈现,代表对应水平与参考水平的差异。

而你实际数据中的FIES_R是有序因子(ordered factor),R对有序因子默认采用正交多项式编码,会生成.L(线性趋势项)、.Q(二次趋势项)、.C(三次趋势项)这类编码项,用来拟合因变量随有序因子水平变化的趋势,而非单个水平的差异。

如何改成FIES_R_1、FIES_R_2...的格式?

要让有序因子按哑变量方式生成系数,有三种可行方法:

方法1:将有序因子转为普通因子

直接去掉FIES_R的有序属性,转为普通名义因子:

# 转换因子类型
df$FIES_R <- factor(df$FIES_R, ordered = FALSE)
# 重新拟合模型
nnet::multinom(y ~ FIES_R, data = df)

方法2:在公式中强制转为普通因子

无需修改原数据,直接在公式里用as.factor()强制转换:

nnet::multinom(y ~ as.factor(FIES_R), data = df)

方法3:修改有序因子的编码方式

保持FIES_R的有序属性,但将编码改为哑变量编码:

# 设置哑变量编码
contrasts(df$FIES_R) <- contr.treatment(nlevels(df$FIES_R))
# 拟合模型
nnet::multinom(y ~ FIES_R, data = df)

以上三种方法都会让模型输出的系数以FIES_R_水平值的形式呈现(如FIES_R_1、FIES_R_2),对应每个水平与参考水平的差异。

内容的提问来源于stack exchange,提问作者An116

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 09:41:29