泰坦尼克號資料集的邏輯迴歸
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,顯示出非常顯著的模型。