r - 在 R 中运行 mlogit 函数后生成预测概率的置信区间

标签 r logistic-regression multinomial mlogit

我已经被以下问题困扰了一段时间,非常感谢您的帮助。我使用 mlogit 函数在 R 中运行 logit 模型,并且能够生成为预测变量的给定值选择每个替代方案的预测概率,如下所示:

library(mlogit)
data("Fishing", package = "mlogit")
Fish <- mlogit.data(Fishing, varying = c(2:9), shape = "wide", choice = "mode")

Fish_fit<-Fish[-(1:4),]
Fish_test<-Fish[1:4,]
m <- mlogit(mode ~price+ catch | income, data = Fish_fit)
predict(m,newdata=Fish_test,)

但是,我无法弄清楚如何将置信区间添加到预测概率估计中。我已经尝试向预测函数添加参数,但似乎没有一个生成它们。任何有关如何实现这一目标的想法将不胜感激。

最佳答案

这里的一种方法是蒙特卡罗模拟。您可以模拟从多元正态抽样分布中重复抽取,其参数由模型结果给出。

对于每次模拟,估计您的预测概率,并使用模拟的经验分布来获得您的置信区间。

library(MASS)

est_betas <- m$coefficients
est_preds <- predict(m, newdata = Fish_test)

sim_betas <- mvrnorm(1000, m$coefficients, vcov(m))
sim_preds <- apply(sim_betas, 1, function(x) {
  m$coefficients <- x
  predict(m, newdata = Fish_test)
})
sim_ci <- apply(sim_preds, 1, quantile, c(.025, .975))

cbind(prob = est_preds, t(sim_ci))
#              prob       2.5%     97.5%
# beach   0.1414336 0.10403634 0.1920795
# boat    0.3869535 0.33521346 0.4406527
# charter 0.3363766 0.28751240 0.3894717
# pier    0.1352363 0.09858375 0.1823240

关于r - 在 R 中运行 mlogit 函数后生成预测概率的置信区间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35970480/

相关文章:

r - 与回归函数相比,nnet 的多项式汇总函数速度极慢

r - 如何将 observeEvent 与复选框事件一起使用 Shiny

r - 基于 dplyr 链中多列的条件评估的变异变量

r - 如何在 ggplot2 中绘制虚线周围的轮廓或边框?

r - 在 R 中,Matlab 中 @ 函数句柄的等价物是什么?

machine-learning - 具有非整数特征值的逻辑回归

scala - Spark : How to run logistic regression using only some features from LabeledPoint?

python - xgboost 二元逻辑回归

r - 如何使用基于 nnet::multinom() 模型的 {ggeffects} 获得预测概率图的置信区间?

r - 多项式密度函数适用于非整数数据?