1

我一直在努力解决以下问题一段时间,非常感谢您的帮助。我正在使用 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,)

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

4

1 回答 1

1

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

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

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
于 2016-03-13T21:49:58.880 回答