Repeats
fit_solomon_mi() over a range of offsets added to the imputed
posttests of chosen Solomon groups, and reports the smallest offset in
each direction at which the conclusion about a contrast changes. White et
al. (2011, "Perform Sensitivity Analyses" section, para. 1) suggest
reporting "how large an amount should be added to or
subtracted from imputed outcomes" without changing the interpretation, and
Little et al. (2012, p. 1358) call a finding robust if it holds over the
plausible offsets.
Usage
tipping_point_solomon(
y_post,
treat,
pretested,
y_pre = NULL,
contrast = "ATE (avg over pretest)",
groups = "all",
deltas = NULL,
alpha = 0.05,
m = 100,
robust = c("HC3", "none"),
seed = NULL,
data = NULL
)Arguments
- y_post
Numeric posttest scores, with
NAfor missing posttests.- treat
Treatment indicator coded 0/1 (or logical). Designs with several treatments are not supported; see
fit_solomon_glm().- pretested
Pretest indicator coded 0/1 (or logical).
- y_pre
Optional numeric pretest scores, missing by design for unpretested participants.
- contrast
The Solomon contrast to follow. Default is the average treatment effect.
- groups
The groups whose imputed posttests are shifted:
"all"(default),"treatment","control","pretested","unpretested", or group numbers (1 pretested treatment, 2 pretested control, 3 unpretested treatment, 4 unpretested control).- deltas
Offsets to try, on the posttest scale. The default is 21 values from -1 to 1 pooled within-group standard deviations of the observed posttests. Zero is always included.
- alpha
Significance level that defines the conclusion. Default 0.05.
- m
Number of imputations for each offset. Default 100.
- robust
Covariance for each completed-data analysis:
"HC3"(default) or"none"; seefit_solomon_glm().- seed
Optional random-number seed. When
NULL, one is drawn so that every offset uses the same imputations.- data
Optional data frame. When supplied, the other data arguments are looked up in it first, as bare column names (
y_post = post) or as strings (y_post = "post").
Value
An object of class solomon_tipping with results (one row per
offset: the offset in posttest units and in standard deviations, and
the pooled estimate, interval, and p-value), tipping (the smallest
negative and positive offsets at which the conclusion differs from the
one under MAR, NA when it does not change within the range), and the
settings used.
Details
Which groups. Offsets confined to some groups test different
departures from missing at random. Offsets in the treatment groups
(groups = "treatment") bear on the treatment effect. Offsets that differ
between the pretested and unpretested groups, for example in the
pretested treatment group alone (groups = 1), bear on the sensitization
contrast.
Common random numbers. Every offset uses the same imputation draws,
so the estimates change smoothly with the offset. The location of the
tipping point still carries Monte Carlo error from the imputations: in
the worked example on mai2020, the tipping point for sensitization
ranged from 0.1 to 0.5 standard deviations across seeds with 100
imputations and was 0.3 with 2,000. Before reporting a tipping point,
increase m or compare a few seeds.
Lifecycle
Experimental, with fit_solomon_mi(), whose validation study it shares.
References
Little, R. J., D'Agostino, R., Cohen, M. L., Dickersin, K., Emerson, S. S., Farrar, J. T., Frangakis, C., Hogan, J. W., Molenberghs, G., Murphy, S. A., Neaton, J. D., Rotnitzky, A., Scharfstein, D., Shih, W. J., Siegel, J. P., & Stern, H. (2012). The prevention and treatment of missing data in clinical trials. The New England Journal of Medicine, 367(14), 1355–1360. https://doi.org/10.1056/NEJMsr1203730
White, I. R., Horton, N. J., Carpenter, J., & Pocock, S. J. (2011). Strategy for intention to treat analysis in randomised trials with missing outcome data. BMJ, 342, Article d40. https://doi.org/10.1136/bmj.d40
Examples
d <- solomon_example
set.seed(82)
d$y_post[sample(nrow(d), 20)] <- NA
tipping_point_solomon(y_post, treat, pretested, y_pre, groups = "treatment",
deltas = seq(-10, 10, by = 2.5), m = 10, seed = 1, data = d)
#> Tipping-point analysis for missing posttests (m = 10 per offset)
#> Contrast: ATE (avg over pretest)
#> Offsets added to imputed posttests in: pretested treatment, unpretested treatment
#> Offset scale: pooled within-group SD of observed posttests = 9.3
#>
#> Offset Offset (SD) Estimate 95% CI p
#> -10.0 -1.08 1.373 [-1.960, 4.706] 0.416
#> -7.5 -0.81 1.706 [-1.581, 4.992] 0.306
#> -5.0 -0.54 2.038 [-1.216, 5.293] 0.217
#> -2.5 -0.27 2.371 [-0.866, 5.608] 0.149
#> 0.0 0.00 2.704 [-0.531, 5.938] 0.100
#> 2.5 0.27 3.036 [-0.211, 6.284] 0.067
#> 5.0 0.54 3.369 [ 0.094, 6.644] 0.044
#> 7.5 0.81 3.702 [ 0.385, 7.019] 0.029
#> 10.0 1.08 4.034 [ 0.661, 7.408] 0.020
#>
#> Under MAR (offset 0): p = 0.100, not significant at alpha = 0.05.
#> No change in the conclusion over the negative offsets tried.
#> The conclusion changes at an offset of 5 (0.54 SD).