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