Date: 2025-11-26

# Analyzing Clinical Significance: The Anchor-Based Approach

#### 2025-11-26

## Introduction

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.

    library(clinicalsignificance)

## Individual-Level Analysis

At the individual level, we classify each participant based on whether their change score crosses the MID.

### A Basic Example

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”.

### Visualizing Individual Change

A clinical significance plot helps visualize these results. Each point represents a patient.

- Solid Diagonal Line: No change (`pre` = `post`). Points below this line represent improvement for the BDI-II.
- Shaded Area: The zone of “no meaningful change”. Its boundaries are `post = pre ± MID`.
- Points below the shaded area: Clinically significant improvement.
- Points above the shaded area: Clinically significant deterioration.

    plot(anchor_individual)
    #> Ignoring unknown labels:
    #> • colour : "Group"

### Analyzing by Group

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).

### Handling “Positive” Outcomes

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.

## Group-Level Analysis

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.

### Within-Group 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 effect

The 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.

### Between-Group Comparison

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 effect

The 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.

## Summary and Next Steps

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.

- Use `cs_anchor()` for individual-level analysis to classify each patient as improved, unchanged, or deteriorated.
- Use `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.