2017-07-18 63 views
1

我使用生存包中的生存函數,並得到我不明白的結果。我擁有簡單的數據 - 一個具有生存時間的對象,另一個具有指示變量(0 =活着,1 =死亡)。R生存函數不生成Kaplan-Meier

Survival_Time_Months[1:50] 
# [1] 165 3 119 92 88 3 25 3 56 18 100 114 17 97 141 145 103 156 37 91 101 43 41 143 108 93 136 4 116 
# [30] 85 166 0 92 26 9 8 55 136 10 99 1 20 6 95 85 79 119 109 41 23 

Vital_Status_RECODE[1:50] 
# [1] 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 
# Levels: 0 1 

然後我就可以通過survfit運行此爲:

my.surv.fit <- survfit(Surv(Survival_Time_Months,Vital_Status_RECODE) ~ 1, data=mydata) 

然後運行繪圖命令:

plot(my.surv.fit) 

我得到的東西,是的Kaplan-Meier生存曲線,但是從零開始並且向上的東西 - 它看起來像1.0-KM。 KM數據與$ pstate一致,但是我必須廣泛地提取它並生成我想要的KM圖。

爲了解決這個問題,我已經瀏覽了每個論壇關於survfit軟件包和多個教程,並且每個教程似乎都指出命令序列應該產生一個KM曲線。

+0

剛發現問題。我的指標變量已被R設置爲一個因子(R默認情況下是這樣做的)。當生存包函數看到一個因子化指示變量時,它默認爲一個多狀態模型。 當我從Vital_Status_RECODE中去除因式分解時,我得到了我期待的K-M圖。一個微妙的領域的新手錯誤。 – TPL

回答

2

狀態應該是一個數字向量,而不是一個因子。試試這個,你會看到不同之處:

time <- c(165,3,119,92,88,3,25,3,56,18,100,114,17,97,141,145,103,156,37,91,101,43,41,143,108,93,136,4,116,85,166,0,92,26,9,8,55,136,10,99,1,20,6,95,85,79,119,109,41,23) 
status <- c(0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0) 

plot(survfit(Surv(time, status)~1))