我已经被以下问题困扰了一段时间,非常感谢您的帮助。我使用 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/