NAG Library Routine Document
g12zaf (coxmodel_risksets)
1
Purpose
g12zaf creates the risk sets associated with the Cox proportional hazards model for fixed covariates.
2
Specification
Fortran Interface
Subroutine g12zaf ( 
n, m, ns, z, ldz, isz, ip, t, ic, isi, num, ixs, nxs, x, mxn, id, nd, tp, irs, ifail) 
Integer, Intent (In)  ::  n, m, ns, ldz, isz(m), ip, ic(n), isi(*), mxn  Integer, Intent (Inout)  ::  ifail  Integer, Intent (Out)  ::  num, ixs(mxn), nxs, id(mxn), nd, irs(n)  Real (Kind=nag_wp), Intent (In)  ::  z(ldz,m), t(n)  Real (Kind=nag_wp), Intent (Inout)  ::  x(mxn,ip)  Real (Kind=nag_wp), Intent (Out)  ::  tp(n) 

C Header Interface
#include nagmk26.h
void 
g12zaf_ (const Integer *n, const Integer *m, const Integer *ns, const double z[], const Integer *ldz, const Integer isz[], const Integer *ip, const double t[], const Integer ic[], const Integer isi[], Integer *num, Integer ixs[], Integer *nxs, double x[], const Integer *mxn, Integer id[], Integer *nd, double tp[], Integer irs[], Integer *ifail) 

3
Description
The Cox proportional hazards model (see
Cox (1972)) relates the time to an event, usually death or failure, to a number of explanatory variables known as covariates. Some of the observations may be rightcensored, that is, the exact time to failure is not known, only that it is greater than a known time.
Let
${t}_{\mathit{i}}$, for
$\mathit{i}=1,2,\dots ,n$, be the failure time or censored time for the
$i$th observation with the vector of
$p$ covariates
${z}_{i}$.
It is assumed that censoring and failure mechanisms are independent. The hazard function,
$\lambda \left(t,z\right)$, is the probability that an individual with covariates
$z$ fails at time
$t$ given that the individual survived up to time
$t$. In the Cox proportional hazards model,
$\lambda \left(t,z\right)$ is of the form
where
${\lambda}_{0}$ is the baseline hazard function, an unspecified function of time, and
$\beta $ is a vector of unknown arguments. As
${\lambda}_{0}$ is unknown, the arguments
$\beta $ are estimated using the conditional or marginal likelihood. This involves considering the covariate values of all subjects that are at risk at the time when a failure occurs. The probability that the subject that failed had their observed set of covariate values is computed.
The risk set at a failure time consists of those subjects that fail or are censored at that time and those who survive beyond that time. As risk sets are computed for every distinct failure time, it should be noted that the combined risk sets may be considerably larger than the original data. If the data can be considered as coming from different strata such that ${\lambda}_{0}$ varies from strata to strata but $\beta $ remains constant, then g12zaf will return a factor that indicates to which risk set/strata each member of the risk sets belongs rather than just to which risk set.
Given the risk sets the Cox proportional hazards model can then be fitted using a Poisson generalized linear model (
g02gcf with
g04eaf to compute dummy variables) using Breslow's approximation for ties (see
Breslow (1974)). This will give the same fit as
g12baf. If the exact treatment of ties in discrete time is required, as given by
Cox (1972), then the model is fitted as a conditional logistic model using
g11caf.
4
References
Breslow N E (1974) Covariate analysis of censored survival data Biometrics 30 89–99
Cox D R (1972) Regression models in life tables (with discussion) J. Roy. Statist. Soc. Ser. B 34 187–220
Gross A J and Clark V A (1975) Survival Distributions: Reliability Applications in the Biomedical Sciences Wiley
5
Arguments
 1: $\mathbf{n}$ – IntegerInput

On entry: $n$, the number of data points.
Constraint:
${\mathbf{n}}\ge 2$.
 2: $\mathbf{m}$ – IntegerInput

On entry: the number of covariates in array
z.
Constraint:
${\mathbf{m}}\ge 1$.
 3: $\mathbf{ns}$ – IntegerInput

On entry: the number of strata. If
${\mathbf{ns}}>0$ then the stratum for each observation must be supplied in
isi.
Constraint:
${\mathbf{ns}}\ge 0$.
 4: $\mathbf{z}\left({\mathbf{ldz}},{\mathbf{m}}\right)$ – Real (Kind=nag_wp) arrayInput

On entry: the
$i$th row must contain the covariates which are associated with the
$i$th failure time given in
t.
 5: $\mathbf{ldz}$ – IntegerInput

On entry: the first dimension of the array
z as declared in the (sub)program from which
g12zaf is called.
Constraint:
${\mathbf{ldz}}\ge {\mathbf{n}}$.
 6: $\mathbf{isz}\left({\mathbf{m}}\right)$ – Integer arrayInput

On entry: indicates which subset of covariates are to be included in the model.
 ${\mathbf{isz}}\left(j\right)\ge 1$
 The $j$th covariate is included in the model.
 ${\mathbf{isz}}\left(j\right)=0$
 The $j$th covariate is excluded from the model and not referenced.
Constraint:
${\mathbf{isz}}\left(j\right)\ge 0$ and at least one value must be nonzero.
 7: $\mathbf{ip}$ – IntegerInput

On entry:
$p$, the number of covariates included in the model as indicated by
isz.
Constraint:
${\mathbf{ip}}=\text{}$ the number of nonzero values of
isz.
 8: $\mathbf{t}\left({\mathbf{n}}\right)$ – Real (Kind=nag_wp) arrayInput

On entry: the vector of $n$ failure censoring times.
 9: $\mathbf{ic}\left({\mathbf{n}}\right)$ – Integer arrayInput

On entry: the status of the individual at time
$t$ given in
t.
 ${\mathbf{ic}}\left(i\right)=0$
 Indicates that the $i$th individual has failed at time ${\mathbf{t}}\left(i\right)$.
 ${\mathbf{ic}}\left(i\right)=1$
 Indicates that the $i$th individual has been censored at time ${\mathbf{t}}\left(i\right)$.
Constraint:
${\mathbf{ic}}\left(\mathit{i}\right)=0$ or $1$, for $\mathit{i}=1,2,\dots ,{\mathbf{n}}$.
 10: $\mathbf{isi}\left(*\right)$ – Integer arrayInput

Note: the dimension of the array
isi
must be at least
${\mathbf{n}}$ if
${\mathbf{ns}}>0$, and at least
$1$ otherwise.
On entry: if
${\mathbf{ns}}>0$, the stratum indicators which also allow data points to be excluded from the analysis.
If
${\mathbf{ns}}=0$,
isi is not referenced.
 ${\mathbf{isi}}\left(i\right)=k$
 Indicates that the $i$th data point is in the $k$th stratum, where $k=1,2,\dots ,{\mathbf{ns}}$.
 ${\mathbf{isi}}\left(i\right)=0$
 Indicates that the $i$th data point is omitted from the analysis.
Constraint:
if ${\mathbf{ns}}>0$, $0\le {\mathbf{isi}}\left(\mathit{i}\right)\le {\mathbf{ns}}$, for $\mathit{i}=1,2,\dots ,{\mathbf{n}}$.
 11: $\mathbf{num}$ – IntegerOutput

On exit: the number of values in the combined risk sets.
 12: $\mathbf{ixs}\left({\mathbf{mxn}}\right)$ – Integer arrayOutput

On exit: the factor giving the risk sets/strata for the data in
x and
id.
If ${\mathbf{ns}}=0$ or $1$, ${\mathbf{ixs}}\left(i\right)=l$ for members of the $l$th risk set.
If ${\mathbf{ns}}>1$, ${\mathbf{ixs}}\left(i\right)=\left(j1\right)\times {\mathbf{nd}}+l$ for the observations in the $l$th risk set for the $j$th strata.
 13: $\mathbf{nxs}$ – IntegerOutput

On exit: the number of levels for the risk sets/strata factor given in
ixs.
 14: $\mathbf{x}\left({\mathbf{mxn}},{\mathbf{ip}}\right)$ – Real (Kind=nag_wp) arrayOutput

On exit: the first
num rows contain the values of the covariates for the members of the risk sets.
 15: $\mathbf{mxn}$ – IntegerInput

On entry: the first dimension of the array
x and the dimension of the arrays
ixs and
id as declared in the (sub)program from which
g12zaf is called.
Constraint:
mxn must be sufficiently large for the arrays to contain the expanded risk sets. The size will depend on the pattern of failures times and censored times. The minimum value will be returned in
num unless the routine exits with
${\mathbf{ifail}}={\mathbf{1}}$ or
${\mathbf{2}}$.
 16: $\mathbf{id}\left({\mathbf{mxn}}\right)$ – Integer arrayOutput

On exit: indicates if the member of the risk set given in
x failed.
${\mathbf{id}}\left(i\right)=1$ if the member of the risk set failed at the time defining the risk set and ${\mathbf{id}}\left(i\right)=0$ otherwise.
 17: $\mathbf{nd}$ – IntegerOutput

On exit: the number of distinct failure times, i.e., the number of risk sets.
 18: $\mathbf{tp}\left({\mathbf{n}}\right)$ – Real (Kind=nag_wp) arrayOutput

On exit: ${\mathbf{tp}}\left(\mathit{i}\right)$ contains the $\mathit{i}$th distinct failure time, for $\mathit{i}=1,2,\dots ,{\mathbf{nd}}$.
 19: $\mathbf{irs}\left({\mathbf{n}}\right)$ – Integer arrayOutput

On exit: indicates rows in
x and elements in
ixs and
id corresponding to the risk sets. The first risk set corresponding to failure time
${\mathbf{tp}}\left(1\right)$ is given by rows
$1$ to
${\mathbf{irs}}\left(1\right)$. The
$\mathit{l}$th risk set is given by rows
${\mathbf{irs}}\left(\mathit{l}1\right)+1$ to
${\mathbf{irs}}\left(\mathit{l}\right)$, for
$\mathit{l}=1,2,\dots ,{\mathbf{nd}}$.
 20: $\mathbf{ifail}$ – IntegerInput/Output

On entry:
ifail must be set to
$0$,
$1\text{ or}1$. If you are unfamiliar with this argument you should refer to
Section 3.4 in How to Use the NAG Library and its Documentation for details.
For environments where it might be inappropriate to halt program execution when an error is detected, the value
$1\text{ or}1$ is recommended. If the output of error messages is undesirable, then the value
$1$ is recommended. Otherwise, if you are not familiar with this argument, the recommended value is
$0$.
When the value $\mathbf{1}\text{ or}\mathbf{1}$ is used it is essential to test the value of ifail on exit.
On exit:
${\mathbf{ifail}}={\mathbf{0}}$ unless the routine detects an error or a warning has been flagged (see
Section 6).
6
Error Indicators and Warnings
If on entry
${\mathbf{ifail}}=0$ or
$1$, explanatory error messages are output on the current error message unit (as defined by
x04aaf).
Errors or warnings detected by the routine:
 ${\mathbf{ifail}}=1$

On entry,  ${\mathbf{m}}<1$, 
or  ${\mathbf{n}}<2$, 
or  ${\mathbf{ns}}<0$, 
or  ${\mathbf{ldz}}<{\mathbf{n}}$. 
 ${\mathbf{ifail}}=2$

On entry,  ${\mathbf{isz}}\left(i\right)<0$ for some $i$, 
or  the value of ip is incompatible with isz, 
or  ${\mathbf{ic}}\left(i\right)\ne 1$ or $0$. 
or  ${\mathbf{ns}}>0$ and ${\mathbf{isi}}\left(i\right)<0$, 
or  ${\mathbf{ns}}>1$ and ${\mathbf{isi}}\left(i\right)>{\mathbf{ns}}$. 
 ${\mathbf{ifail}}=3$

mxn is too small, the minimum value is returned in
num.
 ${\mathbf{ifail}}=99$
An unexpected error has been triggered by this routine. Please
contact
NAG.
See
Section 3.9 in How to Use the NAG Library and its Documentation for further information.
 ${\mathbf{ifail}}=399$
Your licence key may have expired or may not have been installed correctly.
See
Section 3.8 in How to Use the NAG Library and its Documentation for further information.
 ${\mathbf{ifail}}=999$
Dynamic memory allocation failed.
See
Section 3.7 in How to Use the NAG Library and its Documentation for further information.
7
Accuracy
Not applicable.
8
Parallelism and Performance
g12zaf is not threaded in any implementation.
When there are strata present, i.e.,
${\mathbf{ns}}>1$, not all the
nxs groups may be present.
10
Example
The data are the remission times for two groups of leukemia patients (see page 242 of
Gross and Clark (1975)). A dummy variable indicates which group they come from. The risk sets are computed using
g12zaf and the Cox's proportional hazard model is fitted using
g11caf.
10.1
Program Text
Program Text (g12zafe.f90)
10.2
Program Data
Program Data (g12zafe.d)
10.3
Program Results
Program Results (g12zafe.r)