The anchor-based approach is one of the most intuitive methods for evaluating clinical significance. It answers a straightforward question: “Did the patient’s change on an outcome measure meet or exceed a predefined threshold for what is considered meaningful?”
This threshold is known as the Minimal Important Difference (MID). The MID is the smallest change in a score that patients perceive as beneficial. It serves as an external “anchor” to determine if an observed change is practically relevant.
This vignette will guide you through using the
cs_anchor() function to perform both individual- and
group-level analyses using this approach.
At the individual level, we classify each participant based on whether their change score crosses the MID.
We will use the claus_2020 dataset, which contains data
from a study on enhancing the placebo effect of antidepressants. The
primary outcome was the Beck Depression Inventory (BDI-II), where lower
scores indicate improvement. For the BDI-II, a change of 7
points is often considered the MID.
The claus_2020 dataset has four measurements per
patient. For a pre-post analysis, we must specify which time points to
compare using the pre and post arguments.
# Analyze individual change from the first to the fourth measurement
anchor_individual <- claus_2020 |>
cs_anchor(
id = id,
time = time,
outcome = bdi,
pre = 1,
post = 4,
mid_improvement = 7
)
# Print the summary table
anchor_individual
#>
#> ---- Clinical Significance Results ----
#>
#> Approach: Anchor-based
#> MID Improvement: 7
#> MID Deterioration: 7
#> Better is: Lower
#>
#> Category | N | Percent
#> ---------------------------
#> Improved | 25 | 62.50%
#> Unchanged | 11 | 27.50%
#> Deteriorated | 4 | 10.00%The output shows that 62.5% of patients were classified as “Improved” (their BDI-II score decreased by 7 points or more), 27.5% were “Unchanged”, and 10% “Deteriorated”.
A clinical significance plot helps visualize these results. Each point represents a patient.
pre =
post). Points below this line represent improvement for the
BDI-II.post = pre ± MID.The claus_2020 study included a Treatment as Usual (TAU)
group and a Placebo-Amplification (PA) group. We can analyze the
clinical significance for each group by specifying the
group argument.
anchor_grouped <- claus_2020 |>
cs_anchor(
id = id,
time = time,
outcome = bdi,
pre = 1,
post = 4,
mid_improvement = 7,
group = treatment
)
# Print results by group
summary(anchor_grouped)
#>
#> ---- Clinical Significance Results ----
#>
#> Approach: Anchor-based
#> MID Improvement: 7
#> MID Deterioration: 7
#> N (original): 43
#> N (used): 40
#> Percent (used): 93.02%
#> Better is: Lower
#> Outcome: bdi
#>
#> Group | Category | N | Percent | Percent by Group
#> ------------------------------------------------------
#> TAU | Improved | 8 | 20.00% | 42.11%
#> TAU | Unchanged | 7 | 17.50% | 36.84%
#> TAU | Deteriorated | 4 | 10.00% | 21.05%
#> PA | Improved | 17 | 42.50% | 80.95%
#> PA | Unchanged | 4 | 10.00% | 19.05%
#> PA | Deteriorated | 0 | 0.00% | 0.00%
# Plot results by group
plot(anchor_grouped)
The plot clearly shows that more patients in the PA group (yellow
points) achieved a clinically significant improvement compared to the
TAU group (blue points).
Some instruments measure constructs where higher scores are better
(e.g., quality of life). For these, we must set
better_is = "higher". Let’s analyze the who
(WHO-5 Well-Being Index) outcome from the same dataset, assuming an MID
of 4.
anchor_positive <- claus_2020 |>
cs_anchor(
id = id,
time = time,
outcome = who,
pre = 1,
post = 4,
mid_improvement = 4,
better_is = "higher"
)
plot(anchor_positive)
#> Ignoring unknown labels:
#> • colour : "Group"
Now, points above the shaded area represent clinically
significant improvement.
The anchor-based approach can also be applied at the group level to
determine if the average change for a group was clinically
meaningful. cs_anchor() uses a Bayesian framework by
default to generate a credible interval for the mean difference.
We set target = "group" to perform this analysis.
First, let’s assess the average change within each treatment group separately.
anchor_group_within <- claus_2020 |>
cs_anchor(
id = id,
time = time,
outcome = bdi,
pre = 1,
post = 4,
mid_improvement = 7,
target = "group",
group = treatment
)
anchor_group_within
#>
#> ---- Clinical Significance Results ----
#>
#> Approach: Anchor-based (within groups)
#> MID Improvement: 7
#> Better is: Lower
#>
#> Group | Median Difference | Lower | Upper | Ci Level | N | Category
#> ------------------------------------------------------------------------------------------------
#> TAU | -4.18 | -9.20 | 0.53 | 0.95 | 19 | Statistically not significant
#> PA | -13.60 | -18.22 | -9.04 | 0.95 | 21 | Large clinically significant effectThe results indicate that the TAU group’s change was not statistically significant, while the PA group showed a “Large clinically significant effect” because its entire 95% credible interval for the mean change was beyond the MID of -7.
Perhaps the most common use case is comparing the change in an
intervention group relative to a control group. We can do this by
setting effect = "between". The function will calculate the
difference in change scores between the groups.
anchor_group_between <- claus_2020 |>
cs_anchor(
id = id,
time = time,
outcome = bdi,
post = 4, # Only post is needed here, as we compare change scores
mid_improvement = 7,
target = "group",
group = treatment,
effect = "between"
)
anchor_group_between
#>
#> ---- Clinical Significance Results ----
#>
#> Approach: Anchor-based (between groups)
#> MID (Improvement): 7
#> Better is: Lower
#>
#> Group 1 | Group 2 | Median Difference | Lower | Upper | Ci Level | N 1 | N 2 | Category
#> ----------------------------------------------------------------------------------------------------------------------
#> TAU | PA | -10.32 | -18.31 | -2.65 | 0.95 | 19 | 21 | Probably clinically significant effectThe analysis shows a “Probably clinically significant effect” in favor of the PA group. The average difference between the groups exceeded the MID, but the MID was still within the 95% credible interval.
The anchor-based approach provides a highly interpretable assessment of meaningful change, but its use depends on having a well-established MID for your outcome measure.
cs_anchor() for individual-level
analysis to classify each patient as improved, unchanged, or
deteriorated.cs_anchor(target = "group") for
group-level analysis to assess if the average change
was meaningful.When an MID is not available, other methods are required. The next vignette explores the distribution-based approach, which assesses whether a change is statistically reliable and larger than what might be expected from measurement error alone.