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


R Surv 創建一個生存對象


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

說明

創建一個生存對象,通常用作模型公式中的響應變量。參數匹配對於此函數來說是特殊的,請參閱下麵的詳細信息。

用法

Surv(time, time2, event,
    type=c('right', 'left', 'interval', 'counting', 'interval2', 'mstate'),
    origin=0)
is.Surv(x)

參數

time

對於右刪失數據,這是後續時間。對於間隔數據,第一個參數是間隔的開始時間。

event

狀態指示器,通常0=活著,1=死。其他選擇是TRUE /FALSE(TRUE=死亡)或1/2(2=死亡)。對於區間刪失數據,狀態指示器為 0=右刪失,1=time 處的事件,2=左刪失,3=區間刪失。對於多端點數據,事件變量將是一個因子,其第一級被視為審查。盡管不常見,但事件指示符可以省略,在這種情況下,假定所有受試者都發生了事件。

time2

僅用於間隔刪失或計數過程數據的間隔結束時間。假定間隔在左側開放,在右側封閉,(start, end] 。對於計數過程數據,event 指示在時間間隔結束時是否發生事件。

type

指定審查類型的字符串。可能的值為 "right""left""counting""interval""interval2""mstate"

origin

用於計算過程數據的危險函數原點。此選項旨在與包含時間相關層的模型結合使用,以便在受試者從一個層跨越到另一個層時正確對齊受試者,但它很少被證明有用。

x

任何 R 對象。

細節

type 參數缺失時,代碼將采用基於以下規則的類型:

  • 如果有兩個未命名參數,它們將按順序匹配 timeevent。如果存在三個未命名參數,則它們匹配 timetime2event

  • 如果事件變量是一個因子,則假定類型為mstate。否則,如果沒有 time2 參數,則鍵入 right;如果有,則鍵入 counting

因此,type 參數通常會被省略。

當生存類型為"mstate"時,狀態變量將被視為一個因子。該因子的第一級用於表示審查,其餘級表示到給定狀態的過渡。 (如果狀態變量是一個因子,則假定為mstate。)

區間刪失數據可以用兩種方式表示。第一次使用 type = "interval" 和上麵顯示的代碼。在該用法中,除非 event=3,否則 time2 參數的值將被忽略。第二種方法是將每個觀察視為一個時間間隔,其中(-無窮大,t2)表示左刪失,(t1,無窮大)表示右刪失,(t,t)表示精確,(t1,t2)表示間隔。這是用於 type = Interval2 的方法。無限值可以用實際無窮大 (Inf) 或 NA 表示。事實證明,第二種形式更有用。

目前,唯一允許區間刪失數據的方法是由 survreg 計算的參數模型和由 survfit 計算的生存曲線;對於這兩種情況,開區間和閉區間之間的區別並不重要。這種區別對於計算過程數據和 Cox 模型很重要。

該函數嘗試通過條件 if (max(status)==2) 區分對審查數據使用 0/1 和 1/2 編碼。如果使用1/2編碼並且對所有受試者進行審查,它就會猜測錯誤。在任何有問題的情況下,使用邏輯編碼會更安全,例如,Surv(time, status==3) 表示 '3' 是事件的代碼。對於多狀態生存,狀態變量將是一個因子,假設其第一級對應於審查。

Surv 對象可以作為向量下標,例如x[1:3] 使用單個下標,在這種情況下,drop 參數將被忽略,結果將是一個生存對象;或使用兩個下標作為矩陣。如果缺少第二個下標並且 drop=F (默認),則下標的結果將是 Surv 對象,例如 x[1:3,,drop=F] ,否則結果將是一個矩陣(或向量),符合默認行為用於下標矩陣。

Surv 的對象。有 printis.na 和下標生存對象的方法。 Surv 對象被實現為具有更多屬性的 2 或 3 列矩陣。其中包括多狀態對象的狀態類型(左審查、右審查、計數過程等)和標簽。輸入參數的任何屬性也保留在 inputAttributes 中。這對於在數據項(例如標簽)上附加了更多信息的其他包可能很有用;然而,生存包中的例程都沒有使用這些值。

對於 is.Surv ,如果 x 繼承自類 "Surv" ,則為邏輯值 TRUE ,否則為 FALSE

注意

使用 1/2 編碼表示狀態是一個有趣的曆史文物。對於打孔卡上包含的數據,IBM 360 Fortran 將空白視為零,這導致 Mayo Clinic 生物統計學部分製定了一項政策,永遠不要使用 "0" 作為數據值,因為人們無法將其與缺失值區分開。政策變成了習慣,就像經常發生的那樣,在生/死的打孔卡消亡之後,對生/死的 1/2 編碼的使用仍然持續了很長一段時間。在編寫 Surv 時,許多 Mayo 數據集仍然使用這種過時的約定,例如包中找到的 lung 數據集。

例子

with(aml, Surv(time, status))
survfit(Surv(time, status) ~ ph.ecog, data=lung)
Surv(heart$start, heart$stop, heart$event) 

也可以看看

coxphsurvfitsurvreglung

相關用法


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