2016-03-13 73 views
1

我一直在努力解決以下問題一段時間,非常感謝您的幫助。我現在用的是mlogit功能R中運行的邏輯模型和我能夠生成選擇每個備選方案的預測結果的給定值的預測概率如下:在R中運行mlogit函數後生成預測概率的置信區間

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,) 

我不能,然而,工作如何將可信區間添加到預測的概率估計中。我已經嘗試在預測函數中添加參數,但似乎沒有生成它們。任何想法如何可以實現將不勝感激。

回答

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 
+0

完美的解決方案@effel非常感謝! – James