99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁精彩閱讀如何在R語言中使用Logistic回歸模型
如何在R語言中使用Logistic回歸模型
2017-05-07
收藏

如何在R語言中使用Logistic回歸模型

在實際應用中,Logistic模型主要有三大用途:

1)尋找危險因素,找到某些影響因變量的"壞因素",一般可以通過優(yōu)勢比發(fā)現危險因素;

2)用于預測,可以預測某種情況發(fā)生的概率或可能性大??;

3)用于判別,判斷某個新樣本所屬的類別。

Logistic模型實際上是一種回歸模型,但這種模型又與普通的線性回歸模型又有一定的區(qū)別:

1)Logistic回歸模型的因變量為二分類變量;

2)該模型的因變量和自變量之間不存在線性關系;

3)一般線性回歸模型中需要假設獨立同分布、方差齊性等,而Logistic回歸模型不需要;

4)Logistic回歸沒有關于自變量分布的假設條件,可以是連續(xù)變量、離散變量和虛擬變量;

5)由于因變量和自變量之間不存在線性關系,所以參數(偏回歸系數)使用最大似然估計法計算。

下面簡單介紹該模型的理論知識,主要參考《統(tǒng)計建模與R軟件》:

應用:

接下來使用R語言實現Logistic模型的應用,仍然使用《Logistic回歸模型——方法與應用》書中的案例數據。該數據的應變量表示高中生是否進入大學,自變量包含性別(GENDER)、高中類型(KEYSCH,是否為重點中學)和高中平均成績(MEANGR)。

接下來列出文中所需R語言包:

foreign包用于導入SPSS數據集;

sjmisc包用于實現Logistic模型的擬合優(yōu)度檢驗

pROC包用于繪制模型的ROC曲線

#讀取數據


發(fā)現原本為離散的變量COLLEGE、KEYSCH和GENDER成了數值變量,需要重新將這些變量設置為因子變量。

#數據初探:

#將數據拆分為訓練數據集和測試數據集

本文對Logistic模型的應用使用stats包中自帶的glm()函數,下面看看

glm()函數的使用方法:

glm(formula, family = gaussian, data, weights, subset,

na.action, start = NULL, etastart, mustart, offset,

control = list(...), model = TRUE, method = "glm.fit",

x = FALSE, y = TRUE, contrasts = NULL, ...)

formula指定模型的因變量和自變量,類似于y~x1+x2+x3的形式;

family指定模型的連接函數和誤差函數;

data指定要分析的數據框;

weights模型擬合中指定先驗權重;

subset指定數據子集用于模型擬合;

na.action指定缺失值的處理辦法,默認跳過缺失值;

start用于指定參數估計的初始值;

control為一個列表,指定廣義線性模型的收斂度,最大迭代次數等;

#建模


由參數估計的結果可知,截距項和三個自變量是非常顯著的。

從而模型可以寫成如下形式:

由summary()結果的最下方Residual deviance實際上就是-2Log L(-2倍的似然對數)對應模型的顯著性檢驗。也可以查看更詳細的Residual deviance過程:


很明顯,模型卡方統(tǒng)計量通過顯著性檢驗(P值遠遠小于0.05)。

模型的擬合優(yōu)度檢驗:

通過比較模型的預測值與實際值之間的差異情況來進行檢驗,如果預測值域實際值越接近,則說明模型的擬合優(yōu)度越佳。

主要的擬合優(yōu)度評價指標有偏差卡方檢驗、皮爾遜卡方檢驗和HL統(tǒng)計量檢驗。其中前兩種檢驗適合模型中只有離散的自變量,而后一種適合模型中包含連續(xù)的自變量。擬合優(yōu)度檢驗的原假設為“模型的預測值與實際值不存在差異”。

下面使用sjmisc包中的hoslem_gof函數實現以上模型的H-L統(tǒng)計量檢驗:


很明顯,p>0.05,說明H-L檢驗不顯著,接受擬合優(yōu)度的原假設:模型的預測值與實際值不存在差異。

在實際應用中,最理想的情況是希望模型卡方統(tǒng)計量顯著(Residual deviance顯著),而模型擬合優(yōu)度不顯著(HL統(tǒng)計量不顯著)。如果Residual deviance不顯著(自變量對應變量沒有很好的解釋)或HL統(tǒng)計量顯著(模型不能很好的擬合數據),則說明模型可能存在某些問題,需要重新設定模型。

從上面的HL檢驗和模型卡方統(tǒng)計量結果可知,該模型是比較理想的。

#我們一般不會直接對模型的偏回歸系數作解釋,而是使用優(yōu)勢比解釋各個自變量。下面看一下各回歸系數的置信區(qū)間和優(yōu)勢比的置信區(qū)間。

#模型預測


由于Logistic回歸模型無法直接預測新樣本屬于哪個類別,這里使用主觀概念,如果預測概率值小于等于0.5,則預判COLLEGE為0(未考取大學)。經計算模型的預測準確率為80%。

還有一種可視化的方法衡量模型的優(yōu)劣,即ROC曲線,該曲線的橫坐標和縱坐標各表示1-反例的覆蓋率和正例的覆蓋率。


這里的AUC為ROC曲線下方的面積。一般AUC大于0.75就能夠說明模型是比較合理的了。

總結:文中所用到的包和函數

foreign包

read.spss()

stats包

glm()

summary()

confint()

predict()

transform()

cbind()

table()

sjmisc包

hoslem()

pROC包

roc()


數據分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數據分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機數防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調用 initGeetest 進行初始化 // 參數1:配置參數 // 參數2:回調,回調的第一個參數驗證碼對象,之后可以使用它調用相應的接口 initGeetest({ // 以下 4 個配置參數為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺檢測極驗服務器是否宕機 new_captcha: data.new_captcha, // 用于宕機時表示是新驗證碼的宕機 product: "float", // 產品形式,包括:float,popup width: "280px", https: true // 更多配置參數說明請參見:http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計時完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }