r - 可以使用广义线性模型估算多项式模型吗?

标签 r logistic-regression glm

在分类数据的分析中,我们经常使用逻辑回归来估计二项式结果与一个或多个协变量之间的关系。

我了解这是一种广义线性模型(GLM)。在R中,这是通过glm函数使用参数family=binomial来实现的。另一方面,在分类数据分析中是多项模型。这些不是GLM吗?难道不能使用glm函数在R中对其进行估计吗?

(在此post for Multinomial Logistic Regression中。作者使用外部软件包mlogit,这似乎也已过时)

为什么GLM类别仅限于二分结果?是否因为可以将多类分类视为多个二元分类模型?

最佳答案

R中的GLM使用Fisher Scoring估算。我想到了两种用于多类别logit的方法:比例赔率模型和对数线性模型或多项式回归。

比例赔率模型是累积链接模型的一种特殊类型,并在MASS包中实现。无法通过Fisher评分进行估算,因此默认的glm.fit工作马将无法估算此类模型。但是,有趣的是,累积链接模型是GLM,由McCullogh和Nelder在同名文字中进行了讨论。负二项式GLM也会发现类似的问题:严格意义上来说,它们是GLM,它们是链接函数和概率模型,但需要专门的估计例程。就R函数glm而言,不应将其视为每种GLM的详尽估计。

nnet具有对数线性模型估计器的实现。它符合他们使用soft-max熵的更复杂的神经网络估计器,后者是一个等效公式(理论在那里表明了这一点)。事实证明,如果您愿意,可以使用默认R中的glm估计对数线性模型。关键在于查看逻辑回归和泊松回归之间的联系。将计数模型的交互项(对数相对比率的差异)识别为结果的对数模型(对数比值比)中的一阶项,则可以通过对边距进行“调节”来估计相同的参数和相同的SE多类别结果的$ K \ times 2 $列联表中的一个。 A related SE question on that background is here

以以下示例为例,使用来自MASS软件包的VA肺癌数据:

> summary(multinom(cell ~ factor(treat), data=VA))
# weights:  12 (6 variable)
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有所不同,因为对数线性模型甚至是针对表边距的概率模型,该概率模型也受模型中其他参数的限制,但是就预测和推断而言,这两种方法得出的结果相同。

简而言之,技巧问题! glm处理多类别的Logistic回归,只需要对构成这些模型的内容有一个更深入的了解。

关于r - 可以使用广义线性模型估算多项式模型吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42114194/

相关文章:

r - 如何从超大数据集(尤其是 rxGlm 输出)绘制交互效果

r - 从列表中子集 n 个元素

machine-learning - 如何使用机器学习算法找到值流中的特殊点?

image - Vowpal Wabbit 模型在使用像素 RGB 值对图像进行多类分类时表现不佳

r - 除了使用glm之外,还有其他方法可以在R中拟合泊松模型吗?

r - 强制某些参数在 lm() 中具有正系数

r - Predict() 函数的奇怪行为

mysql - 如何使用 SparkR 将 MySQL 数据库连接到 Apache Spark?

r - 如何按组加速子集

scikit-learn - 为什么选择求解器会导致sklearn(LogisticRegression)中的权重不同