r - 如何计算使用 nnet 包创建的多项 logit 模型的边际效应?
问题描述
我有一个使用nnet
R 包创建的多项 logit 模型,使用multinom
命令。因变量具有三个类别/选择选项。我正在根据农民特征对选择某种灌溉类型(不灌溉、地表灌溉、滴灌)的概率进行建模。
我想估计边际效应,即当我将自变量 X 增加一个单位时,选择灌溉类型 Y 的概率会改变多少?我曾尝试使用margins
包 ( marginal_effects
) 执行此操作,但这仅给出数据集中每个观察值的 1 个值。我期待三个值,因为我想要三种灌溉类型中的每一种的边际效应。
有人知道是否有更好的 R 包可用于此?margins
或者我是否对包裹做错了什么?谢谢你。
解决方案
您可以使用该marginaleffects
软件包来做到这一点(免责声明:我是维护者)。请注意警告。
library(nnet)
library(marginaleffects)
mod <- multinom(factor(cyl) ~ hp + mpg, data = mtcars, quiet = true)
mfx <- marginaleffects(mod, type = "probs")
## Warning in sanity_model_specific.multinom(model, ...): The standard errors
## estimated by `marginaleffects` do not match those produced by Stata for
## `nnet::multinom` models. Please be very careful when interpreting the results.
summary(mfx)
## Average marginal effects
## type Group Term Effect Std. Error z value Pr(>|z|) 2.5 %
## 1 probs 6 hp 2.792e-04 0.000e+00 Inf < 2.22e-16 2.792e-04
## 2 probs 6 mpg -1.334e-03 0.000e+00 -Inf < 2.22e-16 -1.334e-03
## 3 probs 8 hp 2.396e-05 1.042e-126 2.298e+121 < 2.22e-16 2.396e-05
## 4 probs 8 mpg -2.180e-04 1.481e-125 -1.472e+121 < 2.22e-16 -2.180e-04
## 97.5 %
## 1 2.792e-04
## 2 -1.334e-03
## 3 2.396e-05
## 4 -2.180e-04
##
## Model type: multinom
## Prediction type: probs
推荐阅读
- linux - 每个信号量的线程堆栈是多少
- python - web2py:如何在使用 SQLFORM.smartgrid 删除之前执行指令
- c# - 使用表和局部变量中的数据进行查询(C# 和 MS-Access、oledb)
- vba - 我再次收到混合单元格宽度错误
- android - 如何在 OnSuccessListener 中的 recyclerview 适配器中传递侦听器
- ruby-on-rails - 如何清理此 SQL 查询?
- c++ - 在 std::vector 类中使用迭代器
- zend-framework2 - 如何使用 Zend Framework 2 创建多个 where->like()?
- python - Python GDB 调试 segfault Docker
- amazon-web-services - AWS 简单电子邮件服务未过滤 IP 地址