【问题标题】:Generating confidence intervals for predicted probabilities after running mlogit function in R在 R 中运行 mlogit 函数后生成预测概率的置信区间
【发布时间】:2016-06-28 11:37:36
【问题描述】:

一段时间以来,我一直在努力解决以下问题,非常感谢您的帮助。我正在使用 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 函数添加参数,但似乎没有一个生成它们。任何关于如何实现它的想法将不胜感激。

【问题讨论】:

    标签: r logistic-regression multinomial mlogit


    【解决方案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
    

    【讨论】:

    • 完美解决方案@effel 非常感谢!
    猜你喜欢
    • 2015-07-12
    • 1970-01-01
    • 2013-09-10
    • 2015-02-09
    • 2018-05-05
    • 2020-01-03
    • 2013-08-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多