It has been demonstrated by Wailoo et al that EQ-5D-3L and EQ-5D-5L value changes in health differently. In order to enable bidirectional comparison between EQ-5D-3L and EQ-5D-5L datasets the NICE Decision Support Unit at the University of Sheffield has produced their “EEPRU” models that can be used to map data between EQ-5D versions and can be used on health states, utility scores calculated using a value set or approximate (summarised) utility scores. In the UK NICE have stated that this is the method that should be used for UK reference-case analyses instead of the 2018 EQ‑5D‑5L value set for England published by Devlin et al. This vignette demonstrates how to map scores between EQ-5D-3L and EQ-5D-5L using the eq5d package.

Available value sets

The available “DSU” value sets can be viewed using the valuesets function. The results can be filtered by EQ-5D version or by country.

  library(eq5d)

  # DSU EQ-5D-5L to EQ-5D-3L UK value set
  valuesets(version = "5L", type = "DSU", country = "UK")
##    Version Type Country   PubMed                        DOI ISBN
## 1 EQ-5D-5L  DSU      UK 36449173 10.1007/s40273-022-01218-7 <NA>
##                                                                    ExternalURL
## 1 https://www.sheffield.ac.uk/nice-dsu/methods-development/mapping-eq-5d-5l-3l
  ## All DSU EQ-5D-5L to EQ-5D-3L value sets
  valuesets(version = "5L", type = "DSU")
##    Version Type     Country   PubMed                        DOI ISBN
## 1 EQ-5D-5L  DSU       China       NA                       <NA> <NA>
## 2 EQ-5D-5L  DSU     Germany       NA                       <NA> <NA>
## 3 EQ-5D-5L  DSU       Japan       NA                       <NA> <NA>
## 4 EQ-5D-5L  DSU Netherlands       NA                       <NA> <NA>
## 5 EQ-5D-5L  DSU  SouthKorea       NA                       <NA> <NA>
## 6 EQ-5D-5L  DSU       Spain       NA                       <NA> <NA>
## 7 EQ-5D-5L  DSU          UK 36449173 10.1007/s40273-022-01218-7 <NA>
##                                                                    ExternalURL
## 1 https://www.sheffield.ac.uk/nice-dsu/methods-development/mapping-eq-5d-5l-3l
## 2 https://www.sheffield.ac.uk/nice-dsu/methods-development/mapping-eq-5d-5l-3l
## 3 https://www.sheffield.ac.uk/nice-dsu/methods-development/mapping-eq-5d-5l-3l
## 4 https://www.sheffield.ac.uk/nice-dsu/methods-development/mapping-eq-5d-5l-3l
## 5 https://www.sheffield.ac.uk/nice-dsu/methods-development/mapping-eq-5d-5l-3l
## 6 https://www.sheffield.ac.uk/nice-dsu/methods-development/mapping-eq-5d-5l-3l
## 7 https://www.sheffield.ac.uk/nice-dsu/methods-development/mapping-eq-5d-5l-3l


Mapping health states from EQ-5D-5L to EQ-5D-3L

As with standard value sets, the eq5d function can map states as individual dimensions or as five digit scores. However, the models developed also require age and sex to be provided in addition to the responses of the EQ-5D instrument. As with the original Stata code age can be provided in two ways, either in years or as an age category. The age categories range from 1 to 5 where 1 = 18-34, 2 = 35-44, 3 = 45-54, 4 = 55-64 and 5 = 65-100. There will be no difference in results whether, for example, an age of 47 or the age category “3” is used. The sex parameter should be provided as “Male”, “Female”, “M” or “F” and is case insensitive.


Mapping single states
# Using age in years and sex as "m"
eq5d(c(MO=1, SC=2, UA=3, PD=4, AD=5), type = "DSU", country = "UK", age = 43, version = "5L", sex = "m")
## [1] 0.065
# Using an age category and sex as "Male"
eq5d(12345, type = "DSU", country = "UK", age = 2, version = "5L", sex = "Male")
## [1] 0.065


Mapping multiple states
# get states and create data.frame
set.seed(12345)
dat1 <- data.frame(State = sample(get_all_health_states("5L"), 10), 
                   Age = sample(18:100, 10), 
                   Sex = sample(c("M","F"), replace = TRUE, 10))

print(dat1)
##    State Age Sex
## 1  43335  19   F
## 2  11311  92   F
## 3  21445  55   F
## 4  21515  27   F
## 5  25544  49   F
## 6  52432  57   M
## 7  22411  56   M
## 8  15515  98   F
## 9  52125  47   M
## 10 44134  18   F
eq5d(dat1, version="5L", type="DSU", country="UK")
##  [1]  0.081  0.894  0.026  0.260 -0.137  0.360  0.684 -0.097  0.186  0.155


Mapping utility values from the 2018 EQ‑5D‑5L value set for England

Mapping utility scores that have been calculated using a standard value set between EQ-5D versions is performed in a similar way to mapping health states with the health state simply being substituted for the utility score.

# Using utility score 0.322 (score for state 12345), an age category and sex as "Male"
eq5d(0.322, type = "DSU", country = "UK", age = 2, version = "5L", sex = "Male")
## [1] 0.235
# Multiple states

# create data.frame of utility scores using the 2018 EQ-5D-5L value set for England for the states in dat1
dat2 <- data.frame(Utility = eq5d(dat1$State, version = "5L", type = "VT", country = "England"), 
                   Age = dat1$Age,
                   Sex = dat1$Sex)
                   
print(dat2)
##    Utility Age Sex
## 1    0.277  19   F
## 2    0.937  92   F
## 3    0.215  55   F
## 4    0.469  27   F
## 5   -0.006  49   F
## 6    0.352  57   M
## 7    0.730  56   M
## 8    0.324  98   F
## 9    0.324  47   M
## 10   0.260  18   F
eq5d(dat2, version="5L", type="DSU", country="UK")
##  [1]  0.127  0.880  0.026  0.283 -0.138  0.318  0.684  0.130  0.169  0.155


Mapping approximate/summarised utility values

If approximate or summarised utility scores are being mapped, a bandwidth parameter needs to be provided in addition to the age and sex parameters. The bandwidth parameter specifies the neighbourhood and the rate at which the weight declines with distance. It is possible to provide a single bandwidth score that can be applied to all utility scores in a dataset. However, the DSU specify that bandwidth scores should be < 0.8: 0.2, 0.8-0.951: 0.1, 0.951-1: small, but large enough to include 1. Individual bandwidth scores can be provided by a bwidth column containing the scores. For more information please view the tutorial on the NICE DSU website.

# Get all utility scores from 2018 EQ‑5D‑5L value set for England 
exist.utils <- unique(DSU5L$UK)
min <- min(DSU5L$UK)
max <- max(DSU5L$UK)

# calculate range of values between min and max
poss.utils <- seq(from=min, to=max, by=0.001)

# create data.frame of 10 utility scores that aren't in the 2018 EQ‑5D‑5L value set for England 
set.seed(54321)
dat3 <- data.frame(Utility = sample(poss.utils[which(!poss.utils %in% exist.utils)], 10),
                   Age = sample(18:100, 10), 
                   Sex = sample(c("M","F"), replace = TRUE, 10))

print(dat3)
##    Utility Age Sex
## 1    0.685  84   F
## 2    0.876  68   F
## 3    0.738  72   F
## 4    0.373  70   F
## 5    0.904  80   M
## 6    0.666  49   F
## 7    0.098  90   F
## 8    0.418  73   F
## 9    0.701  99   F
## 10   0.997  91   F
# map scores using a single bandwidth value for all scores
eq5d(dat3, version="5L", type="DSU", country="UK", bwidth=0.2)
##  [1]  0.563  0.717  0.616  0.203  0.736  0.541 -0.071  0.253  0.580  0.801
# add bwidth column with values based on the DSU recommendations
dat3$bwidth <- c(0.2, 0.1, 0.2, 0.2, 0.1, 0.2, 0.2, 0.2, 0.2, 0.01)

eq5d(dat3, version="5L", type="DSU", country="UK")
##  [1]  0.563  0.764  0.616  0.203  0.792  0.541 -0.071  0.253  0.580  0.988

Differences can be observed in the 2nd, 5th, and 10th mapped scores where the DSU guidelines are followed for the bandwidth value rather than a single value of 0.2 for all utility score.