簡體   English   中英

使用R生存軟件包計算proc壽命測試95%CI的中位生存時間

[英]Calculate the proc lifetest 95%CI for median survival time using R survival package

我一直在嘗試使用R( survival軟件包和survifit函數)在SAS中復制proc lifetest的結果-尤其是計算中位生存時間的95%置信區間。

我知道SAS使用以下公式來計算中位數的置信區間:

*abs(g(S(t))-g(1-0.5)/g'(S(t))σ(S(t)))<=1.96*

其中g'(x)是g(x)的一階導數,而σ(S(t))是生存曲線的標准誤差,並且SAS中g的默認變換是g(x)=log(-log(x))

因此,絕對值內的公式變為:

(log(-log(S(t)))-log(-log(0.5)))*S(t)*log(S(t))/σ(S(t))

這是使用survival包中kidney數據的示例:

fit1 = survfit(Surv(kidney$time,kidney$status)~kidney$sex, data=kidney)
print(fit1)
BCinds<-abs((log(-log(fit1$surv))-log(-log(0.5)))*fit1$surv*log(fit1$surv)/fit1$std.err)<=1.96

當我運行從print(fit1)獲得的代碼時:

                n events median 0.95LCL 0.95UCL
kidney$sex=1 20     18     22      12      63
kidney$sex=2 56     40    130      66     190

但是,當我通過BCinds計算它時,對於性別= 1和性別= 2,我得到的差異BCinds非常不同且更寬,CI為( BCinds )。

sex=1 95%CI: (9, 154)  sex=2 95%CI: (39, 511)

SAS代碼還會為同一數據集的中位生存時間產生不同的置信區間:

    ods graphics on;
proc lifetest data=work.test
    plots=survival(nocensor cb=hw cl strata=panel);
    strata sex/group=sex;
    time time*status(0);
    run;
ods graphics off;

結果如下:

 sex=1: median=22 and 95%CI: (12, 30)
 sex=2: median=130 and 95%CI: (58,185)

關於為什么我得到如此不同結果的任何想法嗎? 還可以建議我如何使方法的最后一步自動化嗎? 目前,我以視覺方式進行操作,但是我想將其循環放置,所以我需要自動進行操作。

謝謝!

更新資料

因此,在R代碼中“隨機”鍵入參數后,我設法解決了部分問題。

因此, survfit使用上面給出的公式的對數轉換來計算中值時間置信區間,這就是為什么R和SAS的區間(默認使用對數-對數轉換)之間存在分歧的原因。

因此,通過在R代碼中添加自變量,我們可以強制R以與SAS相同的方式計算置信區間。 因此,對於我上面給出的有關kidney數據的示例,我們有:

    `survfit(Surv(kidney$time,kidney$status)~kidney$sex, conf.type="log-log"
    + )
    Call: survfit(formula = Surv(kidney$time, kidney$status) ~ kidney$sex, 
        conf.type = "log-log")

              n events median 0.95LCL 0.95UCL
kidney$sex=1 20     18     22      12      30
kidney$sex=2 56     40    130      58     185`

我們可以從survfit得到的其他置信區間類型是: “log”, “log-log”, “plain”, “none”

我仍然沒有弄清楚我用來獲得置信區間的代碼有什么問題,所以如果有人知道它有什么問題,我將不勝感激。

我想這是因為的fit1$std.err部分BCinds 在這里,你應該以適合的標准誤差S(t) -但fit1$std.err (根據的R文件survfit.object )為您提供了累積風險或-log(存活)的標准誤差。 嘗試改用summary(fit1)$std.err

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM