R中的GLMs是用Fisher Scoring估计的。对于多类别logit来说,有两种方法:比例几率模型和对数线性模型或多项式回归。
比例几率模型是累积链接模型的一种特殊类型,实现在 MASS
包中。它不是用Fisher scoring估计的,所以默认的 glm.fit
工具将不能估计这样的模型。然而,值得注意的是,累积链接模型是 GLMs,并且在McCullogh和Nelder的同名文本中进行了讨论。负二项式GLMs也存在类似的问题:它们在链接函数和概率模型的严格意义上是GLMs,但需要专门的估计程序。至于R函数glm
,人们不应将其视为每种GLM的详尽估计器。
nnet
有一个对数线性模型估计器的实现。它符合更复杂的神经网络估计器,使用软最大熵,这是一个等价的公式(理论上可以证明这一点)。事实证明,如果你足够熟练,可以在默认的R中用glm
估计对数线性模型。关键在于看到逻辑回归和泊松回归之间的联系。将计数模型的交互项(对数相对率差异)识别为结果(log odds ratio)的逻辑模型中的一阶项,可以通过“条件”的方式估计多类别结果的$K \times 2$列联表的边际值来估计相同的参数和标准误差。关于此背景的相关SE问题,请参见此处。
以从MASS包中的VA肺癌数据为例:
> summary(multinom(cell ~ factor(treat), data=VA))
initial value 189.922327
iter 10 value 182.240520
final value 182.240516
converged
Call:
multinom(formula = cell ~ factor(treat), data = VA)
Coefficients:
(Intercept) factor(treat)2
2 6.931413e-01 -0.7985009
3 -5.108233e-01 0.4054654
4 -9.538147e-06 -0.5108138
Std. Errors:
(Intercept) factor(treat)2
2 0.3162274 0.4533822
3 0.4216358 0.5322897
4 0.3651485 0.5163978
Residual Deviance: 364.481
AIC: 376.481
相较于:
> VA.tab <- table(VA[, c('cell', 'treat')])
> summary(glm(Freq ~ cell * treat, data=VA.tab, family=poisson))
Call:
glm(formula = Freq ~ cell * treat, family = poisson, data = VA.tab)
Deviance Residuals:
[1] 0 0 0 0 0 0 0 0
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) 2.708e+00 2.582e-01 10.488 <2e-16 ***
cell2 6.931e-01 3.162e-01 2.192 0.0284 *
cell3 -5.108e-01 4.216e-01 -1.212 0.2257
cell4 -1.571e-15 3.651e-01 0.000 1.0000
treat2 2.877e-01 3.416e-01 0.842 0.3996
cell2:treat2 -7.985e-01 4.534e-01 -1.761 0.0782 .
cell3:treat2 4.055e-01 5.323e-01 0.762 0.4462
cell4:treat2 -5.108e-01 5.164e-01 -0.989 0.3226
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
(Dispersion parameter for poisson family taken to be 1)
Null deviance: 1.5371e+01 on 7 degrees of freedom
Residual deviance: 4.4409e-15 on 0 degrees of freedom
AIC: 53.066
Number of Fisher Scoring iterations: 3
将一个模型中的交互参数和主要水平与第二个模型进行比较。还要比较拦截器。AIC不同,因为loglinear模型是一个概率模型,即表格的边际是通过模型中的其他参数而被条件化的,但就预测和推断而言,这两种方法产生相同的结果。
所以简而言之,这是个骗人的问题!glm
处理多类别 logistic 回归,只需要更深入地了解这些模型的构成即可。