您好,登錄后才能下訂單哦!
如何進行大數據中R語言的生存分析,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
一、基本概念
生存分析:研究各個因素與生存時間有無關系以及關聯程度大小。可拓展到疾病復發時間,機器的故障時間等。
起始事件:反應研究對象開始生存過程的起始特征事件。
終點事件(死亡事件):出現研究者所關心的特定結局。如“病人因該疾病死亡”。
觀察時間:從研究開始觀察到研究觀察結束的時間。
生存時間:觀察到的存活時間,用符號t表示。
完全數據:從觀察起點到死亡事件所經歷的時間,生存時間是完整的。
截尾數據(刪失值):觀察時間不是由于終點事件而結束的,而是由于(1)失訪(2)死于非研究因素(3)觀察結束而對象仍存活以上三種原因結束的。常在截尾數據的右上角放一個“+”表示其實該對象可能活的更久。
變量:生存分析的變量有兩個:生存時間t和結局變量(0-1)。其中結局變量1表示死亡事件,0表示截尾。
生存曲線:以生存時間為橫軸、生存率為縱軸繪制一條生存曲線。
中位生存時間:又稱為生存時間的中位數,表示剛好有50%的個體其存活期大于該時間。
二、生存分析研究的部分內容
1、描述生存過程
研究生存時間的分布特點,估計生存率及其標準誤、繪制生存曲線。常用方法有乘積極限法(K-M法)和壽命表法,此處簡單介紹乘積極限法(K-M法)。
http://www.360doc.com/content/17/0626/11/6175644_666623573.shtml此處形象的說明了KM曲線能告訴我們什么,以及乘積極限法的基本原理。
注:生存曲線為單因素分析(兩個或者多個水平),用中位生存時間表示生存時間的平均水平;
2、比較生存過程
獲得生存率及其標準誤的估計值后,可以進行兩組或多組生存曲線的比較,常用方法有對數秩檢驗(log-rank檢驗)。如曲線交叉,可能存在混雜因素。
注:兩個或者多個生存曲線的比較(單因素兩個或者多個水平)
3、影響生存時間的因素分析
常用的多因素生存分析方法:Cox比例風險回歸模型。可能后面會啰嗦。
三、R包進行生存分析
1、R-survival包進行生存分析,并繪制KM曲線圖:
Surv:用于創建生存數據對象
survfit:創建KM生存曲線或是Cox調整生存曲線
survdiff:用于不同組的統計檢驗
coxph:構建COX回歸模型 (待)
cox.zph:檢驗PH假設是否成立 (待)
#載入包,讀取數據
library(survival)
dat <- read.table('Test.txt',header=TRUE)
1) 估計生存函數,觀察不同組間的區別
# 估計KM生存曲線
# OS_time:跟蹤到的存活時間
# OS_Status: 跟蹤到的存活狀態
# COV1:表示按照COV1進行分組
fit <- survfit(Surv(dat$OS_time,as.numeric(dat$OS_Status))~dat$COV1,data=dat)
# 獲得的survial列就是生存率
summary(fit)
2) 比較不同因子分組的生存效果,檢驗顯著性
survdiff(Surv(dat$OS_time,as.numeric(dat$OS_Status))~dat$COV1,data=dat)
3) 繪制KM曲線圖
#橫軸表示生存時間,縱軸表示生存概率,為一條梯形下降的曲線。下降幅度越大,表示生存率越低或生存時間越短。
plot(fit,xlab="Time(Days)",ylab="Survival",main="",col=c("blue","red"),lty=2,lwd=2)
legend("topright",c("A","B"),col=c("blue","red"),lty=2,lwd=2,cex=0.7)
2、R-survminer包繪制KM曲線圖:圖形更精美,展示效果更好。
library("survminer") #載入R包
fit<- survfit(Surv(time, status) ~ sex, data = lung) #讀取數據
#繪制KM圖
ggsurvplot(fit, data = lung,
surv.median.line = "hv", # Add medians survival
# Change legends: title & labels
legend.title = "Sex",legend.labs = c("Male", "Female"),
# Add p-value and tervals
pval = TRUE,pval.size = 3,
# Change censor
censor.shape = 124,censor.size = 2,
conf.int = FALSE,# 有無置信區間
break.x.by = 100, #橫軸坐便
# Add risk table
risk.table = TRUE,tables.height = 0.2,tables.theme = theme_cleantable(),
#palette = c("#E7B800", "#2E9FDF"),
palette = c("blue", "purple"),
ggtheme = theme_bw(), # Change ggplot2 theme
# Change font size, style and color
main = "Survival curve",
font.main = c(16, "bold", "darkblue"),
font.x = c(14, "bold.italic", "red"),
font.y = c(14, "bold.italic", "darkred"),
font.tickslab = c(12, "plain", "darkgreen")
)
關于如何進行大數據中R語言的生存分析問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。