Performs an analysis of covariance between two groups returning the estimated "treatment effect" (i.e. the contrast between the two treatment groups) and the least square means estimates in each group.
Usage
ancova(
data,
vars,
visits = NULL,
weights = c("counterfactual", "equal", "proportional_em", "proportional")
)
Arguments
- data
A
data.frame
containing the data to be used in the model.- vars
A
vars
object as generated byset_vars()
. Only thegroup
,visit
,outcome
andcovariates
elements are required. See details.- visits
An optional character vector specifying which visits to fit the ancova model at. If
NULL
, a separate ancova model will be fit to the outcomes for each visit (as determined byunique(data[[vars$visit]])
). See details.- weights
Character, either
"counterfactual"
(default),"equal"
,"proportional_em"
or"proportional"
. Specifies the weighting strategy to be used when calculating the lsmeans. See the weighting section for more details.
Details
The function works as follows:
Select the first value from
visits
.Subset the data to only the observations that occurred on this visit.
Fit a linear model as
vars$outcome ~ vars$group + vars$covariates
.Extract the "treatment effect" & least square means for each treatment group.
Repeat points 2-3 for all other values in
visits
.
If no value for visits
is provided then it will be set to
unique(data[[vars$visit]])
.
In order to meet the formatting standards set by analyse()
the results will be collapsed
into a single list suffixed by the visit name, e.g.:
list(
trt_visit_1 = list(est = ...),
lsm_ref_visit_1 = list(est = ...),
lsm_alt_visit_1 = list(est = ...),
trt_visit_2 = list(est = ...),
lsm_ref_visit_2 = list(est = ...),
lsm_alt_visit_2 = list(est = ...),
...
)
Please note that "ref" refers to the first factor level of vars$group
which does not necessarily
coincide with the control arm. Analogously, "alt" refers to the second factor level of vars$group
.
"trt" refers to the model contrast translating the mean difference between the second level and first level.
If you want to include interaction terms in your model this can be done
by providing them to the covariates
argument of set_vars()
e.g. set_vars(covariates = c("sex*age"))
.
Weighting
Counterfactual
For weights = "counterfactual"
(the default) the lsmeans are obtained by
taking the average of the predicted values for each patient after assigning all patients
to each arm in turn.
This approach is equivalent to standardization or g-computation.
In comparison to emmeans
this approach is equivalent to:
Note that to ensure backwards compatibility with previous versions of rbmi
weights = "proportional"
is an alias for weights = "counterfactual"
.
To get results consistent with emmeans
's weights = "proportional"
please use weights = "proportional_em"
.
Equal
For weights = "equal"
the lsmeans are obtained by taking the model fitted
value of a hypothetical patient whose covariates are defined as follows:
Continuous covariates are set to
mean(X)
Dummy categorical variables are set to
1/N
whereN
is the number of levelsContinuous * continuous interactions are set to
mean(X) * mean(Y)
Continuous * categorical interactions are set to
mean(X) * 1/N
Dummy categorical * categorical interactions are set to
1/N * 1/M
In comparison to emmeans
this approach is equivalent to:
Proportional
For weights = "proportional_em"
the lsmeans are obtained as per weights = "equal"
except instead of weighting each observation equally they are weighted by the proportion
in which the given combination of categorical values occurred in the data.
In comparison to emmeans
this approach is equivalent to:
Note that this is not to be confused with weights = "proportional"
which is an alias
for weights = "counterfactual"
.