R中多项模型的预测概率

时间:2015-11-25 13:45:24

标签: r multinomial nnet mlogit

我的主要问题是:predict()的{​​{1}}函数给出了什么概率,它与包mnlogit()nnet的概率有何不同?

有些背景,我尝试仅根据个别特定变量对结果进行建模,因为我不知道我的选择制作者的替代方案。对于给定的模型,我可以从所有三个中获得每个结果的相同预测概率,但mlogit给出几组概率,其中第一组与其他包给出的类似。看一下mnlogit的插图,我明白我可以得到个别的特定概率,但我不认为那些是我提取的那些(?),我也不认为该模型是为了获得那些。

请看下面的示例(不是最紧凑的,但是在学习这些函数时我正在使用的那个),您可以看到mnlogit提供了几组概率。

mnlogit

PS!随意添加标签“mnlogit”!

1 个答案:

答案 0 :(得分:1)

我将使用比你更简单的例子,但想法是一样的

library(mnlogit)
data(Fish, package = "mnlogit")
fm <- formula(mode ~ price | income | catch)
fit <- mnlogit(fm, Fish, choiceVar="alt", ncores = 2)
p <- predict(fit)

R> head(p)
             beach      boat   charter       pier
1.beach 0.09299770 0.5011740 0.3114002 0.09442818
2.beach 0.09151069 0.2749292 0.4537956 0.17976449
3.beach 0.01410359 0.4567631 0.5125571 0.01657626
4.beach 0.17065867 0.1947959 0.2643696 0.37017583
5.beach 0.02858216 0.4763721 0.4543225 0.04072325
6.beach 0.01029792 0.5572462 0.4216448 0.01081103

R> summary(apply(p,1,sum))
Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  1       1       1       1       1       1 

如您所见,predict.mnlogit的输出概率正是您所期望的:它们是预测观测属于指定类的概率。即 P(Y_i = y_j | X_i)其中j = 1,2,...,k为k个特定类。如下面的评论所述,概率也取决于模型。因此,更完整的表示法是 P(Y_i = y_j | X_i,\ theta),其中 \ theta 表示模型的估计参数。

在这种情况下,对于Obs 1:9%的海滩,50%的船,31%的包机和9%的码头。您选择的任何分类方法(nnetmlogit等)对其预测概率应具有类似的解释。同样,任何数据集都将对预测概率具有相同的解释。

正如您所看到的,多项式预测的所有可能分类的总和为1.