The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.

Crosswalk methods

Introduction

Crosswalk methods allow EQ-5D values to be estimated when a country-specific value set exists for one instrument version but not another. eq5dsuite implements three widely used approaches:

The two NICE DSU mappings are age- and sex-specific and cover the United Kingdom only. They are not the van Hout crosswalks: eqxwr() and eqxwr_UK() answer different questions and are not interchangeable.

When to use crosswalk methods

Use crosswalk methods when:

The current NICE position

NICE’s interim methods statement of 27 August 2026 (NICE, 2026; PMG51) takes the UK EQ-5D-5L value set (Rowen et al., 2026) as the reference case for topics started after that date – for technology appraisals, those whose invitation to participate was issued after it. Topics started earlier continue to map EQ-5D-5L data to EQ-5D-3L utility values (with eqxw_UK()). For new topics:

Original crosswalk: eqxw()

eq5d5l_data <- data.frame(
  id = 1:5,
  mo = c(1, 2, 3, 1, 2),
  sc = c(1, 1, 2, 1, 3),
  ua = c(2, 1, 3, 1, 2),
  pd = c(2, 3, 2, 1, 4),
  ad = c(1, 2, 1, 3, 2)
)

# Apply crosswalk using UK 3L value set
eq5d5l_data$value_xw <- eqxw(
  eq5d5l_data,
  country   = "GB",
  dim.names = c("mo", "sc", "ua", "pd", "ad")
)

eq5d5l_data
#>   id mo sc ua pd ad  value_xw
#> 1  1  1  1  2  2  1 0.7947687
#> 2  2  2  1  1  3  2 0.6829058
#> 3  3  3  2  3  2  1 0.6288650
#> 4  4  1  1  1  1  3 0.8480001
#> 5  5  2  3  2  4  2 0.3374945

Reverse crosswalk: eqxwr()

eq5d3l_data <- data.frame(
  id = 1:5,
  mo = c(1, 2, 1, 3, 2),
  sc = c(1, 1, 2, 2, 1),
  ua = c(1, 2, 1, 3, 2),
  pd = c(2, 2, 1, 3, 3),
  ad = c(1, 1, 2, 2, 1)
)

# Apply reverse crosswalk using Spain 5L value set
eq5d3l_data$value_rxw <- eqxwr(
  eq5d3l_data,
  country   = "ES",
  dim.names = c("mo", "sc", "ua", "pd", "ad")
)

eq5d3l_data
#>   id mo sc ua pd ad   value_rxw
#> 1  1  1  1  1  2  1  0.90095476
#> 2  2  2  1  2  2  1  0.73260937
#> 3  3  1  2  1  1  2  0.81044151
#> 4  4  3  2  3  3  2 -0.04655332
#> 5  5  2  1  2  3  1  0.54478451

NICE DSU mapping, 5L to 3L: eqxw_UK()

Both NICE DSU mappings require age and sex in addition to the five EQ-5D dimensions. Age is used in years and grouped into five bands (16–34, 35–44, 45–54, 55–64, 65 and over); sex is 1 for male and 0 for female.

uk_data <- data.frame(
  id   = 1:5,
  mo   = c(1, 2, 1, 3, 2),
  sc   = c(1, 1, 2, 2, 1),
  ua   = c(1, 2, 1, 3, 2),
  pd   = c(2, 2, 1, 3, 3),
  ad   = c(1, 1, 2, 2, 1),
  age  = c(45, 62, 38, 71, 55),
  male = c(1,  0,  1,  0,  1)
)

uk_data$value_uk <- eqxw_UK(
  uk_data,
  age  = "age",
  male = "male"
)

uk_data
#>   id mo sc ua pd ad age male  value_uk
#> 1  1  1  1  1  2  1  45    1 0.8637525
#> 2  2  2  1  2  2  1  62    0 0.7420881
#> 3  3  1  2  1  1  2  38    1 0.8471943
#> 4  4  3  2  3  3  2  71    0 0.5306411
#> 5  5  2  1  2  3  1  55    1 0.6685958

NICE DSU mapping, 3L to 5L: eqxwr_UK()

When only EQ-5D-3L data are available, eqxwr_UK() maps them so they can be valued on the UK EQ-5D-5L value set:

uk3l <- data.frame(
  id   = 1:5,
  mo   = c(1, 2, 1, 3, 2),
  sc   = c(1, 1, 2, 2, 1),
  ua   = c(1, 2, 1, 3, 2),
  pd   = c(2, 2, 1, 3, 3),
  ad   = c(1, 1, 2, 2, 1),
  age  = c(45, 62, 38, 71, 55),
  male = c(1,  0,  1,  0,  1)
)

uk3l$value_uk5l <- eqxwr_UK(uk3l, age = "age", male = "male")

uk3l
#>   id mo sc ua pd ad age male  value_uk5l
#> 1  1  1  1  1  2  1  45    1  0.92506034
#> 2  2  2  1  2  2  1  62    0  0.79902655
#> 3  3  1  2  1  1  2  38    1  0.86239329
#> 4  4  3  2  3  3  2  71    0 -0.08121815
#> 5  5  2  1  2  3  1  55    1  0.56006048

Mapping a mean value

Both functions also accept an EQ-5D value instead of a health state, for mapping a mean reported in a published study. There is no unique health state behind a mean, so the result is a kernel-weighted average of the mapped values of nearby states. bwidth = "default" applies the DSU’s recommended bandwidths for mean values: 0.1 for values above 0.6, and 0.4 for values at or below 0.6.

# a mean EQ-5D-3L value of 0.54 in women aged 35
eqxwr_UK(0.54, age = 35, male = 0, bwidth = "default")
#> [1] 0.7005354

# the bandwidth matters: a narrower one weights fewer states
eqxwr_UK(0.54, age = 35, male = 0, bwidth = 0.1)
#> [1] 0.746695

This input is not intended for individual-level data. Map individual respondents from their health states, as above.

Crosswalk compatibility with custom value sets

All crosswalk functions are compatible with custom value sets added via eqvs_add(). The mapping and valuation steps are independent, so any compatible value set can be used without modification.

References

van Hout B, et al. (2012). Interim scoring for the EQ-5D-5L. Value in Health, 15(5), 708–715.

van Hout B, Shaw JW (2021). Mapping EQ-5D-3L to EQ-5D-5L. Value in Health, 24(9), 1285–1293.

Hernández Alava M, Pudney S, Wailoo A (2023). Estimating the relationship between EQ-5D-5L and EQ-5D-3L: results from a UK population study. PharmacoEconomics, 41(2), 199–207.

Rowen D, Mukuria C, Bray N, et al. (2026). A UK value set for the EQ-5D-5L. Value in Health, 29(5), 858–869.

National Institute for Health and Care Excellence (2026). Interim methods statement: implementing the EQ-5D-5L value set (PMG51). Published 27 August 2026. https://www.nice.org.uk/process/pmg51

These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.