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

熱線電話:13121318867

登錄
首頁大數(shù)據(jù)時代基于R語言實(shí)現(xiàn)COX模型診斷
基于R語言實(shí)現(xiàn)COX模型診斷
2017-05-11
收藏

基于R語言實(shí)現(xiàn)COX模型診斷

一般在建立好Cox模型之后,需要對模型進(jìn)行診斷。診斷內(nèi)容包括模型的前提條件,諸如Cox模型的PH假定(比例風(fēng)險假定),共線性假定等。本篇我們通過合實(shí)際例子講解Cox模型診斷過程,實(shí)現(xiàn)軟件R語言。

1.1 COX模型的診斷內(nèi)容

Cox模型的診斷一般包括三方面的內(nèi)容:

比例風(fēng)險假定;

模型影響點(diǎn)(異常值)識別;

比例風(fēng)險的對數(shù)值與協(xié)變量之間的非線性關(guān)系識別;

對上述三方面的診斷,常見的方法為殘差法。

Schoenfeld殘差用于檢驗(yàn)比例風(fēng)險假定;

Deviance殘差用于影響點(diǎn)(異常值)識別;

Martingale殘差用于非線性檢驗(yàn);

1.2 R中用于評估Cox模型的包

我們將會用到以下兩個包:

survival #用于cox模型建立

survminer #用于cox模型診斷結(jié)果的可視化

安裝包

install.packages(c("survival","survminer"))

加載包

library("survival")

library("survminer")

1.3 建立Cox模型

我們利用survial包中自帶的肺癌數(shù)據(jù)“data(lung)”建立cox模型。

library("survival")

res.cox <- coxph(Surv(time, status) ~ age + sex +wt.loss, data =lung)#模型中有三個變量;

res.cox#顯示模型結(jié)果

Call:

coxph(formula = Surv(time, status) ~ age + sex + wt.loss,data = lung)


            coefexp(coef) se(coef)     z      p

age      0.02009   1.02029 0.00966  2.08 0.0377

sex     -0.52103   0.59391 0.17435 -2.99 0.0028

wt.loss  0.00076   1.00076 0.00619  0.12 0.9024


Likelihood ratio test=14.7 on 3 df, p=0.00212

n= 214, number of events= 152

   (14 observationsdeleted due to missingness)

1.4 模型診斷——PH假定

PH假定可通過假設(shè)檢驗(yàn)和殘差圖檢驗(yàn)。正常情況下,Schoenfeld殘差應(yīng)該與時間無關(guān),如果殘差與時間有相關(guān)趨勢,則違反PH假設(shè)的證據(jù)。殘差圖上,橫軸代表時間,如果殘差均勻的分布則,表示殘差與時間相互獨(dú)立。

R語言survival包中的函數(shù)cox.zph()可以實(shí)現(xiàn)這一個檢驗(yàn)過程。

test.ph <- cox.zph(res.cox)

test.ph

            rhochisq     p

age     -0.0483 0.3780.538

sex      0.1265 2.3490.125

wt.loss  0.0126 0.0240.877

GLOBAL       NA 2.8460.416

從上面的結(jié)果可以看出,三個變量的P值都大于0.05,說明每個變量均滿足PH檢驗(yàn),而模型的整體檢驗(yàn)P值0.416,模型整體滿足PH檢驗(yàn)。

R語言 survminer中g(shù)gcoxzph( )函數(shù)可以畫出Schoenfeld殘差圖。

ggcoxzph(test.ph)

上圖中實(shí)線是擬合的樣條平滑曲線,虛線表示擬合曲線上下2個單位的標(biāo)準(zhǔn)差。如果曲線偏離2個單位的標(biāo)準(zhǔn)差則表示不滿足比例風(fēng)險假定。從上圖中可見,各協(xié)變量滿足PH風(fēng)險假設(shè)。

另一種檢查比例風(fēng)險假定的圖形方法是繪制log(-log(S(t)))與t或log(t)是非平行,這個方法只能用于協(xié)變量是分類變量的情形。

如果違反比例風(fēng)險假設(shè)可以通過以下方式解決:

模型中添加協(xié)變量與時間的交互相應(yīng);

分層分析;

至于如何實(shí)現(xiàn),我們后期再做介紹。

1.5 模型診斷——模型影響點(diǎn)(異常值)識別

我們可以通過繪制Deviance殘差圖或者dfbeta值實(shí)現(xiàn)上述診斷。在R語言survminer中g(shù)gcoxdiagnostics()函數(shù)可以畫出Deviance殘差圖。

ggcoxdiagnostics(res.cox,type = "deviance",

                 linear.predictions = FALSE,ggtheme = theme_bw())

殘差值均勻的分布在0上下,表明滿足上述假定。

ggcoxdiagnostics(res.cox,type = "dfbeta",

                 linear.predictions = FALSE,ggtheme = theme_bw())

影響點(diǎn)的可能來源于數(shù)據(jù)錄入錯誤,樣本中的極值點(diǎn)、協(xié)變量不均衡,數(shù)據(jù)不足等。對本例,上圖顯示,將dfbeta值大小與回歸系數(shù)比較表明,即使某些dfbeta值非常大,但它們不足以對模型系數(shù)的估計(jì)值產(chǎn)生影響。

1.6 模型診斷——非線性診斷

一般情況下,我們假設(shè)協(xié)變量與-log(s(t))之間是線性關(guān)系。通過繪制Martingale殘差圖可以實(shí)現(xiàn)模型協(xié)變量的非線性診斷。非線性診斷一般是針對模型中的連續(xù)型變量。

R語言survminer中g(shù)gcoxfunctional()函數(shù)可以畫出Martingale殘差圖。

ggcoxfunctional(Surv(time, status) ~ age + log(age) + sqrt(age),data = lung)

圖中顯示年齡局部有非線性趨勢,但整體表現(xiàn)出線性趨勢。

推薦學(xué)習(xí)書籍
《CDA一級教材》適合CDA一級考生備考,也適合業(yè)務(wù)及數(shù)據(jù)分析崗位的從業(yè)者提升自我。完整電子版已上線CDA網(wǎng)校,累計(jì)已有10萬+在讀~

免費(fèi)加入閱讀:https://edu.cda.cn/goods/show/3151?targetId=5147&preview=0

數(shù)據(jù)分析咨詢請掃描二維碼

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

數(shù)據(jù)分析師資訊
更多

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(), // 加隨機(jī)數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進(jìn)行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個參數(shù)驗(yàn)證碼對象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺檢測極驗(yàn)服務(wù)器是否宕機(jī) new_captcha: data.new_captcha, // 用于宕機(jī)時表示是新驗(yàn)證碼的宕機(jī) product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說明請參見:http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計(jì)時完成 $(".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); }