KAPMR

Computes Kaplan‑Meier estimates of survival probabilities in stratified samples.

Required Arguments

XNOBS by NCOL matrix containing the data. (Input)

IRT — Column number in X containing the response variable. (Input)
For the i‑th right‑censored observation, X(i, IRT) contains the right‑censoring time. Otherwise, X(iIRT) contains the failure time. (See ICEN.)

SPROBNOBS by 2 matrix. (Output)
SPROB(i, 1) contains the estimated survival probability at time X(iIRT) in the i‑th observation’s stratum, while SPROB(i, 2) contains Greenwood’s estimate of the standard deviation of this estimated probability. If the i‑th observation contains censor codes out of range or if a variable is missing, then the corresponding elements of SPROB are set to missing (NaN, not a number). Similarly, if an element in SPROB is not defined, then it is set to missing.

Optional Arguments

NOBS — Number of observations. (Input)
Default: NOBS = size (X,1).

NCOL — Number of columns in X. (Input)
Default: NCOL = size (X,2).

LDX — Leading dimension of X exactly as specified in the dimension statement in the calling program. (Input)
Default: LDX = size (X,1).

IFRQ — Column number in X containing the frequency of response for this observation. (Input)
If IFRQ = 0, a response frequency of 1 for each observation is assumed.
Default: IFRQ = 0.

ICEN — Column number in X containing the censoring code for this observation. (Input)
Default: ICEN = 0.
If ICEN = 0, a censoring code of 0 is assumed. Valid censoring codes are:

 

Code

Meaning

0

Exact failure at X(iIRT).

1

Right censored. The response is greater than X(iIRT).

If X(iICEN) is not 0 or 1, then the i‑th observation is omitted from the analysis.

IGRP — Column number in X containing the stratum number for this observation. (Input)
If IGRP = 0, the data is assumed to be from one stratum. Otherwise, column IGRP of X contains a unique value for each stratum in the data. Kaplan‑Meier estimates are computed within each stratum.
Default: IGRP = 0.

ISRT — Sorting option. (Input)
If ISRT = 1, column IRT of X is assumed to be sorted in ascending order within each stratum. Otherwise, a detached sort will be performed by KAPMR. If sorting is performed by KAPMR, all censored individuals are assumed to follow tied failures.
Default: ISRT = 0.

LDSPRO — Leading dimension of SPROB exactly as specified in the dimension statement in the calling program. (Input)
Default: LDSPRO = size (SPROB,1).

NRMISS — Number of rows of data in X that contain any missing values. (Output)

FORTRAN 90 Interface

Generic: CALL KAPMR (X, IRT, SPROB [])

Specific: The specific interface names are S_KAPMR and D_KAPMR.

FORTRAN 77 Interface

Single: CALL KAPMR (NOBS, NCOL, X, LDX, IRT, IFRQ, ICEN, IGRP, ISRT, SPROB, LDSPRO, NRMISS)

Double: The double precision name is DKAPMR.

Description

Routine KAPMR computes Kaplan‑Meier (or product‑limit) estimates of survival probabilities for a sample of failure times that possibly contain right censoring. A survival probability S(t) is defined as 1  F(t), where F(t) is the cumulative distribution function of the failure times (t). Greenwood’s estimate of the standard errors of the survival probability estimates are also computed. (See Kalbfleisch and Prentice, 1980, pages 13 and 14.)

Let (tiδi), for i = 1, n denote the failure/censoring times and the censoring codes for the n observations in a single sample. Here, ti = X(iIRT) is a failure time if δi is 0, where δi = X(iICEN). Also, ti is a censoring time if δi is 1. Rows in X containing values other than 0 or 1 for δi are ignored. Let the number of observations in the sample that have not failed by time s(i) be denoted by n(i), where s(i) is an ordered (from smallest to largest) listing of the distinct failure times (censoring times are omitted). Then the Kaplan‑Meier estimate of the survival probabilities is a step function, which in the interval from s(i) to s(i+1) (including the lower endpoint) is given by

 

where d(j) denotes the number of failures occurring at time s(j). Note that one row of X may correspond to more than one failed (or censored) observation when the frequency option is in effect (IFRQ is not zero). The Kaplan‑Meier estimate of the survival probability prior to time s(1) is 1.0, while the Kaplan‑Meier estimate of the survival probability after the last failure time is not defined.

Greenwood’s estimate of the variance of

 

in the interval from s(i) to s(i+1) is given as

 

Routine KAPMR computes the single sample estimates of the survival probabilities for all samples of data included in X during a single call. This is accomplished through the IGRP column of X, which if present, must contain a distinct code for each sample of observations. If IGRP = 0, there is no grouping column, and all observations are assumed to be from the same sample.

When failures and right‑censored observations are tied and the data are to be sorted by KAPMR (ISRT is not 1), KAPMR assumes that the time of censoring for the tied‑censored observations is immediately after the tied failure (within the same sample). When the ISRT = 1 option is in effect, the data are assumed to be sorted from smallest to largest according to column IRT of X within each stratum. Furthermore, a small increment of time is assumed (theoretically) to elapse between the failed and censored observations that are tied (in the same sample). Thus, when the ISRT = 1 option is in effect, the user must sort all of the data in X from smallest to largest according to column IRT (and column IGRP, if present). By appropriate sorting of the observations, the user can handle censored and failed observations that are tied in any manner desired.

Comments

1. Workspace may be explicitly provided, if desired, by use of K2PMR/DK2PMR. The reference is:

CALL K2PMR (NOBS, NCOL, X, LDX, IRT, IFRQ, ICEN, IGRP, ISRT, SPROB, LDSPRO, NRMISS, IGP, IPERM, INDDR, IWK, WK, IPER)

The additional arguments are as follows:

IGP — Work vector of length NOBS.

IPERM — Work vector of length NOBS + NCOL.

INDDR — Work vector of length NOBS.

IWK — Work vector of length max(NOBSNCOL).

WK — Work vector of length 2 * max(NOBSNCOL).

IPER — Work vector of length NOBS.

2. Missing values may occur in any of the columns of X. Any row of X that contains missing values in the IRT, ICEN, or IFRQ columns (when the ICEN and IFRQ columns are present) is omitted from the analysis. Missing values in the IGRP column, if present, are classified into an additional “missing” group.

Example

The following example is taken from Kalbfleisch and Prentice (1980, page 1). The first column in X contains the death/censoring times for rats suffering from vaginal cancer. The second column contains information as to which of two forms of treatment were provided, while the third column contains the censoring code. Finally, the fourth column contains the frequency of each observation. The product‑limit estimates of the survival probabilities are computed for both groups with one call to KAPMR. In this example, the output in SPROB has been equivalenced with columns 5 and 6 of X so that the input and output matrices could be printed together. Routine KAPMR could have been called with the ISRT = 1 option in effect if the censored observations had been sorted with respect to the failure time variable.

 

USE KAPMR_INT

USE WRRRL_INT

USE UMACH_INT

 

IMPLICIT NONE

INTEGER ICEN, IFRQ, IGRP, IRT, ISRT, LDSPRO, LDX, NCOL, NOBS

PARAMETER (ICEN=3, IFRQ=4, IGRP=2, IRT=1, ISRT=0, LDSPRO=33, &

LDX=33, NCOL=6, NOBS=33)

!

INTEGER NOUT, NRMISS

REAL SPROB(LDSPRO,2), X(LDX,NCOL)

CHARACTER XLABEL(7)*6, YLABEL(1)*6

!

EQUIVALENCE (X(1,5), SPROB)

!

DATA XLABEL/'OBS', 'TIME', 'GROUP', 'CENSOR', 'FREQ', 'S-HAT', &

'SE'/

DATA YLABEL/'NUMBER'/

DATA X/143, 164, 188, 190, 192, 206, 209, 213, 216, 220, 227, &

230, 234, 246, 265, 304, 216, 244, 142, 156, 163, 198, 205, &

232, 233, 239, 240, 261, 280, 296, 323, 204, 344, 18*5, &

15*7, 16*0, 2*1, 13*0, 4*1, 2, 20*1, 2, 4, 3*1, 2*2, 3*1, &

66*0/

!

CALL KAPMR (X, IRT, SPROB, IFRQ=IFRQ, ICEN=ICEN, IGRP=IGRP, &

NRMISS=NRMISS)

!

CALL WRRRL ('X/SPROB', X, YLABEL, XLABEL, FMT='(W10.6)')

CALL UMACH (2, NOUT)

WRITE (NOUT,'(//'' NRMISS = '', I5)') NRMISS

END

Output

 

X/SPROB

OBS TIME GROUP CENSOR FREQ S-HAT SE

1 143.000 5.000 0.000 1.000 0.947 0.051

2 164.000 5.000 0.000 1.000 0.895 0.070

3 188.000 5.000 0.000 2.000 0.789 0.094

4 190.000 5.000 0.000 1.000 0.737 0.101

5 192.000 5.000 0.000 1.000 0.684 0.107

6 206.000 5.000 0.000 1.000 0.632 0.111

7 209.000 5.000 0.000 1.000 0.579 0.113

8 213.000 5.000 0.000 1.000 0.526 0.115

9 216.000 5.000 0.000 1.000 0.474 0.115

10 220.000 5.000 0.000 1.000 0.414 0.115

11 227.000 5.000 0.000 1.000 0.355 0.112

12 230.000 5.000 0.000 1.000 0.296 0.108

13 234.000 5.000 0.000 1.000 0.237 0.101

14 246.000 5.000 0.000 1.000 0.158 0.093

15 265.000 5.000 0.000 1.000 0.079 0.073

16 304.000 5.000 0.000 1.000 0.000 NaN

17 216.000 5.000 1.000 1.000 0.474 0.115

18 244.000 5.000 1.000 1.000 0.237 0.101

19 142.000 7.000 0.000 1.000 0.952 0.046

20 156.000 7.000 0.000 1.000 0.905 0.064

21 163.000 7.000 0.000 1.000 0.857 0.076

22 198.000 7.000 0.000 1.000 0.810 0.086

23 205.000 7.000 0.000 1.000 0.759 0.094

24 232.000 7.000 0.000 2.000 0.658 0.105

25 233.000 7.000 0.000 4.000 0.455 0.111

26 239.000 7.000 0.000 1.000 0.405 0.110

27 240.000 7.000 0.000 1.000 0.354 0.107

28 261.000 7.000 0.000 1.000 0.304 0.103

29 280.000 7.000 0.000 2.000 0.202 0.090

30 296.000 7.000 0.000 2.000 0.101 0.068

31 323.000 7.000 0.000 1.000 0.051 0.049

32 204.000 7.000 1.000 1.000 0.810 0.086

33 344.000 7.000 1.000 1.000 NaN NaN

 

NRMISS = 0