View source: R/sensitivity_analysis_BinCont_copula.R
sensitivity_analysis_BinCont_copula | R Documentation |
Perform Sensitivity Analysis for the Individual Causal Association with a Continuous Surrogate and Binary True Endpoint
sensitivity_analysis_BinCont_copula(
fitted_model,
n_sim,
eq_cond_association = TRUE,
lower = c(-1, -1, -1, -1),
upper = c(1, 1, 1, 1),
marg_association = TRUE,
n_prec = 10000,
ncores = 1
)
fitted_model |
Returned value from |
n_sim |
Number of replications in the sensitivity analysis. This value should be large enough to sufficiently explore all possible values of the ICA. The minimally sufficient number depends to a large extent on which inequality assumptions are subsequently imposed (see Additional Assumptions). |
eq_cond_association |
Boolean.
|
lower |
(numeric) Vector of length 4 that provides the lower limit,
|
upper |
(numeric) Vector of length 4 that provides the upper limit,
|
marg_association |
Boolean.
|
n_prec |
Number of Monte-Carlo samples for the numerical approximation of the ICA in each replication of the sensitivity analysis. |
ncores |
Number of cores used in the sensitivity analysis. The computations are computationally heavy, and this option can speed things up considerably. |
A data frame is returned. Each row represents one replication in the sensitivity analysis. The returned data frame always contains the following columns:
R2H
, sp_rho
, minfo
: ICA as quantified by R^2_H
, Spearman's rho, and
Kendall's tau, respectively.
c12
, c34
: estimated copula parameters.
c23
, c13_2
, c24_3
, c14_23
: sampled copula parameters of the
unidentifiable copulas in the D-vine copula. The parameters correspond to
the parameterization of the copula_family2
copula as in the copula
R-package.
r12
, r34
: Fixed rotation parameters for the two identifiable copulas.
r23
, r13_2
, r24_3
, r14_23
: Sampled rotation parameters of the
unidentifiable copulas in the D-vine copula. These values are constant for
the Gaussian copula family since that copula is invariant to rotations.
The returned data frame also contains the following columns when
marg_association
is TRUE
:
sp_s0s1
, sp_s0t0
, sp_s0t1
, sp_s1t0
, sp_s1t1
, sp_t0t1
:
Spearman's rho between the corresponding potential outcomes. Note that these
associations refer to the observable potential outcomes. In contrary, the
estimated association parameters from fit_copula_model_BinCont()
refer to
associations on a latent scale.
The information-theoretic causal inference (ITCI) is a general framework to
evaluate surrogate endpoints in the single-trial setting (Alonso et al.,
2015). In this framework, we focus on the individual causal effects,
\Delta S = S_1 - S_0
and \Delta T = T_1 - T_0
where S_z
and T_z
are the potential surrogate end true endpoint under treatment
Z = z
.
In the ITCI framework, we say that S
is a good surrogate for T
if
\Delta S
conveys a substantial amount of information on \Delta T
(Alonso, 2018). This amount of shared information can generally be quantified
by the mutual information between \Delta S
and \Delta T
,
denoted by I(\Delta S; \Delta T)
. However, the mutual information lies
in [0, + \infty]
which complicates the interpretation. In addition,
the mutual information may not be defined in specific scenarios where
absolute continuity of certain probability measures fails. Therefore, the
mutual information is transformed, and possibly modified, to enable a simple
interpretation in light of the definition of surrogacy. The resulting measure
is termed the individual causal association (ICA). This is explained in
the next sections.
While the definition of surrogacy in the ITCI framework rests on information theory, shared information is closely related to statistical association. Hence, we can also define the ICA in terms of statistical association measures, like Spearman's rho and Kendall's tau. The advantage of the latter are that they are well-known, simple and rank-based measures of association.
Alonso et al. (na) proposed to the following measure for the ICA:
R^2_H
= \frac{I(\Delta S; \Delta T)}{H(\Delta T)}
where H(\Delta T)
is the
entropy of \Delta T
. By token of that transformation of the mutual
information, R^2_H
is restricted to the unit interval where 0 indicates
independence, and 1 a functional relationship between \Delta S
and
\Delta T
.
The association between \Delta S
and \Delta T
can also be
quantified by Spearman's \rho
(or Kendall's \tau
). This quantity
requires appreciably less computing time than the mutual information. This
quantity is therefore always returned for every replication of the
sensitivity analysis.
Because S_0
and S_1
are never simultaneously observed in the same
patient, \Delta S
is not observable, and analogously for \Delta
T
. Consequently, the ICA is unidentifiable. This is solved by considering a
(partly identifiable) model for the full vector of potential outcomes,
(T_0, S_0, S_1, T_1)'
. The identifiable parameters are estimated. The
unidentifiable parameters are sampled from their parameters space in each
replication of a sensitivity analysis. If the number of replications
(n_sim
) is sufficiently large, the entire parameter space for the
unidentifiable parameters will be explored/sampled. In each replication, all
model parameters are "known" (either estimated or sampled). Consequently, the
ICA can be computed in each replication of the sensitivity analysis.
The sensitivity analysis thus results in a set of values for the ICA. This set can be interpreted as all values for the ICA that are compatible with the observed data. However, the range of this set is often quite broad; this means there remains too much uncertainty to make judgements regarding the worth of the surrogate. To address this unwieldy uncertainty, additional assumptions can be used that restrict the parameter space of the unidentifiable parameters. This in turn reduces the uncertainty regarding the ICA.
The results of the sensitivity analysis can be formalized (and summarized) in
intervals of ignorance and uncertainty using sensitivity_intervals_Dvine()
.
There are two possible types of assumptions that restrict the parameter space of the unidentifiable parameters: (i) equality type of assumptions, and (ii) inequality type of assumptions. These are discussed in turn in the next two paragraphs.
The equality assumptions have to be incorporated into the sensitivity analysis itself. Only one type of equality assumption has been implemented; this is the conditional independence assumption:
\tilde{S}_0 \perp T_1 | \tilde{S}_1 \; \text{and} \;
\tilde{S}_1 \perp T_0 | \tilde{S}_0 .
This can informally be
interpreted as “what the control treatment does to the surrogate does not
provide information on the true endpoint under experimental treatment if we
already know what the experimental treatment does to the surrogate", and
analogously when control and experimental treatment are interchanged. Note
that \tilde{S}_z
refers to either the actual potential surrogate
outcome, or a latent version. This depends on the content of fitted_model
.
The inequality type of assumptions have to be imposed on the data frame that
is returned by the current function; those assumptions are thus imposed
after running the sensitivity analysis. If marginal_association
is set to
TRUE
, the returned data frame contains additional unverifiable quantities
that differ across replications of the sensitivity analysis: (i) the
unconditional Spearman's \rho
for all pairs of (observable/non-latent)
potential outcomes, and (ii) the proportions of the population strata as
defined by Nevo and Gorfine (2022) if semi-competing risks are present. More
details on the interpretation and use of these assumptions can be found in
Stijven et al. (2024).
# Load Schizophrenia data set.
data("Schizo_BinCont")
# Perform listwise deletion.
na = is.na(Schizo_BinCont$CGI_Bin) | is.na(Schizo_BinCont$PANSS)
X = Schizo_BinCont$PANSS[!na]
Y = Schizo_BinCont$CGI_Bin[!na]
Treat = Schizo_BinCont$Treat[!na]
# Ensure that the treatment variable is binary.
Treat = ifelse(Treat == 1, 1, 0)
data = data.frame(X,
Y,
Treat)
# Fit copula model.
fitted_model = fit_copula_model_BinCont(data, "clayton", "normal", twostep = FALSE)
# Perform sensitivity analysis with a very low number of replications.
sens_results = sensitivity_analysis_BinCont_copula(
fitted_model,
10,
lower = c(-1,-1,-1,-1),
upper = c(1, 1, 1, 1),
n_prec = 1e3
)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.