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

如何计算使用nnet包构建的多分类logit模型的边际效应?

多分类logit边际效应获取方案

你当前只拿到1个类别的边际效应属于margins包的默认参数设置问题,不是操作错误,两类可行实现方式如下:

方案1:修正margins包调用参数

margins包的marginal_effects()函数处理nnet::multinom生成的多分类模型时,默认仅输出首个非参照类的边际效应,通过category参数指定目标类别即可输出对应结果:

  • 单类别边际效应获取示例:
# 假设你的模型名为mod,因变量灌溉类型的类别为c("无灌溉","地面灌溉","滴灌")
me_drip <- marginal_effects(mod, category = "滴灌")
  • 批量获取三类边际效应示例:
library(margins)
# 提取因变量所有类别
irr_categories <- levels(your_data$irrigation_type)
# 循环计算每个类别的边际效应
me_list <- lapply(irr_categories, function(cat) {
  marginal_effects(mod, category = cat)
})
# 给列表元素命名对应类别
names(me_list) <- irr_categories

调用后me_list的三个元素分别对应三类灌溉类型的全样本边际效应,使用summary()可输出平均边际效应结果。

方案2:使用marginaleffects包(更推荐)

marginaleffects是margins包的继任维护版本,对多分类模型的支持更完善,默认直接返回所有类别的边际效应,无需额外参数设置:

library(marginaleffects)
# 获取每条观测对应三个类别的边际效应
me_observation <- marginaleffects(mod)
# 直接获取常用的平均边际效应(AME)汇报结果
me_ame <- avg_slopes(mod)

返回结果会自动通过group列区分三类灌溉类型,自带标准误、显著性检验结果,可直接用于分析汇报。

结果校验规则

多分类logit模型的边际效应天然满足:同一自变量对所有类别的边际效应之和为0,你可通过该规则快速验证计算结果是否正确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 17:57:02