R中多项式的拟合值:参考类别的系数?

jfl*_*noy 2 r multinomial

我正在使用nnet包中的函数multinom来运行多项逻辑回归.

在多项逻辑回归中,据我所知,系数是响应概率与参考响应概率之比的对数变化(即ln(P(i)/ P(r))= B 1 + B 2*X ...其中i是一个响应类别,r是参考类别,X是一些预测器).

但是,拟合(multinom(...))会为每个类别生成估计值,甚至是参考类别r.

编辑示例:

set.seed(1)
library(nnet)
DF <- data.frame(X = as.numeric(rnorm(30)), 
                 Y = factor(sample(letters[1:5],30, replace=TRUE)))
DF$Y<-relevel(DF$Y, ref="a") #ensure a is the reference category
model <- multinom(Y ~ X, data = DF)
coef(model)
#  (Intercept)           X
#b   0.1756835  0.55915795
#c  -0.2513414 -0.31274745
#d   0.1389806 -0.12257963
#e  -0.4034968  0.06814379

head(fitted(model))
#          a         b          c         d         e
#1 0.2125982 0.2110692 0.18316042 0.2542913 0.1388810
#2 0.2101165 0.1041655 0.26694618 0.2926508 0.1261210
#3 0.2129182 0.2066711 0.18576567 0.2559369 0.1387081
#4 0.1733332 0.4431170 0.08798363 0.1685015 0.1270647
#5 0.2126573 0.2102819 0.18362323 0.2545859 0.1388516
#6 0.1935449 0.3475526 0.11970164 0.2032974 0.1359035

head(DF)
#           X Y
#1 -0.3271010 a
Run Code Online (Sandbox Code Playgroud)

为了计算响应之间的预测概率比b和响应一个用于行1中,我们计算exp(0.1756835+0.55915795*(-0.3271010))= 0.9928084.我看到这对应于第1行的拟合P(b)/ P(a)(0.2110692/0.2125982= 0.9928084).

参考类别的拟合概率是否以代数方式计算(例如0.2110692/exp(0.1756835+0.55915795*(-0.3271010)))?

有没有办法获得参考类别预测概率的等式?

小智 5

我有同样的问题,在环顾四周后,我认为解决方案是:给定3个类:a,b,c和拟合(模型)概率pa,pb,算法输出的pc,你可以从这3个中重建这些概率公式:

log(pb/pa) = beta1*X

log(pc/pa) = beta2*X

pa+pb+pc=1
Run Code Online (Sandbox Code Playgroud)

其中beta1,beta2是coef(模型)输出的行,X是您的输入数据.

玩这些方程式你会得到:

pb = exp(beta1*X)/(1+exp(beta1*X)+exp(beta2*X))

pc = exp(beta2*X)/(1+exp(beta1*X)+exp(beta2*X))

pa = 1 - pb - pc
Run Code Online (Sandbox Code Playgroud)