Title: | Permutation Tests for Multivariate Survival Analysis |
---|---|
Description: | Multivariate version of the two-sample Gehan and logrank tests, as described in L.J Wei & J.M Lachin (1984) and Persson et al. (2019). |
Authors: | Lukas Arnroth [aut, cre], Måns Thulin [aut] |
Maintainer: | Lukas Arnroth <[email protected]> |
License: | MIT + file LICENSE |
Version: | 0.2 |
Built: | 2024-11-20 06:33:08 UTC |
Source: | CRAN |
Computes the value of B for a permutation test required to obtain a specified accuracy when approximating the permutation p-values using B random permutations.
choose_B(p0 = 0.05, width = 0.01, conf.level = 0.95)
choose_B(p0 = 0.05, width = 0.01, conf.level = 0.95)
p0 |
A guess for the p-value. Can be based e.g. on a small number of simulations. The default is 0.05. |
width |
The desired width of the Clopper-Pearson interval. The default is 0.01. |
conf.level |
The confidence level of the Clopper-Pearson interval. The default is 0.95. |
Computations are based on the Clopper-Pearson interval, using a formula from Thulin (2014). The procedure is described in Section 3.3 in Persson et al. (2019).
B
Persson I, Arnroth L, Thulin M (2019). “Multivariate two sample permutation tests for trials with multiple time to event outcomes.” Pharmaceutical Statistics, 18, 476-485. doi:10.1002/pst.1938.
Thulin M (2014). “The cost of using exact confidence intervals for a binomial proportion.” Electronic Journal of Statistics, 8(1), 817-840. doi:10.1214/14-EJS909.
# B required to achieve an expected width of 0.02 when # the p-value is approximately 0.1: choose_B(p0 = 0.1, width = 0.02)
# B required to achieve an expected width of 0.02 when # the p-value is approximately 0.1: choose_B(p0 = 0.1, width = 0.02)
Diabetic retinopathy: how strongly are times to blindness of a treated and an untreated eye correlated in patients suffering from diabetic retinopathy? The analysis is based on a sample of n=197 paired failure times (censoring 73% and 49% for the treated and untreated eyes, respectively) described by Huster, Brookmeyer, and Self (1989). Both eyes of an individual are observed for the same time, and therefore dots on the diagonal generally indicate pairs of censored times.
diabetes
diabetes
A data.frame containing 197 rows.
https://www.mayo.edu/research/documents/diabeteshtml/DOC-10027460/
Huster WJ, Brookmeyer R, Self SG (1989). “Modelling paired survival data with covariates.” Biometrics, 45, 145-156. doi:10.2307/2532041.
Computes the multivariate Gehan test statistic.
gehan(x, y, delta_x, delta_y, n1, n2, p, k = 1L, l = 1L)
gehan(x, y, delta_x, delta_y, n1, n2, p, k = 1L, l = 1L)
x |
Matrix |
y |
Matrix |
delta_x |
Matrix |
delta_y |
Matrix |
n1 |
Integer. Set as the number of rows in x |
n2 |
Integer. Set as the number of rows in y |
p |
Integer. Set as the number of columns in x and y |
k |
Integer. |
l |
Integer. |
1x1 matrix containing a numeric
Computes the multivariate logrank test statistic.
mvlogrank(x, y, delta_x, delta_y, n1, n2, p, k = 1L, l = 1L)
mvlogrank(x, y, delta_x, delta_y, n1, n2, p, k = 1L, l = 1L)
x |
Matrix |
y |
Matrix |
delta_x |
Matrix |
delta_y |
Matrix |
n1 |
Integer. Set as the number of rows in x |
n2 |
Integer. Set as the number of rows in y |
p |
Integer. Set as the number of columns in x and y |
k |
Integer. |
l |
Integer. |
1x1 matrix containing a numeric
Computes the p-value of the multivariate permutation Gehan test described in Persson et al. (2019).
perm_gehan(B = 999, z, delta.z, n1)
perm_gehan(B = 999, z, delta.z, n1)
B |
An integer specifying the number of permutations to perform. The default is 999. It is recommended to use |
z |
A matrix containing the observed (possibly censored) survival times for the two groups. The observations for the first group should be one the first |
delta.z |
A matrix containing the censoring status of each observation in |
n1 |
An integer specifying the sample size of the first group. |
Multivariate version of the logrank and Gehan tests were described by Wei & Lachin (1984). Persson et al. (2019) described permutation versions of these tests, with improved performance.
A p-value.
Persson I, Arnroth L, Thulin M (2019). “Multivariate two sample permutation tests for trials with multiple time to event outcomes.” Pharmaceutical Statistics, 18, 476-485. doi:10.1002/pst.1938.
Wei LJ, Lachin JM (1984). “Two sample asymptotically distribution free tests for incomplete multivariate observations.” Journal of the American Statistical Association, 79(387), 653-661. doi:10.1080/01621459.1984.10478093.
# Diabetes data: ?diabetes # Survival times for the two groups: x <- as.matrix(subset(diabetes, LASER==1)[c(6,8)]) y <- as.matrix(subset(diabetes, LASER==2)[c(6,8)]) # Censoring status for the two groups: delta.x <- as.matrix(subset(diabetes, LASER==1)[c(7,9)]) delta.y <- as.matrix(subset(diabetes, LASER==2)[c(7,9)]) # Create the input for the test: z <- rbind(x, y) delta.z <- rbind(delta.x, delta.y) # Run the test with 50 permutations: perm_gehan(B = 50, z, delta.z, n1 = nrow(x)) # In most cases, it is preferable to use more than 50 # permutations for computing p-values. choose_B() can # be used to determine how many permutations are needed.
# Diabetes data: ?diabetes # Survival times for the two groups: x <- as.matrix(subset(diabetes, LASER==1)[c(6,8)]) y <- as.matrix(subset(diabetes, LASER==2)[c(6,8)]) # Censoring status for the two groups: delta.x <- as.matrix(subset(diabetes, LASER==1)[c(7,9)]) delta.y <- as.matrix(subset(diabetes, LASER==2)[c(7,9)]) # Create the input for the test: z <- rbind(x, y) delta.z <- rbind(delta.x, delta.y) # Run the test with 50 permutations: perm_gehan(B = 50, z, delta.z, n1 = nrow(x)) # In most cases, it is preferable to use more than 50 # permutations for computing p-values. choose_B() can # be used to determine how many permutations are needed.
Computes the p-value of the multivariate permutation logrank test described in Persson et al. (2019).
perm_mvlogrank(B, z, delta.z, n1)
perm_mvlogrank(B, z, delta.z, n1)
B |
An integer specifying the number of permutations to perform. The default is 999. It is recommended to use |
z |
A matrix containing the observed (possibly censored) survival times for the two groups. The observations for the first group should be one the first |
delta.z |
A matrix containing the censoring status of each observation in |
n1 |
An integer specifying the sample size of the first group. |
Multivariate version of the logrank and Gehan tests were described by Wei & Lachin (1984). Persson et al. (2019) described permutation versions of these tests, with improved performance.
A p-value.
Persson I, Arnroth L, Thulin M (2019). “Multivariate two sample permutation tests for trials with multiple time to event outcomes.” Pharmaceutical Statistics, 18, 476-485. doi:10.1002/pst.1938.
Wei LJ, Lachin JM (1984). “Two sample asymptotically distribution free tests for incomplete multivariate observations.” Journal of the American Statistical Association, 79(387), 653-661. doi:10.1080/01621459.1984.10478093.
# Diabetes data: ?diabetes # Survival times for the two groups: x <- as.matrix(subset(diabetes, LASER==1)[c(6,8)]) y <- as.matrix(subset(diabetes, LASER==2)[c(6,8)]) # Censoring status for the two groups: delta.x <- as.matrix(subset(diabetes, LASER==1)[c(7,9)]) delta.y <- as.matrix(subset(diabetes, LASER==2)[c(7,9)]) # Create the input for the test: z <- rbind(x, y) delta.z <- rbind(delta.x, delta.y) # Run the test with 50 permutations: perm_mvlogrank(B = 50, z, delta.z, n1 = nrow(x)) # In most cases, it is preferable to use more than 50 # permutations for computing p-values. choose_B() can # be used to determine how many permutations are needed.
# Diabetes data: ?diabetes # Survival times for the two groups: x <- as.matrix(subset(diabetes, LASER==1)[c(6,8)]) y <- as.matrix(subset(diabetes, LASER==2)[c(6,8)]) # Censoring status for the two groups: delta.x <- as.matrix(subset(diabetes, LASER==1)[c(7,9)]) delta.y <- as.matrix(subset(diabetes, LASER==2)[c(7,9)]) # Create the input for the test: z <- rbind(x, y) delta.z <- rbind(delta.x, delta.y) # Run the test with 50 permutations: perm_mvlogrank(B = 50, z, delta.z, n1 = nrow(x)) # In most cases, it is preferable to use more than 50 # permutations for computing p-values. choose_B() can # be used to determine how many permutations are needed.
Data randomly generated.
wltestdata
wltestdata
A dataframe containing 47 rows and 9 columns
Randomly generated integers