Description Usage Arguments Value References Examples
Perform principled development of a treatment rule (using the IPW approach to account for potential confounding) on a development dataset (i.e. training set) that is independent of datasets used for model selection (i.e. validation set) and rule evaluation (i.e. test set).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | BuildRule(
development.data,
study.design,
prediction.approach,
name.outcome,
type.outcome,
name.treatment,
names.influencing.treatment = NULL,
names.influencing.rule,
desirable.outcome,
rule.method = NULL,
propensity.method,
additional.weights = rep(1, nrow(development.data)),
truncate.propensity.score = TRUE,
truncate.propensity.score.threshold = 0.05,
type.observation.weights = NULL,
propensity.k.cv.folds = 10,
rule.k.cv.folds = 10,
lambda.choice = c("min", "1se"),
OWL.lambda.seq = NULL,
OWL.kernel = "linear",
OWL.kparam.seq = NULL,
OWL.cvFolds = 10,
OWL.verbose = TRUE,
OWL.framework.shift.by.min = TRUE,
direct.interactions.center.continuous.Y = TRUE,
direct.interactions.exclude.A.from.penalty = TRUE
)
|
development.data |
A data frame representing the *development* dataset (i.e. training set) used for building a treatment rule. |
study.design |
Either ‘observational’, ‘RCT’, or ‘naive’. For the |
prediction.approach |
One of ‘split.regression’, ‘direct.interactions’, ‘OWL’, or ‘OWL.framework’. |
name.outcome |
A character indicating the name of the outcome variable in |
type.outcome |
Either ‘binary’ or ‘continuous’, the form of |
name.treatment |
A character indicating the name of the treatment variable in |
names.influencing.treatment |
A character vector (or single element) indicating the names of the variables in |
names.influencing.rule |
A character vector (or single element) indicating the names of the variables in |
desirable.outcome |
A logical equal to |
rule.method |
One of ‘glm.regression’, ‘lasso’, or ‘ridge’. For |
propensity.method |
One of ‘logistic.regression’, ‘lasso’, or ‘ridge’. This is the underlying regression model used to estimate propensity scores for |
additional.weights |
A numeric vector of observation weights that will be multiplied by IPW weights in the rule development stage, with length equal to the number of rows in |
truncate.propensity.score |
A logical variable dictating whether estimated propensity scores less than |
truncate.propensity.score.threshold |
A numeric value between 0 and 0.25. |
type.observation.weights |
Default is NULL, but other choices are ‘IPW.L’, ‘IPW.L.and.X’, and ‘IPW.ratio’, where L indicates |
propensity.k.cv.folds |
An integer specifying how many folds to use for K-fold cross-validation that chooses the tuning parameters when |
rule.k.cv.folds |
An integer specifying how many folds to use for K-fold cross-validation that chooses the tuning parameter when |
lambda.choice |
Either ‘min’ or ‘1se’, corresponding to the |
OWL.lambda.seq |
Used when |
OWL.kernel |
Used when |
OWL.kparam.seq |
Used when |
OWL.cvFolds |
Used when |
OWL.verbose |
Used when |
OWL.framework.shift.by.min |
Logical, set to |
direct.interactions.center.continuous.Y |
Logical, set to |
direct.interactions.exclude.A.from.penalty |
Logical, set to |
A list with some combination of the following components (depending on specified prediction.approach
)
type.outcome
: The type.outcome
specified above (used by other functions that are based on BuildRule()
)
prediction.approach
: The prediction.approach
specified above (used by other functions that are based on BuildRule()
)
rule.method
: The rule.method
specified above (used by other functions that are based on BuildRule()
)
lambda.choice
: The lambda.choice
specified above (used by other functions that are based on BuildRule()
)
propensity.score.object
: A list containing the relevant regression object from propensity score estimation. The list has two elements for type.observation.weights=
‘IPW.ratio’ (the default for prediction.approach=
‘split.regression’), has one element for type.observation.weights=
‘IPW.L’ (the default for ‘OWL’, ‘OWL.framework’ and ‘direct.interactions’), has one element when type.observation.weights=
‘IPW.L.and.X’, and is simply equal to NA if study.design=
‘RCT’ (in which case propensity score would just be the inverse of sample proportion receiving treatment).
owl.object
: For prediction.approach=
‘OWL’ only, the object returned by the owl()
function in the DynTxRegime
package.
observation.weights
: The observation weights used for estimating the treatment rule
rule.object
: For prediction.approach=
‘OWL.framework’ or prediction.approach=
‘direct.interactions’, the regression object returned from treatment rule estimation (to which the coef()
function could be applied, for example)
rule.object.control
: For prediction.approach=
‘split.regression’ the regression object returned from treatment rule estimation (to which the coef()
function could be applied, for example) that estimates the outcome variable for individuals who do not receive treatment.
rule.object.treatment
: For prediction.approach=
‘split.regression’ the regression object returned from treatment rule estimation (to which the coef()
function could be applied, for example) that estimates the outcome variable for individuals who do receive treatment.
Yingqi Zhao, Donglin Zeng, A. John Rush & Michael R. Kosorok (2012) Estimating individualized treatment rules using outcome weighted learning. Journal of the American Statistical Association, 107:499 1106–1118.
Shuai Chen, Lu Tian, Tianxi Cai, Menggang Yu (2017) A general statistical framework for subgroup identification and comparative treatment scoring. Biometrics, 73:4: 1199–1209.
Lu Tian, Ash A. Alizadeh, Andrew J. Gentles, Robert Tibshirani (2014) A simple method for estimating interactions between a treatment and a large number of covariates. Journal of the American Statistical Association, 109:508: 1517–1532.
Jeremy Roth and Noah Simon (2019). Using propensity scores to develop and evaluate treatment rules with observational data (Manuscript in progress)
Jeremy Roth and Noah Simon (2019). Elucidating outcome-weighted learning and its comparison to split-regression: direct vs. indirect methods in practice. (Manuscript in progress)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | set.seed(123)
example.split <- SplitData(data=obsStudyGeneExpressions,
n.sets=3, split.proportions=c(0.5, 0.25, 0.25))
development.data <- example.split[example.split$partition == "development",]
one.rule <- BuildRule(development.data=development.data,
study.design="observational",
prediction.approach="split.regression",
name.outcome="no_relapse",
type.outcome="binary",
desirable.outcome=TRUE,
name.treatment="intervention",
names.influencing.treatment=c("prognosis", "clinic", "age"),
names.influencing.rule=c("age", paste0("gene_", 1:10)),
propensity.method="logistic.regression",
rule.method="glm.regression")
coef(one.rule$rule.object.control)
coef(one.rule$rule.object.treatment)
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.