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=TRUE
的x
缺失值,即更新不會創建缺失值。newname = cumtdc(y,x, init) 與 tdc 類似,不同之處在於每個受試者的事件計數隨著時間的推移而累積。變量
x
必須是數字。newname = event(y,x) 標記時間 y 處的事件。在通常情況下,
x
丟失,新的 0/1 變量將類似於生存時間的 0/1 狀態變量。newname = cumevent(y,x) 累積事件。
該函數向輸出數據集添加三個新變量: tstart
、 tstop
和 id
。 options
參數可用於更改這些名稱。如果在第一次調用中,id
參數是一個簡單名稱,則該變量名稱將用作 idname
選項的默認值。如果 data1
包含 tstart
變量,則該變量將用作創建的時間間隔的起點,否則每個 id 的初始間隔默認從 0 開始。如果死亡時間 <= 0,這將導致無效間隔和後續錯誤。
na.rm
選項影響時間相關協變量的創建。是否應該忽略 data2
中缺少變量值的數據行,還是應該生成值為 NA 的觀察值?默認值 TRUE 會導致最後一個非缺失值被結轉。 delay
選項會導致時間相關協變量的新值延遲,請參閱插圖中的示例。
值
具有兩個額外屬性 tm.retain
和 tcount
的 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 和時間點相同的添加次數。發生這種情況時,tdc
和 event
運算符將使用數據中的最終值(最後一次編輯獲勝),但忽略缺失,而 cumtdc
和 cumevent
運算符將值相加。
這些額外的屬性是短暫的,如果數據幀被修改,這些屬性將被丟棄。這是故意的,因為如果例如選擇了一個子集,它們將變得無效。
例子
# 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
也可以看看
相關用法
- R tobin 托賓的托比特數據
- R tcut 人年計算因子
- R transplant 肝移植等候名單
- R hoel 小鼠癌症數據
- R survcondense 縮短 (time1, time2) 生存數據集
- R myeloid 急性粒細胞白血病
- R pseudo 生存的偽值。
- R levels.Surv 返回多狀態 Surv 對象的狀態
- R rats Mantel 等人的大鼠治療數據
- R diabetic 糖尿病視網膜病變
- R pbc 梅奧診所原發性膽汁性膽管炎數據
- R plot.survfit survfit 對象的繪圖方法
- R kidney 腎導管數據
- R stanford2 更多斯坦福心髒移植數據
- R print.aareg 打印 aareg 對象
- R pyears 人年
- R residuals.survreg 計算“survreg”對象的殘差
- R cgd0 慢性肉芽腫病數據
- R mgus2 單克隆丙種球蛋白病數據
- R model.frame.coxph coxph 對象的 Model.frame 方法
- R brier 計算 Cox 模型的 Brier 分數
- R nsk 以結高度為基礎的自然樣條。
- R survSplit 在指定時間分割生存數據集
- R mgus 單克隆丙種球蛋白病數據
- R summary.pyears pyears 對象的匯總函數
注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Time based merge for survival data。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。