本篇再介绍一种常见的广义线性模型:Logistic模型。该模型主要针对分类结果进行建模。与之功能类似的另一个模型是Probit模型,但较少应用。

Logistic模型的形式

两点分布,又称伯努利分布,其概率函数如下:

写成指数形式:

整理后,

同样,对比指数族分布的通式:

可得,

根据广义线性模型 与解释变量为线性关系的假设,Logistic回归的模型形式如下:

因此, 是二项分布族模型的默认连接函数。

Probit模型

Logistic模型的形式经过变形后,可得,

上式右边恰好与标准增长分布(又称Logistic分布)的概率分布函数 形似。

Probit模型则假设,右边与标准正态分布的概率分布函数形似:

示例

glm函数中,两种模型的family参数分别设置为binomial(link = "logit")binomial(link = "probit"),其中前者可简写为binomial()

示例数据是iris,该数据集的Species包含三个水平,在glm函数中使用subset参数去掉一个水平即可将其作为二分变量。

  • Logistic模型
model.1 <- glm(Species ~ Sepal.Length + Sepal.Width + 
                 Petal.Length + Petal.Width,
               family = binomial(),
               data = iris, subset = Species != "setosa")

coef(summary(model.1))
##                Estimate Std. Error   z value   Pr(>|z|)
## (Intercept)  -42.637804  25.707477 -1.658576 0.09720127
## Sepal.Length  -2.465220   2.394297 -1.029622 0.30318758
## Sepal.Width   -6.680887   4.479547 -1.491420 0.13585116
## Petal.Length   9.429385   4.737172  1.990509 0.04653485
## Petal.Width   18.286137   9.742561  1.876933 0.06052723
  • Probit模型
model.2 <- glm(Species ~ Sepal.Length + Sepal.Width + 
                 Petal.Length + Petal.Width,
               family = binomial(link = "probit"),
               data = iris, subset = Species != "setosa")

coef(summary(model.2))
##                Estimate Std. Error   z value   Pr(>|z|)
## (Intercept)  -23.984504  13.843085 -1.732598 0.08316710
## Sepal.Length  -1.440487   1.271920 -1.132530 0.25741174
## Sepal.Width   -3.778139   2.555536 -1.478413 0.13929722
## Petal.Length   5.316433   2.435396  2.182985 0.02903692
## Petal.Width   10.485569   5.614329  1.867644 0.06181168

优势比(OR)

对于Logistic模型,有

则系数 的含义表示自变量 每增加一个单位, 增加为原来的 倍。

是事件发生与不发生的概率之比,称为优势比(Odds Ratio,OR),故Logistic模型的结果主要关注OR:

  • OR > 1,表示自变量与因变量存在正相关关系;
  • OR < 1,表示自变量与因变量存在负相关关系。

可以看出,Logistic模型的系数有很直观的含义;而Probit模型的系数的含义则模糊不清。大概正因为如此,前者应用远远比后者广泛。

准二项分布族

两点分布和泊松分布一样,其概率表达式只有一个参数,使得其均值和方差受到同一个参数控制,即数据序列的均值和离散程度之间存在定量关系。然而给定的数据序列未必满足这一要求,这时就可以使用准二项分布族quasibinomial(link = "logit")

下面代码的结果如果偏离1太远,则说明数据实际的离散程度与理论上的离散程度存在差距:

deviance(model.1)/df.residual(model.1)
## [1] 0.1252479

使用准二项分布族进行Logistic回归:

model.3 <- glm(Species ~ Sepal.Length + Sepal.Width + 
                 Petal.Length + Petal.Width,
               family = quasibinomial(),
               data = iris, subset = Species != "setosa")

coef(summary(model.3))
##                Estimate Std. Error   t value     Pr(>|t|)
## (Intercept)  -42.637804  9.5776372 -4.451808 2.319321e-05
## Sepal.Length  -2.465220  0.8920248 -2.763623 6.865568e-03
## Sepal.Width   -6.680887  1.6689102 -4.003143 1.239335e-04
## Petal.Length   9.429385  1.7648917  5.342756 6.257963e-07
## Petal.Width   18.286137  3.6297110  5.037904 2.238771e-06