
R數據分析案例:邏輯回歸
邏輯回歸,也稱之為邏輯模型,用于預測二分結果變量。在邏輯模型當中,輸出結果所占的比率就是預測變量的線性組合。
這篇文章將要使用下面這幾個包,而且你們需要保證在運行我所舉的例子的時候,你已經把這些包都裝好了。如果你還沒裝好這些包,那么,運行install.packages(“R包名稱”)這個操作,或者你可能需要更新版本,運行update.packages()。
library(aod)
library(ggplot2)
library(Rcpp)
版本說明:本文基于R3.2.3進行測試的,一下是包的版本:
Rcpp:0.12.3 ggplot2:2.0.0 knitr:1.12.3
記?。罕疚囊庠谝阒廊绾斡孟嚓P的指令進行邏輯回歸分析,而并沒有涵蓋所有研究人員可能會做的事情,尤其是數據是沒有進行清洗和查閱的,而且假設并非最嚴謹,其它方面也不會相當的標準。
案例
案例1: 假如我們對這些因素感興趣,它們表示政治候選人是否贏得選舉的因子,其中,我們把結果變量表示為0或1,也可以表達成贏或者輸。而預測變量的利益可由一場運動中所投入的金額表示,或者是選舉人所花的時間,再或者在職人員是否獲得足夠的支持。
案例2:一個研究者可能會對GRE(研究生入學考試成績)、GPA(大學平均績點),以及研究生學院的名譽感興趣,因為它們影響學校的招生問題。這里,我們用允許/不允許這個二進制結果表示其因變量。
數據的描述
對于我們接下來要進行的數據分析來說,我們要對案例2的入學問題進行深入的探討。我們有了通常情況下假設所產生的數據,而它們可從R的相關網站得到。記住,當我們要調用相關函數導入數據的時候,如果我們要具體表示一個硬盤驅動器的文件,我們需要打上斜杠(/),而不是反斜杠(\)。
這個數據集有二進制的結果(輸出值,依賴),它表示允許。這里有3個預測變量:gre、gpa以及rank。我們把gre和gpa看作是連續變量。rank表示有4個值為1。這里,為0的那所學校聲望最高,其它的這4所高校聲望最低。這時,我們可以用summary()函數來匯總一下這個數據集的情況,而且,如果想要計算里面的標準差,我們可以使用sapply()函數,并在里面寫上sd來獲取其標準差。
你可能會考慮到的分析方法
接下來,我會列舉一些你可能會用到的方法。這里所列舉的一些方法相對來說比較合理,畢竟有些其他方法不能執行或者尤其局限性。
1.邏輯回歸,也是本文的重點
2.概率回歸。概率分析所產生的結果類似于邏輯回歸。我們可以依據我們的需要進行有選擇性的進行概率回歸或邏輯回歸。
3.最小二乘法。當你使用二進制輸出變量的時候,這種模型就是常用于線性回歸分析的,而且也可以用它來進行條件概率的運算。然而,這里的誤差(例如殘差)來自于線性概率模型,而且會影響到異方差性最小二乘法回歸的正態誤差檢驗,它也影響無效標準誤差和假設性分析。想要了解更多關于線性概率模型的相關問題,可以查閱Long(1997,p.38-40)。
4.雙組判別函數分析。這是一個多元的方法處理輸出變量。
5.Hotelling 的T2。0/1的輸出結果轉換到分組變量中,而前一個預測值則成為輸出變量。這樣可以進行一個顯著性測試,然而并沒有給沒個變量分別給一個系數,而且這對于某個變量根據影響情況調整到其它變量的程度是不清楚的。
使用邏輯模型
接下來的代碼,通過使用glm()函數(廣義線性模型)進行相關評估。首先,我們要把rank(秩)轉換成因子,并預示著rank在這里被視為分類變量。
由于我們得到了模型的名字(mylogit),而R并不會從我們的回歸中產生任何輸出結果。為了得到結果,我們使用summary()函數進行提?。?
1.在上面的結果中,我們首先看到的就是call,這提示我們這時的R在運行什么東西,我們設定了什么選項,等等。
2.接下來,我們看到了偏差殘差,用于測量模型的擬合度。這部分的結果顯示了這個分布的偏差殘差,而針對每個使用在模型里的個案。接下來,我們討論一下如何匯總偏差估計,從而知道模型的擬合結果。
3.下一部分的結果顯示了相關系數,標準誤差,z統計量(有時也叫Wald Z統計量),以及它的相關結果。gre和gpa都是同等重要的統計量,并作為rank的3個變量。邏輯回歸系數給改變了在預測變量中增加一個單位的輸出結果誤差。
對于gre,每改變一個單位,輸出結果的允許誤差(相對于不允許來說)增加0.002。
對于gpa,每改變一個單位,入學的研究生的允許誤差增加0.804。
ranK的指示變量的觀察方法就有點不同了。例如,層在本科學習過的在rank的值是2,其它為1,使之允許誤差變為-0.675。
我們可以使用confint()函數來獲取相關的區間的預測信息。對于邏輯回歸模型來說,其置信區間時基于異形對數似然函數求出來的。同樣,我們得到的CL是基于默認方法求出的標準差算的。
我們可以調用aod包里的wald.test()函數來測試rank的所有影響。圖表里的系數的順序和模型里的項順序是一樣的。這樣很重要,因為wald.test()函數就是基于這些模型的項順序進行測試的。b提供了系數,而Sigma提供了誤差項的方差協方差矩陣,而且最終,這些項告訴R哪些項用來進行測試,而在這種情況下,第4、5、6這三項作為rank的層次進行測試。
卡方檢驗算出來的值是20.9,這里涉及到3個自由度,p值算出來是0.00011,這預示著我們所假設的這些項之間具有顯著的影響效果。
我們也可以測試而外的假設,這些假設包含rank里不同層次的差異。下面,我們通過測試得知rank=2的測試結果和rank=3的時候一樣。下面的第一行代碼創造的向量是1,這定義了測試里我們要執行的內容。在這種情況下,我們想要測試rank=2和rank=3(即模型的第4項、第5項)這兩個不同的項所產生的差異(減)。為了對比這2項,我們對其中一項乘以1,另一項乘以-1。其它項不包含在測試里,所以它們統一都乘上0。第二行代碼寫上L=1,這告訴R基于向量為1時執行這次測試(并不是我們之前所選擇的進行測試)。
卡方檢驗所在自由度為1的情況下算出來的結果為5.5,并得出相關的p值為0.019,這預示著rank=2和rank=3之間存在著顯著的差異。
你一可以把系數指數化,并從誤差率進行解讀,而R會自動幫你算出來。為了要得到指數化系數,你可以告訴R你想要指數化(exp),而R也會按照你的要求把它們指數化,它屬于mylogit(coef(mylogit))的一部分。我們可以使用相同的誤差率以及它們的置信區間,并可先前就把置信區間指數化。把它們都放到其中一個圖表,我們可以使用cbind系數和系數置信區間這些列整合起來。
現在,我們可以說gpa增加了一個單位,而研究生入學(反之就是沒有入學的)的誤差則在因子上增加2.23。對于更多關于誤差率信息的解讀,查看我們的FAQ頁 How do I interpret odds ratios in logistic regression? 。注意,當R產生了這個結果時,關于誤差率的攔截一般都不被解讀。
你也可以使用預測概率來幫助你解讀這個模型。預測概率可以均可由分類預測變量或連續預測變量計算出來。為了算出預測概率,我們首先要創建含有我們需要的獨立變量來創建新的數據框。
我們將要開始計算每個rank值的預測概率的允許值,并計算gre和gpa的平均值。首先,我們要創建新的數據框:
這些值必須含有和你之前所創建的邏輯回歸分析相同的名字(例如,在這個例子中,gre的就必須命名為gre)。既然,我們現在已經創建好了我們需要進行運算的數據框,那么我們可以告訴R根據這個來創建預測概率。第一行代碼經過了壓縮,我們現在就把它分開來,討論這些值是怎樣執行的。Newdata$rankP告訴R我們要根據數據集(數據框)的newdata1里的rankP創建一個新的變量剩余的指令告訴R這些rankP值應當使用prediction()函數進行預測。圓括號里的選項告訴R這些預測值應該基于分析mylogit進行預測,mylogit的值源自newdata1以及它的預測值類型就是預測概率(type=”response”)。第二行代碼列舉了數據框newdata1的值,盡管它不是十分理想,而這就是圖表的預測概率。
在上面的預測結果中,我們看到來自最好的名校(rank=1)并被接收到研究生的本科生預測概率是0.52,而0.18的學生來自最低檔次的學校(rank=4),以gre和gpa作為平均值。我們可以做相似的事情來創建一個針對不斷變化的變量gre和gpa的預測概率圖表。我們可以基于此作圖,所以我們可以在200到800之間創建100個gre值,基于它的rank(1,2,3,4)。
newdata2 <- with(mydata,
data.frame(gre = rep(seq(from = 200, to = 800, length.out = 100), 4),
gpa = mean(gpa), rank = factor(rep(1:4, each = 100))))
這些代碼所產生的預測概率(下面第一行)和之前算的一樣,除非我們還想要對標準差進行要求,否則我們可以對置信區間作圖。我們可以對關聯規模進行預測,同時反向變換預測值和置信區間的臨近值到概率中。
當然,使用圖像描繪預測概率來解讀和展示模型也是相當有用的。我們會使用ggplot2包來作圖。下面我們作圖描繪預測概率,和95%置信區間。
我們也許很想看到這個模型的擬合效果怎么樣,而剛剛那樣做是非常有用的,尤其是對比這些競爭的模型。Summary(mylogit)所產生的結果包含了擬合系數(下面展示了其系數),包含了空值、偏差殘差和AIC。模型擬合度的一個衡量標準就是整個模型的顯著程度。這個測試問了我們使用了預測值的模型是否比僅僅含有截距的模型(即,空模型)更加顯著,而這個測試里的統計量是含有預測值的預測擬合指數和空模型的差,而且這個模型的統計量也是含有其自由度等于現有的模型(即,模型里的預測變量個數)和空模型的自由度之差的卡方分布。為了要找到這兩個模型的偏差(即,這個測試的統計量),我們可以使用下面的指令:文章來源cda數據分析培訓
這兩個模型的自由度之差等于這個模型里預測變量的個數,而且我們可以按照下面的方法獲取它:
最后,我們提取一下p值:
在自由度為5的情況下算出來的卡方是41.46,而相關的p值則小于0.001。這告訴我們,此模型的擬合效果比一個空模型所產生的擬合效果更加顯著。這個,我們有時稱它為似然比測試(偏差殘差為-2*log似然值)。要看到它的對數似然,我們可以這樣寫:
數據分析咨詢請掃描二維碼
若不方便掃碼,搜微信號:CDAshujufenxi
CDA數據分析師證書考試體系(更新于2025年05月22日)
2025-05-26解碼數據基因:從數字敏感度到邏輯思維 每當看到超市貨架上商品的排列變化,你是否會聯想到背后的銷售數據波動?三年前在零售行 ...
2025-05-23在本文中,我們將探討 AI 為何能夠加速數據分析、如何在每個步驟中實現數據分析自動化以及使用哪些工具。 數據分析中的AI是什么 ...
2025-05-20當數據遇見人生:我的第一個分析項目 記得三年前接手第一個數據分析項目時,我面對Excel里密密麻麻的銷售數據手足無措。那些跳動 ...
2025-05-20在數字化運營的時代,企業每天都在產生海量數據:用戶點擊行為、商品銷售記錄、廣告投放反饋…… 這些數據就像散落的拼圖,而相 ...
2025-05-19在當今數字化營銷時代,小紅書作為國內領先的社交電商平臺,其銷售數據蘊含著巨大的商業價值。通過對小紅書銷售數據的深入分析, ...
2025-05-16Excel作為最常用的數據分析工具,有沒有什么工具可以幫助我們快速地使用excel表格,只要輕松幾步甚至輸入幾項指令就能搞定呢? ...
2025-05-15數據,如同無形的燃料,驅動著現代社會的運轉。從全球互聯網用戶每天產生的2.5億TB數據,到制造業的傳感器、金融交易 ...
2025-05-15大數據是什么_數據分析師培訓 其實,現在的大數據指的并不僅僅是海量數據,更準確而言是對大數據分析的方法。傳統的數 ...
2025-05-14CDA持證人簡介: 萬木,CDA L1持證人,某電商中廠BI工程師 ,5年數據經驗1年BI內訓師,高級數據分析師,擁有豐富的行業經驗。 ...
2025-05-13CDA持證人簡介: 王明月 ,CDA 數據分析師二級持證人,2年數據產品工作經驗,管理學博士在讀。 學習入口:https://edu.cda.cn/g ...
2025-05-12CDA持證人簡介: 楊貞璽 ,CDA一級持證人,鄭州大學情報學碩士研究生,某上市公司數據分析師。 學習入口:https://edu.cda.cn/g ...
2025-05-09CDA持證人簡介 程靖 CDA會員大咖,暢銷書《小白學產品》作者,13年頂級互聯網公司產品經理相關經驗,曾在百度、美團、阿里等 ...
2025-05-07相信很多做數據分析的小伙伴,都接到過一些高階的數據分析需求,實現的過程需要用到一些數據獲取,數據清洗轉換,建模方法等,這 ...
2025-05-06以下的文章內容來源于劉靜老師的專欄,如果您想閱讀專欄《10大業務分析模型突破業務瓶頸》,點擊下方鏈接 https://edu.cda.cn/g ...
2025-04-30CDA持證人簡介: 邱立峰 CDA 數據分析師二級持證人,數字化轉型專家,數據治理專家,高級數據分析師,擁有豐富的行業經驗。 ...
2025-04-29CDA持證人簡介: 程靖 CDA會員大咖,暢銷書《小白學產品》作者,13年頂級互聯網公司產品經理相關經驗,曾在百度,美團,阿里等 ...
2025-04-28CDA持證人簡介: 居瑜 ,CDA一級持證人國企財務經理,13年財務管理運營經驗,在數據分析就業和實踐經驗方面有著豐富的積累和經 ...
2025-04-27數據分析在當今信息時代發揮著重要作用。單因素方差分析(One-Way ANOVA)是一種關鍵的統計方法,用于比較三個或更多獨立樣本組 ...
2025-04-25CDA持證人簡介: 居瑜 ,CDA一級持證人國企財務經理,13年財務管理運營經驗,在數據分析就業和實踐經驗方面有著豐富的積累和經 ...
2025-04-25