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


R pyears 人年


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

說明

此函數計算一組受試者貢獻的隨訪時間的person-years,並分層為子組。它還計算對輸出表的每個單元格做出貢獻的受試者數量,以及可選的每個單元格中的事件數和/或預期事件數。

用法

pyears(formula, data, weights, subset, na.action,  rmap,
       ratetable, scale=365.25, expect=c('event', 'pyears'),
       model=FALSE, x=FALSE, y=FALSE, data.frame=FALSE)

參數

formula

一個公式對象。響應變量將是每個受試者的隨訪時間向量,或包含生存時間和事件指示器的 Surv 對象。預測變量由由 + 運算符分隔的可選分組變量(與 survfit 完全相同)、時間相關分組變量(例如年齡)(用 tcut 指定)和可選的 ratetable 項組成。後者將每個受試者與其預期的隊列相匹配。

data

一個數據幀,用於解釋 formulasubsetweights 參數中命名的變量。

weights

箱重。

subset

表達式表示在擬合中隻應使用數據行的子集。

na.action

缺失數據過濾器函數,在使用任何 subset 參數後應用於 model.frame。默認為 options()$na.action

rmap

將數據集名稱映射到費率表名稱的可選列表。請參閱下麵的詳細信息部分。

ratetable

事件發生率表,例如 survexp.uswhite

scale

對結果進行縮放。由於大多數費率表以單位/天為單位,因此默認值 365.25 會導致以年為單位報告輸出。

expect

輸出表是否應包含預期的事件數,或預期的person-years觀察數。這僅對費率表有效。

data.frame

返回一個 DataFrame 而不是一組數組。

model , x , y

如果其中任何一個為真,則模型框架、模型矩陣和/或響應時間向量將作為最終結果的組成部分返回。

細節

由於pyears可能有多個時間變量,因此所有這些變量必須采用相同的單位。例如,在調用中

  py <- pyears(futime ~ rx, rmap=list(age=age, sex=sex, year=entry.dt),
                    ratetable=survexp.us) 

費率表的自然單位是每天的危險,重要的是 futimeageentry.dt 均以天為單位。考慮到可能的輸入範圍很廣,例程很難進行這方麵的健全性檢查。

正在使用的費率表可能具有與用戶數據集不同的變量名稱,這由 rmap 參數處理。上述計算的比率表是 survexp.us ,對 summary{survexp.us} 的調用顯示它期望變量 age = 以天為單位的年齡, sexyear = 研究條目的日期,我們創建它們在 rmap 行中。 sex 變量未映射,因此代碼假定它以正確的格式存在於 mydata 中。 (注意:對於性別等因子,程序將匹配任何唯一的縮寫,忽略大小寫。)

需要一個特殊函數tcut來指定與時間相關的切點。例如,假設年齡以年為單位,並且所需的最終數組將年齡組 0-2、2-10、10-25 和 25+ 作為其邊距之一。 4 歲時進入研究並持續觀察 10 年的受試者將為 2-10 和 10-25 子集貢獻隨訪時間。如果公式中使用cut(age, c(0,2,10,25,100)),則僅根據受試者的起始年齡進行分類。 tcut 函數具有與 cut 相同的參數,但生成不同的輸出對象,該對象允許 pyears 函數正確跟蹤主題。

pyears 的結果通常用作進一步計算的輸入。因此,print 例程旨在僅提供表的摘要。

包含組件的列表:

pyears

包含person-years曝光的數組。 (或其他單位,取決於費率表和比例)。數組的維度和維度名稱對應於模型方程右側的變量。

n

一個數組,其中包含為 pyears 數組的每個單元貢獻時間的受試者數量。

event

包含觀察到的事件數的數組。僅當響應變量是 Surv 對象時才會出現。

expected

包含預期事件數量的數組(如果 expect ="pyears" 則為人年)。僅當存在 ratetable 術語時才會出現。

data

如果設置了 data.frame 選項,則包含變量 neventpyearsevent 的 DataFrame 將取代上麵列出的四個數組,以及與每個維度對應的變量。數組中的每個單元格都有一行。

offtable

隊列中不屬於 pyears 數組中任何單元格的 person-years 暴露數量。這通常可用於錯誤檢查;如果兩個變量之間的單位不匹配,則幾乎所有的人年都可能不在表中。

tcut

調用是否包含任何與時間相關的切點。

summary

rate-table 匹配的摘要。這對於錯誤檢查也很有用。

call

函數調用的圖像。

observations

刪除任何缺失後輸入數據集中的觀測值數量。

na.action

na.action 例程貢獻的 na.action 屬性(如果有)。

例子

# Look at progression rates jointly by calendar date and age
# 
temp.yr  <- tcut(mgus$dxyr, 55:92, labels=as.character(55:91)) 
temp.age <- tcut(mgus$age, 34:101, labels=as.character(34:100))
ptime <- ifelse(is.na(mgus$pctime), mgus$futime, mgus$pctime)
pstat <- ifelse(is.na(mgus$pctime), 0, 1)
pfit <- pyears(Surv(ptime/365.25, pstat) ~ temp.yr + temp.age + sex,  mgus,
     data.frame=TRUE) 
# Turn the factor back into numerics for regression
tdata <- pfit$data
tdata$age <- as.numeric(as.character(tdata$temp.age))
tdata$year<- as.numeric(as.character(tdata$temp.yr))
fit1 <- glm(event ~ year + age+ sex +offset(log(pyears)),
             data=tdata, family=poisson)
## Not run: 
# fit a gam model 
gfit.m <- gam(y ~ s(age) + s(year) + offset(log(time)),  
                        family = poisson, data = tdata) 

## End(Not run)

# Example #2  Create the hearta data frame: 
hearta <- by(heart, heart$id,  
             function(x)x[x$stop == max(x$stop),]) 
hearta <- do.call("rbind", hearta) 
# Produce pyears table of death rates on the surgical arm
#  The first is by age at randomization, the second by current age
fit1 <- pyears(Surv(stop/365.25, event) ~ cut(age + 48, c(0,50,60,70,100)) + 
       surgery, data = hearta, scale = 1)
fit2 <- pyears(Surv(stop/365.25, event) ~ tcut(age + 48, c(0,50,60,70,100)) + 
       surgery, data = hearta, scale = 1)
fit1$event/fit1$pyears  #death rates on the surgery and non-surg arm

fit2$event/fit2$pyears  #death rates on the surgery and non-surg arm

也可以看看

ratetablesurvexpSurv

相關用法


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