2013-02-03 20 views
1

我對有兩個亞組的人羣使用生存包。我需要每組5年的KM存活率。我得到這個值:5年生存率卡方檢驗

summary(survfit(Surv(survtime, vital)~subgroup)), time = 60) #in months 

但是,我也想對兩個五年的生存率進行chisq測試。有沒有簡單的方法來運行這個測試使用生存包?

感謝您的任何建議和幫助!

回答

2

不確定這是否是正確的方式(買方要小心),但這裏是一個使用survival包使用aml數據集作爲示例數據的示例。

library(survival) 
amlsurv <- with(aml,survfit(Surv(time,status) ~ x)) 
summary(amlsurv ,time=20) 

導致,爲time=20

Call: survfit(formula = Surv(time, status) ~ x) 

       x=Maintained 
     time  n.risk  n.event 
     20.000  7.000  3.000 ... 

       x=Nonmaintained 
     time  n.risk  n.event 
     20.000  6.000  5.000 ... 

這兩個選項使用survdiff功能失效:

survdiff(summary(aml,time=20)) 
survdiff(aml,time=20) 

現在嘗試限制手動20天:

aml$status.20 <- aml$status 
# set 'deaths' with a time greater than 20 to be 'survivors' 
aml$status.20[aml$status == 1 & aml$time > 20] <- 0 
amlsurv <- (Surv(aml$time,aml$status.20) ~ aml$x) 
summary(survfit(amlsurv)) 
# results are the same as above, Maintained=3 events,Nonmaintained=5 events 

現在你可以讓你的結果20天的限制比較兩組:

survdiff(amlsurv) 
Call: 
survdiff(formula = amlsurv) 

        N Observed Expected (O-E)^2/E (O-E)^2/V 
aml$x=Maintained 11  3  4.3  0.392  0.874 
aml$x=Nonmaintained 12  5  3.7  0.455  0.874 

Chisq= 0.9 on 1 degrees of freedom, p= 0.35 
+0

謝謝!我繼續前進,試圖編寫一個自定義函數來解決它。但我也很警惕,我犯了一個錯誤。一旦我下班,我會檢查這個方法,看看它是否與我得到的一致。 – user1760436

0

您可以輕鬆地使用survdiff()

s.fit <- survfit(Surv(survtime, vital)~subgroup) 
survdiff(s.fit)