久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

TCGA數(shù)據(jù)庫構(gòu)建生存預(yù)測模型之lasso回歸

 生物_醫(yī)藥_科研 2020-04-24

昨天我的COX分析運(yùn)行了接近20個小時后,,出了結(jié)果,,AUC可以達(dá)到0.79,,比一開始有提高,但是還不夠好,。

盡管我還看到一大票0.6的也在發(fā)文章,。

比cox分析更快,更好的是用lasso回歸來做,。

我們先來看看以前的文章是怎么做的,,這篇文章去年發(fā)表在Oncotarget上面

第一步,介紹一下TCGA納入人群的基本信息

mark

第二步,,把患者分成training組和testing 組,,并給出基本信息

mark

第三步,把納入的標(biāo)本按照正常和癌癥進(jìn)行差異分析

mark

第四步,,差異基因進(jìn)行l(wèi)asso回歸得到幾個關(guān)鍵基因

mark

第五步,,按照構(gòu)建的模型,把患者分為高風(fēng)險組和低風(fēng)險組

mark

第六步,,使用構(gòu)建的模型,,分別在traning組和testing組,以及總組測試,,這叫做內(nèi)部驗證

mark

因為沒有認(rèn)真看,,很有可能跟給出的圖有出入反正就是那個意思 

第七步,,告訴人家,這個預(yù)測模型可以獨(dú)立于臨床相關(guān)信息,,比如淋巴結(jié),,年齡這些,這樣才有意義啊

mark

第八步,,如果有機(jī)會,,要拿點別人新的數(shù)據(jù)來測試啊,這個叫做普適性驗證,。

mark

再一次,,這里的圖只是占位置用。 到了這里,,基本上一篇文章就結(jié)束了,,當(dāng)然如果條件允許,可以把這幾個分子的表達(dá)在自己的標(biāo)本里面跑一跑 如果再往下走,,還有: 

第九步,,關(guān)鍵基因的下游研究。

這些基因能預(yù)測生死,,應(yīng)該有厲害的功能才對啊,,這里請參考這個帖子

課題設(shè)計:收不完的病人查不完的房,臨床醫(yī)生如何快速地設(shè)計一個靠譜的課題,?


其中l(wèi)asso回歸這一步,,基本上網(wǎng)上也沒有什么教程,,我也測試了一下,我自己的數(shù)據(jù),最終發(fā)現(xiàn)他找出20個基因的模型,,預(yù)測的AUC是0.788,,跟我cox出來的差不多,, 但是我的模型只要5個啊,,所以,各有利弊,。 

1.極速入門

我不能公開我的數(shù)據(jù),,所以就用公共數(shù)據(jù)記錄一下: 首先我們安裝R包, 加載R包

  1. install.packages('glmnet')

  2. library(glmnet)

加載測試數(shù)據(jù),,環(huán)境變量中出現(xiàn),,x和y,他們都是矩陣

  1. data(CoxExample)

下面就開始了

  1. fit = glmnet(x, y, family = 'cox')

  2. plot(fit)

這么一搞,,圖就出來了

mark

再搞一搞

  1. cvfit = cv.glmnet(x, y, family = 'cox')

  2. plot(cvfit)

另外一張圖就出來了

mark

圖中有兩根線,,第一根線比較重要,后面的分析暗自用了第一根線的意義

下面這是第三個操作,就是找出來,,哪幾個基因被選中了

  1. coef.min = coef(cvfit, s = 'lambda.min')

這邊就是把這幾個數(shù)據(jù)調(diào)取出來,,包括名稱,,位置,系數(shù)

  1. active.min = which(coef.min != 0)

  2. index.min = coef.min[active.min]

  3. index.min

  4. coef.min

照著運(yùn)行不會出錯的話,,會看到很多數(shù)字 我們看看哪些金榜題名

  1. > row.names(coef.min)[active.min]

  2.  [1'V1' 'V2' 'V3' 'V4' 'V5' 'V6' 'V7' 'V8' 'V9' 'V10' 'V13' 'V17' 'V21' 'V22' 'V25' 'V27' 'V30'

因為是測試數(shù)據(jù),,顯示的是V1,V1,,實際上如果是真實數(shù)據(jù),,顯示的是基因名稱 基本上模型就做好了,然后用predict就可以算出風(fēng)險值,,往下做就全部出來了,。


2.練手材料

下面的數(shù)據(jù)用來練手,需要注意的點是兩個,, 

第一,,x,y最終都是矩陣,其中包含time和status的y,,我用survival包的Surv功能讓他們合在一起 

第二,,測試數(shù)據(jù)的'VignetteExample.rdata'需要以這個字樣檢索,自行下載,,放在同一個工作目錄才能使用

  1. library('glmnet')

  2. library('survival')

  3. load('VignetteExample.rdata')

  4. x <- patient.data$x

  5. y <- data.matrix(Surv(patient.data$time,patient.data$status))

  6. cv.fit <- cv.glmnet(x, y, family='cox', maxit = 1000)

  7. plot(cv.fit)

  8. fit <- glmnet(x, y, family = 'cox', maxit = 1000)

  9. plot(fit)

  10. Coefficients <- coef(fit, s = cv.fit$lambda.min)

  11. Active.Index <- which(Coefficients != 0)

  12. Active.Coefficients <- Coefficients[Active.Index]

  13. Active.Index

  14. Active.Coefficients

  15. row.names(Coefficients)[Active.Index]


3.并行化處理

上面有一步是寫的maxit=1000,,默認(rèn)是10萬,運(yùn)行起來相當(dāng)緩慢,,這時候可以用并行運(yùn)算,, 這個包支持的比較好,這樣做:

  1. require(doMC)

  2. registerDoMC(cores=4)

  3. system.time(cv.glmnet(x,y,family = 'cox'))

  4. system.time(cv.glmnet(x,y,family = 'cox',parallel=TRUE))

其中cores=4 表示的是用4個核來算,,我測試了一下,,發(fā)現(xiàn)低次數(shù)比如1000次的時候,,并行還要慢一點,,沒有測試100000次的,應(yīng)該會快很多,。

因為每次我都感覺到帖子很值錢,,所以我關(guān)閉了贊賞,努力跟自己的氣息對應(yīng)起來,。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點,。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點擊一鍵舉報,。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多