泰坦尼克号数据集的逻辑回归
Logistic 回归是广义线性模型的一个特例,用于模拟二分类结果( probit 和补充 log-log 模型密切相关)。
该名称来自使用的链接函数, logit 或 log-odds 函数。 logit 的反函数称为逻辑函数,由下式给出:
此函数取值为 -Inf; + Inf [ 之间的值 *],*并返回 0 到 1 之间的值 ; 即逻辑函数采用线性预测器并返回概率。
可以使用 glm
函数和 family = binomial
(family = binomial(link="logit")
的快捷方式; logit 是二项式族的默认链接函数) 来执行逻辑回归。
在这个例子中,我们试图预测乘坐 RMS 泰坦尼克号的乘客的命运。
阅读数据:
url <- "http://biostat.mc.vanderbilt.edu/wiki/pub/Main/DataSets/titanic.txt"
titanic <- read.csv(file = url, stringsAsFactors = FALSE)
清除缺失的值:
在这种情况下,我们用近似值(平均值)替换缺失值。
titanic$age[is.na(titanic$age)] <- mean(titanic$age, na.rm = TRUE)
训练模型:
titanic.train <- glm(survived ~ pclass + sex + age,
family = binomial, data = titanic)
模型摘要:
summary(titanic.train)
输出:
Call:
glm(formula = survived ~ pclass + sex + age, family = binomial, data = titanic)
Deviance Residuals:
Min 1Q Median 3Q Max
-2.6452 -0.6641 -0.3679 0.6123 2.5615
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) 3.552261 0.342188 10.381 < 2e-16 ***
pclass2nd -1.170777 0.211559 -5.534 3.13e-08 ***
pclass3rd -2.430672 0.195157 -12.455 < 2e-16 ***
sexmale -2.463377 0.154587 -15.935 < 2e-16 ***
age -0.042235 0.007415 -5.696 1.23e-08 ***Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 1686.8 on 1312 degrees of freedom
Residual deviance: 1165.7 on 1308 degrees of freedom
AIC: 1175.7
Number of Fisher Scoring iterations: 5
-
显示的第一件事是调用了。它指定了模型和选项。
-
接下来我们看到偏差残差,它是模型拟合的度量。这部分输出显示了模型中使用的各个案例的偏差残差的分布。
-
输出的下一部分显示系数,它们的标准误差,z 统计量(有时称为 Wald z 统计量)和相关的 p 值。
- 定性变量是模糊的。模态被视为参考。可以使用公式中的
I
更改参考模态。 - 所有四个预测因子在 0.1%的水平上具有统计学意义。
- 逻辑回归系数给出预测变量的一个单位增加的结果的对数几率的变化。
- 要查看比值比 (预测变量中每单位增加的生存几率的乘法变化),请对参数进行取幂。
- 要查看参数的置信区间(CI),请使用
confint
。
- 定性变量是模糊的。模态被视为参考。可以使用公式中的
-
系数表下方是拟合指数,包括零点和偏差残差和 Akaike 信息准则(AIC),它们可用于比较模型性能。
- 当将通过最大似然拟合的模型与相同数据进行比较时,AIC 越小,拟合越好。
- 模型拟合的一个衡量标准是整体模型的重要性。该测试询问具有预测变量的模型是否比仅具有截距的模型(即,空模型)明显更好。
优势比的例子:
exp(coef(titanic.train)[3])
pclass3rd
0.08797765
使用这种模式,与头等舱相比,三等舱乘客的生存几率约为十分之一。
参数置信区间的示例:
confint(titanic.train)
Waiting for profiling to be done...
2.5 % 97.5 %
(Intercept) 2.89486872 4.23734280
pclass2nd -1.58986065 -0.75987230
pclass3rd -2.81987935 -2.05419500
sexmale -2.77180962 -2.16528316
age -0.05695894 -0.02786211
计算整体模型的重要性的例子:
测试统计量是分布卡方形的,其自由度等于当前和零模型之间的自由度差异(即,模型中的预测变量的数量)。
with(titanic.train, pchisq(null.deviance - deviance, df.null - df.residual
, lower.tail = FALSE))
[1] 1.892539e-111
p 值接近 0,显示出非常显着的模型。