赞
踩
本篇再介绍一种常见的广义线性模型:Logistic模型。该模型主要针对分类结果进行建模。与之功能类似的另一个模型是Probit模型,但较少应用。
两点分布,又称伯努利分布,其概率函数如下:
写成指数形式:
整理后,
同样,对比指数族分布的通式:
可得,
根据广义线性模型 与解释变量为线性关系的假设,Logistic回归的模型形式如下:
因此, 是二项分布族模型的默认连接函数。
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
对于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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。