當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


R tmerge 基於時間的生存數據合並


R語言 tmerge 位於 survival 包(package)。

說明

生存分析中的一項常見任務是創建開始、停止數據集,每個受試者具有多個間隔,以及適用於該間隔的協變量值。此函數有助於創建此類數據集。

用法

tmerge(data1, data2,  id,..., tstart, tstop, options)

參數

data1

主要數據集,將添加新變量和/或觀察

data2

將在其中找到所有其他參數的第二個數據集

id

主題標識符

...

添加新變量或間隔的操作,請參見下文

tstart

可選變量,用於定義每個主題的有效時間範圍,僅在初始調用時使用

tstop

可選變量,用於定義每個主題的有效時間範圍,僅在初始調用時使用

options

選項列表。有效的有 idname、tstartname、tstopname、delay、na.rm 和 tdcstart。請參閱下麵的解釋。

細節

該程序通常分多遍運行,第一遍定義基本結構,隨後的遍定義向該結構添加新變量。有關此例程如何工作的更完整說明,請參閱與時間相關的變量的小插圖。

有 4 種類型的操作參數:時間相關協變量 (tdc)、累積計數 (cumtdc)、事件 (event) 或累積事件 (cumevent)。時間相關協變量在事件發生之前改變其值,事件是結果。

  • newname = tdc(y, x, init) 將創建一個新的時間相關協變量。假設參數 y 處於開始和結束時間的範圍內,每個實例都說明了當時 "condition" 的出現。第二個參數x 是可選的。如果 x 缺失,則每個受試者的計數變量從 0 開始,並在事件發生時變為 1。如果 x 存在,則時間相關協變量的值將初始化為 init 的值(如果存在),否則初始化為 tdcstart 選項的值,並在每次觀察時更新為 x 的值。如果首先刪除選項 na.rm=TRUEx 缺失值,即更新不會創建缺失值。

    newname = cumtdc(y,x, init) 與 tdc 類似,不同之處在於每個受試者的事件計數隨著時間的推移而累積。變量x 必須是數字。

    newname = event(y,x) 標記時間 y 處的事件。在通常情況下,x 丟失,新的 0/1 變量將類似於生存時間的 0/1 狀態變量。

    newname = cumevent(y,x) 累積事件。

該函數向輸出數據集添加三個新變量: tstarttstopidoptions 參數可用於更改這些名稱。如果在第一次調用中,id 參數是一個簡單名稱,則該變量名稱將用作 idname 選項的默認值。如果 data1 包含 tstart 變量,則該變量將用作創建的時間間隔的起點,否則每個 id 的初始間隔默認從 0 開始。如果死亡時間 <= 0,這將導致無效間隔和後續錯誤。

na.rm 選項影響時間相關協變量的創建。是否應該忽略 data2 中缺少變量值的數據行,還是應該生成值為 NA 的觀察值?默認值 TRUE 會導致最後一個非缺失值被結轉。 delay 選項會導致時間相關協變量的新值延遲,請參閱插圖中的示例。

具有兩個額外屬性 tm.retaintcount 的 DataFrame 。第一個包含關鍵變量的名稱,以及哪些名稱對應於 tdc 或事件變量。 tcount 變量包含匹配類型的計數。在主題的第一個間隔之前出現的新時間值是"early",在主題的最後一個間隔之後出現的新時間值是"late",而落入間隙的時間值的類型是"gap"。所有這些都被認為超出了給定主題的指定時間範圍。此類事件將被丟棄。 data2 中的觀察值,其標識符與 data1 中的行不匹配,其類型為 "missid",也會被丟棄。與時間相關的協變量值將應用於稍後的間隔,但不會在輸出中生成新的時間點。

最常見的類型通常是"within",對應於那些落在現有間隔內並導致其被分成兩部分的新時間。恰好落在間隔邊但在對象的(分鍾,最大)時間內的觀察被計為位於 "leading" 邊、"trailing" 邊或 "boundary" 上。例如,第一個對應於事件對於間隔為 (0,15] 和 (17, 35] 的人來說,在 17 處。在時間 17 處出現 tdc 將影響此間隔,但在 17 處出現 event 將被忽略。在 15 處出現 event 將影響該間隔。在 (0,15] 間隔內計數。最後一種情況是主數據集對某個主題具有接觸間隔,例如 (17, 28] 和 (28,35],並且新的事件出現在連接處。事件將繼續到較早的間隔並計數到後一個。最後一列顯示 id 和時間點相同的添加次數。發生這種情況時,tdcevent 運算符將使用數據中的最終值(最後一次編輯獲勝),但忽略缺失,而 cumtdccumevent 運算符將值相加。

這些額外的屬性是短暫的,如果數據幀被修改,這些屬性將被丟棄。這是故意的,因為如果例如選擇了一個子集,它們將變得無效。

例子

# The pbc data set contains baseline data and follow-up status
# for a set of subjects with primary biliary cirrhosis, while the
# pbcseq data set contains repeated laboratory values for those
# subjects.  
# The first data set contains data on 312 subjects in a clinical trial plus
# 106 that agreed to be followed off protocol, the second data set has data
# only on the trial subjects.
temp <- subset(pbc, id <= 312, select=c(id:sex, stage)) # baseline data
pbc2 <- tmerge(temp, temp, id=id, endpt = event(time, status))
pbc2 <- tmerge(pbc2, pbcseq, id=id, ascites = tdc(day, ascites),
               bili = tdc(day, bili), albumin = tdc(day, albumin),
               protime = tdc(day, protime), alk.phos = tdc(day, alk.phos))

fit <- coxph(Surv(tstart, tstop, endpt==2) ~ protime + log(bili), data=pbc2)

作者

Terry Therneau

也可以看看

neardate

相關用法


注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Time based merge for survival data。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。