coxpsmatch {rsmatch} | R Documentation |
Propensity Score Matching with Time-Dependent Covariates
Description
Perform propensity score matching as described in Lu (2005) "Propensity Score Matching with Time-Dependent Covariates". Given a longitudinal data frame with covariate information, along with treatment time, match treated individuals to those that haven't been treated yet (or are never treated) based on time-dependent propensity scores from a Cox proportional hazards model. Each treated individual is matched to one other individual, unless the number of pairs is specified.
Usage
coxpsmatch(
n_pairs = 10^10,
data,
id = "id",
time = "time",
trt_time = "trt_time",
covariates = NULL,
exact_match = NULL,
options = list(time_lag = FALSE)
)
Arguments
n_pairs |
The number of pairs desired from matching. |
data |
A data.frame or similar containing columns matching the |
id |
A character specifying the id column name (default |
time |
A character specifying the time column name (default |
trt_time |
A character specifying the treatment time column name
(default |
covariates |
A character vector specifying the covariates to use for
matching (default |
exact_match |
A vector of optional covariates to perform exact matching
on. If |
options |
A list of additional parameters with the following components:
|
Value
A data frame containing the pair information. The data frame has
columns id
, pair_id
, and type
. id
matches the input parameter and
will contain all ids from the input data frame. pair_id
refers to the id
of the computed pairs; NA
values indicate unmatched individuals. type
indicates whether the individual in the pair is considered as treatment
("trt") or control ("all") in that pair.
Author(s)
Mitchell Paukner
References
Lu, Bo. 2005. "Propensity Score Matching with Time-Dependent Covariates." Biometrics 61 (3): 721-28. doi:10.1111/j.1541-0420.2005.00356.x
Examples
if (requireNamespace("survival", quietly = TRUE) &
requireNamespace("nbpMatching", quietly = TRUE)) {
library(dplyr, quietly = TRUE)
pairs <- coxpsmatch(
n_pairs = 13,
data = oasis,
id = "subject_id",
time = "visit",
trt_time = "time_of_ad"
)
na.omit(pairs)
# evaluate the first match
first_match <- pairs$subject_id[which(pairs$pair_id == 1)]
oasis %>% dplyr::filter(subject_id %in% first_match)
}