r 保留之前曲線 生存曲線居然能夠批量繪製了

2021-10-14 11:47:47 字數 3676 閱讀 4809

寫在前面

相信很多小夥伴在看文獻的時候總是能夠看到作者拿一張figure放置多個生存曲線圖,不知道大家想過沒有,如果作者一張小圖一張小圖的畫,那可能圖還沒有畫完就直接開始拍桌子了。肯定為了提公升科研的效率,我們還是希望把這些重複的工作都交給計算機不厭其煩地去做,然後留更多的時間給我們自己享受生活。好啦,言歸正傳,我們開始今天批量生存曲線繪製的講解。

**演示

經過前面兩期專欄的處理(沒有跟上的同學趕快去前兩期專欄看看,打牢基礎才能走得更遠),我們現在已經得到了單因素cox回歸的結果。

接下來我們篩選p值小於0.05的基因進行保留,這裡我們使用dplyr包中的filter函式進行過濾:

接著我們把單因素cox回歸有意義的基因再提取出來,因為剛剛得到的是資料庫,我們把第一列取出來即可:

得到了單因素cox回歸有顯著統計學意義的基因之後,我們就要開始進行生存曲線繪製即k-m分析,關於k-m分析和cox回歸到底有啥區別,大家可以參考風師兄在生信下篇段位3有詳細的講解。如果用我自己的實用的理解那就是,cox分析篩選變數太多的話我們就再加上k-m分析再篩選一次,相當於雙重過濾標準;但是如果你cox回歸篩選之後就只有幾個基因了,那就沒有必要再用k-m分析去篩選了,因為篩選了完了你可能就沒有基因了。

接下來我們從單因素cox回歸的資料框中把pvalue小於0.05的基因提取出來,這裡我們使用dplyr包中的select函式,注意這裡要記得使用all_off函式把向量放在函式裡面,這樣才能提取對應的列:

接下來我們進行生存曲線的繪製,首先繪製生存曲線,我們首先需要解壓兩個強大的包,survival包和survminer包。

library(survival)library(survminer)
首先為了降低難度,我們先來進行一條生存生存曲線的繪製,我們先提取乙個基因的表達量:

然後我們構建乙個分組檔案,根據基因表達量的中位值進行高低兩組的劃分:

group  median(single_gene[[4]]),               "high", "low")
然後我們計算高低表達兩組之間的生存的p值大小:

diff=survdiff(surv(futime, fustat) ~ group2, data = gene_surv)pvalue=1-pchisq(diff$chisq,df=1)if(pvalue<0.001)else
接下來擬合乙個生存函式,這裡我們使用survfit函式進行擬合:

雖然一張繪製好了,但是我們本期的問題還沒有解決,我們不僅要一張,我們要很多張。套用一句經典的話就是,只要小孩子才做選擇,成年人是全部都要,而且越多越好,圖多了我們才有選擇的餘地。

接下來我們進行批量繪製,批量繪製的原理無非就是迴圈,而迴圈就是一列一列迴圈,然後每一列繪製乙個生存曲線。

寫在最後往期傳送門:

讓生信工作者失業的神器——drbioright,真捨不得告訴你!

高效資料清洗!這個r包太強大了!你一定要試試!(文末附贈小彩蛋)

一站式分析r包來了,承包了生信各種分析!太全能了!

別走,baby,cox森林需要你

撰文丨先鋒宇

排版丨四金兄

值班 | 弘  毅

主編丨小雪球

生存函式和生存曲線怎樣看?

前文我們詳解過線性回歸,也初步介紹了生存分析所涉及的生存資料,明白了 做生存分析最特殊的一點是分析時要納入研究物件的 生存時間 更一般的是指 出現某種特定結局的時間。今天的文章,我們更進一步地來學習如何看懂生存函式和生存曲線。生存概率和死亡概率 在進入正題之前,我們需要首先明確兩個概念 生存概率與死...

R語言 ROC曲線

setwd e rwork library rocr data rocr.pred rocr.predictions為 標籤,rocr.labels為真實標籤 做乙個logistic回歸,生成概率 值 pre 將 概率prob和實際結果y放在乙個資料框中 data 按 概率從低到高排序 0.9 1....

ks 曲線 R語言實現KS曲線

將 封裝在函式plotks n裡,pred var是 結果,可以是評分或概率形式 labels var是好壞標籤,取值為1或0,1代表壞客戶,0代表好客戶 descending用於控制資料按違約概率降序排列,如果pred var是評分,則descending 0,如果pred var是概率形式,則d...