首頁>技術>

今天還是給大家寫一個比較基礎的-邏輯斯蒂迴歸。

Logistic regression, also called a logit model, is used to model dichotomous outcome variables. In the logit model the log odds of the outcome is modeled as a linear combination of the predictor variables.

啥是邏輯斯蒂呢?這個就是廣義線性迴歸的一種,適用於因變數為分類變數的時候,今天呢,只給大家寫因變數是二分類的情況。

資料就4個變數,admit、gre、gpa、和rank,今天我們就用這4個變數構建邏輯斯蒂迴歸模型。

myData <- read.csv("binary.csv")head(myData)summary(myData)str(myData)# 將rank轉化為因子型別myData$rank <- factor(myData$rank)summary(myData)# 稍微修改下源資料使其更適合邏輯斯蒂迴歸myData[myData$admit == 1, 3] <- myData[myData$admit == 1, 3] + 1
任何分析的第一步都是先畫圖

所以我們就先來畫我們的變數之間散點圖:

#散點圖library(ggplot2)ggplot(myData, aes(gpa, admit)) +  geom_point()#加上線性擬合ggplot(myData, aes(gpa, admit)) +  geom_point() +  geom_smooth(method = "lm", se = FALSE) +  coord_cartesian(ylim = c(0, 1))#加上邏輯斯蒂迴歸ggplot(myData, aes(gpa, admit)) +  geom_point() +  geom_smooth(method = "glm", se = T, method.args = list(family = "binomial"))

畫個圖就可以很一目瞭然的看出確實邏輯斯蒂比線性迴歸擬合更好。

好。

現在就來建模:

gpaModel <- glm(admit ~ gpa, data = myData, family = "binomial")summary(gpaModel)

首先我們是用gpa來預測admit,可以得到模型結果

可以看到結果中就有變數的係數和顯著性水平,我們可以看到gpa的係數是8.708這個指的是logOR的改變數哦。

當然,我們還可以得到係數的置信區間:

exp(confint(gpaModel))

上面的例子中,我們只用了一個預測變數,接下來我們所有變數都用:

fullModel <- glm(admit ~ gpa + gre + rank, data = myData, family = "binomial")summary(fullModel)

這個時候,輸出結果就比較複雜了,可以看到,gpa和gre這兩個變數都有顯著性意義,rank這個變數有4個水平,因為我們之前有將rank轉化為因子型別,所以此時它被自動轉化為3個啞變數,並且以rank1為參考水平。

同樣的,我們依然可以獲得各個係數的置信區間:

exp(confint(fullModel))

程式碼中加上exp,得到的係數就是OR的改變量了

其實這兒還想強調一點,大家注意我們這個全模型得到的gre的原始係數只有0.005345,非常的小,這是因為gre這個變數是在百這個數量級上的,而其他的變數都是個位數,就是因為這種數量級的不一致導致了係數相差巨大,所以更好的擬合方法因該是將gre這個變數進行轉換,比如說以2為底數進行log轉換後再擬合模型

fullModel <- glm(admit ~ gpa + log2(gre) + rank, data = myData, family = "binomial")summary(fullModel)

這個時候再看,log2gre的係數就大小和gpa差不多了,此時係數的解釋就是gre每增加2倍logOR的改變數。

我們還可以將模型係數和其自信區間同時輸出:

cbind(OR=exp(coef(fullModel)),exp(confint(fullModel)))

往期內容:

10
最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • ABP vNext框架文件解讀13-實體&聚合根