pyears(formula, data, weights, subset, na.action, ratetable=survexp.us,
scale=365.25, expect=c('event', 'pyears'), model=F, x=F, y=F)
Surv
object containing the follow-up time and an
event indicator.
The predictors consist of optional grouping variables
separated by + operatoformula
, or in the subset
and the weights
argument.subset
argument has been used. Default is options()$na.action
.survexp.uswhite
.pyears
array.Surv
object.pyears
array. This is often useful as an error check; if
there is a mismatch of units between two variables, nearly all the person
years may be off table.na.action
attribute contributed by an na.action
routine, if any.pyears
may have several time variables, it is necessary that all
of them be in the same units. For instance, in the call
py <- pyears(futime ~ rx + ratetable(age=age, sex=sex, year=entry.dt))
with a ratetable
whose natural unit is days, it is important that futime
,
age
and entry.dt
all be in days. Given the wide range of possible inputs,
it is difficult for the routine to do sanity checks of this aspect.
A special function tcut
is needed to specify time-dependent cutpoints.
For instance, assume that age is in years, and that the desired final
arrays have as one of their margins the age groups 0-2, 2-10, 10-25, and 25+.
A subject who enters the study at age 4 and remains under observation for
10 years will contribute follow-up time to both the 2-10 and 10-25
subsets. If cut(age, c(0,2,10,25,100))
were used in the formula, the
subject would be classified according to his starting age only.
The tcut
function has the same arguments as cut
,
but produces a different output object which allows the pyears
function
to correctly track the subject.
The results of pyears
are normally used as input to further calculations.
The example below is from a study of hip fracture rates from 1930 - 1990
in Rochester, Minnesota. Survival post hip fracture has increased over
that time, but so has the survival of elderly subjects in the population at
large. A model of relative survival helps to clarify what has happened:
Poisson regression is used, but replacing exposure time with expected
exposure (for an age and sex matched control).
Death rates change with age, of course, so the result is carved into
1 year increments of time. Males and females were done separately.
ratetable
, survexp
, Surv
temp1 <- mdy.date(6,6,36) temp2 <- mdy.date(6,6,55)# Now compare the results from person-years # temp.age <- tcut(temp2-temp1, floor(c(-1, (18:31 * 365.24))), labels=c('0-18', paste(18:30, 19:31, sep='-'))) temp.yr <- tcut(temp2, mdy.date(1,1,1954:1965), labels=1954:1964) temp.time <- 3700 #total days of fu py1 <- pyears(temp.time ~ temp.age + temp.yr, scale=1) #output in days