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

如何在R的mlogit包中获取交互项的正确系数名称?

解决mlogit交互项系数名称显示问题

在使用R的mlogit包做多项logit回归时,加入个体特定变量的交互项(比如income*size)后,系数名称会出现重复,无法区分主效应和交互效应。比如用TravelMode数据复现的情况:

data("TravelMode", package = "AER")
Tr2 <- TravelMode[-c(2, 7, 9),]
model_travel <- mlogit(choice ~ 0 | income*size, Tr2)
summary(model_travel)

输出的系数中会重复出现income:train这类名称,分不清哪个是income的主效应,哪个是income*size的交互效应:

Coefficients :
                   Estimate Std. Error z-value Pr(>|z|)    
(Intercept):train  3.079774   0.929604  3.3130 0.000923 ***
(Intercept):bus    2.608694   1.197038  2.1793 0.029310 *  
(Intercept):car    1.934101   1.064597  1.8167 0.069256 .  
income:train      -0.100133   0.026481 -3.7814 0.000156 ***
income:bus        -0.074617   0.031675 -2.3557 0.018487 *  
income:car        -0.076934   0.026126 -2.9448 0.003232 ** 
size:train        -0.643083   0.475573 -1.3522 0.176302    
size:bus          -1.318797   0.753714 -1.7497 0.080165 .  
size:car          -1.099769   0.574192 -1.9153 0.055450 .  
income:train       0.023946   0.013701  1.7477 0.080512 .  
income:bus         0.025389   0.019805  1.2820 0.199856    
income:car         0.042375   0.014036  3.0190 0.002536 ** 

解决办法

方法1:手动构建交互项(推荐)

不要用*自动展开交互项,而是手动创建交互变量并在公式中显式指定,这样系数名称会清晰区分主效应和交互效应:

data("TravelMode", package = "AER")
Tr2 <- TravelMode[-c(2, 7, 9),]
# 手动生成交互项
Tr2$income_size <- Tr2$income * Tr2$size
# 公式中明确写主效应+交互效应
model_travel <- mlogit(choice ~ 0 | income + size + income_size, Tr2)
summary(model_travel)

此时系数会显示为income:xxx(主效应)、size:xxx(主效应)、income_size:xxx(交互效应),不会重复。

方法2:修改已拟合模型的系数名称

如果已经拟合好模型,直接修改系数的名称即可,不影响后续计算:

# 先拟合原模型
model_travel <- mlogit(choice ~ 0 | income*size, Tr2)
# 获取当前系数名称
coef_names <- names(coef(model_travel))
# 把重复的income:xxx替换为income_size:xxx(对应交互项)
coef_names[10:12] <- gsub("income:", "income_size:", coef_names[10:12])
# 重新赋值系数名称
names(model_travel$coefficients) <- coef_names
# 查看修正后的结果
summary(model_travel)

注意事项

以上两种方法都不会改变模型的系数值和结构,完全不影响后续使用sandwich包的vcovCL计算聚类标准误,因为vcovCL是基于模型的系数矩阵和原始数据进行计算的,名称修正只是显示层面的调整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 04:12:08