健康関連QoL

『保健医療科学』 第53巻 第3号 (2004年9月) 特集:保健医療分野におけるQOL研究の現状 https://www.niph.go.jp/journal/data/53-3/j53-3.html

非特異的 HRQoL

EQ-5D は、広く用いられている健康関連QoL質問紙です。 健康関連Qolを、1(健康)から0(死亡)までの小数値で表します。 なお、死より悪い状態はマイナスになります。

EQ-5D は、国によって計算式が異なります。 また、質問を3段階にした EQ-5D-3L と、5段階にした EQ-5D-5L など、いくつかのバリエーションがあります。 質問数自体は5個と少なく、mobility, self-care, usual activites, pain/discomfort and anxiety/depression を聞きます。

  • 移動の程度
    • 私は歩き回るのに問題はない ・・・1
    • 私は歩き回るのにいくらか問題がある ・・・2
    • 私はベッド(床)に寝たきりである ・・・3
  • 身の回りの管理
    • 私は身の回りの管理に問題はない ・・・1
    • 私は洗面や着替えを自分でするのにいくらか問題がある ・・・2
    • 私は洗面や着替えを自分でできない ・・・3
  • ふだんの活動(例:仕事、勉強、家族・余暇活動)
    • 私はふだんの活動を行うのに問題はない ・・・1
    • 私はふだんの活動を行うのにいくらか問題がある ・・・2
    • 私はふだんの活動を行うことができない ・・・3
  • 痛み/不快感
    • 私は痛みや不快感はない ・・・1
    • 私は中程度の痛みや不快感がある ・・・2
    • 私はひどい痛みや不快感がある ・・・3
  • 不安/ふさぎ込み
    • 私は不安でもふさぎ込んでもいない ・・・1
    • 私は中程度に不安あるいはふさぎ込んでいる ・・・2
    • 私はひどく不安あるいはふさぎ込んでいる ・・・3

イギリスで、3L で、mobility = 1, self-care =2, usual activities = 3, pain/discomfot = 2, anxiety/depression = 1 のとき、

library(eq5d)
eq5d(scores=12321, country="UK", version="3L", type="TTO")
## [1] 0.329

となり、EQ-5D値は 0.329 であることがわかります。 日本であれば、どうでしょうか。

library(eq5d)
eq5d(scores=12321, country="Japan", version="3L", type="TTO")
## [1] 0.581

0.581 であり、同じ回答でも日本の方がQOLが高めになっています。

なお、EQ-5D に限りませんが、数値は個人に直接当てはまるわけではなく、臨床に使うものではありません。

使用例

  • Williams A, Rushton A, Lewis JJ & Phillips C (2019) Evaluation of the clinical effectiveness of a work-based mentoring programme to develop clinical reasoning on patient outcome: A stepped wedge cluster randomised controlled trial. PloS one, 14(7), e0220110.

Data: https://figshare.com/s/cbd137213b638b69a2d0, 441人

https://ndownloader.figshare.com/files/14206487?private_link=cbd137213b638b69a2d0

library(readr)

dfEq5d <- read_csv("https://ndownloader.figshare.com/files/14206487?private_link=cbd137213b638b69a2d0")
## 
## ─ Column specification ────────────────────────────
## cols(
##   .default = col_double(),
##   PatientID = col_character(),
##   FA1_Date = col_character(),
##   FA1_Ethnicity_Other = col_character(),
##   FA1_Oreb_b = col_character()
## )
## ℹ Use `spec()` for the full column specifications.
names(dfEq5d)[199] <- "MO"
names(dfEq5d)[200] <- "SC"
names(dfEq5d)[201] <- "UA"
names(dfEq5d)[202] <- "PD"
names(dfEq5d)[203] <- "AD"

dfEq5d$EQ5D <- eq5d(dfEq5d, country = "UK", version = "3L", type = "TTO", ignore.invalid = TRUE)
cor.test(dfEq5d$FU_EQ5DIndex,dfEq5d$EQ5D)
## 
##  Pearson's product-moment correlation
## 
## data:  dfEq5d$FU_EQ5DIndex and dfEq5d$EQ5D
## t = 24.137, df = 261, p-value < 2.2e-16
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  0.7894280 0.8650364
## sample estimates:
##       cor 
## 0.8310323

関数

  • read_csv: readr ライブラリの関数。CSV を読み込み、データフレームとして返す。
  • names: 基本関数。データフレームの列名を返す。ここでは、列名を変更した。
  • eq5d: eq5d ライブラリの関数。
  • cor.test: stats ライブラリの関数。相関係数を返す。

その他の EQ-5D ライブラリに、valueEQ5D があります。

がん特異的 HRQoL

ライブラリ: QoLR, PROscorer

  • McKernan M, McMillan DC, Anderson JR, Angerson WJ & Stuart RC (2008) The relationship between quality of life (EORTC QLQ-C30) and survival in patients with gastro-oesophageal cancer. British Journal of Cancer, 98(5), 888-893. [Open Access] (EORTC-QLQ-C30 を使用した研究)

  • Kim S, François E, André T, Samalin E et al. (2018) Docetaxel, cisplatin, and fluorouracil chemotherapy for metastatic or unresectable locally recurrent anal squamous cell carcinoma (Epitopes-HPV02): a multicentre, single-arm, phase 2 study. The Lancet Oncology, 19(8), 1094-1106. QoLR

Patient-Reported Outcome

ライブラリ: PROscorer, PROscorerTools, PROreg, PROsetta, ProAE

QALY

QOL で調整された寿命 (Quality Adjusted Life Year, QALY, 「クオリー」と発音)で評価します。 これは、QOL が最も高い状態を1、死亡した状態を0として調整した寿命です。 例えば、寝たきりというのを QOL=0.2とすると、 「寝たきりの状態で10年生きる」ことは 0.2 x 10 = 2 QALY で、 「元気に5年生きてコロリと亡くなる」ことは、 1 x 5 = 5 QALY となります。

下記の表のような3種類の医療技術があるとします。

QALY 費用 増分効果 増分費用 ICER
既存 1 50
新A 1.5 200 0.5 150 300
新B 2 150 1 100 100

費用の単位は (万円)、ICERの単位は(万円/QALY)

厚生労働省 (2013) 医療経済評価研究における分析手法に関するガイドライン (ver 1.0 2013年3月29日)

各国のICER閾値

  • 米国: 10万ドル/QALY〜15万ドル/QALY
  • 英国: 2万ポンド/QALY〜3万ポンド/QALY
  • 日本: 500万円/QALY〜600万円/QALY

MCID

介入等により何らかのアウトカムが改善し、それが統計学的に有意であっても臨床的に意味があるとは限らない。 そこで、Jaeschke et al は、臨床的に意味のある差 (Minimal Clinically Important Difference, MCID) という概念を提唱した。

MCID の予測方法としては、(なぜか)統計学的な Distribution 法と、「QOL が改善するほどアウトカムが改善した」など、他の指標 (anchor) を

Method MID calculation
SEM SD\(_{baseline}\) * sqrt (1-ICC)
Empirical rule effect size 0.08 * 6 * SD\(_{Δ}\)
Cohen’s effect size 0.5 * SD\(_{Δ}\)
0.5 times SD 0.5 * SD\(_{baseline}\)

ライブラリ

  • MRQoL
  • MCID (github)

関数

  • stat_MCID(score_1, score_2, X):
    • score_1 = 介入「後」
    • score_2 = 介入「前」
    • c: anchor
devtools::install_github("zzhou0721/MCID")
## Skipping install of 'MCID' from a github remote, the SHA1 (894eb762) has not changed since last install.
##   Use `force = TRUE` to force installation

https://github.com/zzhou0721/MCID

ウェブを使ったデータ収集

library(googlesheets4, warn.conflicts = FALSE, quietly = FALSE)
gs4_auth()
## → Using an auto-discovered, cached token
##   To suppress this message, modify your code or options to clearly consent to
##   the use of a cached token
##   See gargle's "Non-interactive auth" vignette for more details:
##   <https://gargle.r-lib.org/articles/non-interactive-auth.html>
## → The googlesheets4 package is using a cached token for
## 'baba.yoshihiko@gmail.com'
dfEq5dFromGoogle <- read_sheet(
  ss = "1X2eW5y8eU0t2fo3nU18iEAnUvZ_hAA5KGv3xwFxByK4"
  )
## Reading from "EQ-5D 3L(回答)"
## Range "フォームの回答 1"
datatable(dfEq5dFromGoogle)
dfEq5dFromGoogle[is.na(dfEq5dFromGoogle)] <- 0

dfEq5dFromGoogle$MO <- as.integer(0)

  dfEq5dFromGoogle[dfEq5dFromGoogle$移動の程度 == "私は歩き回るのに問題はない", "MO"] <- 1
  dfEq5dFromGoogle[dfEq5dFromGoogle$移動の程度 == "私は歩き回るのにいくらか問題がある", "MO"] <- 2
  dfEq5dFromGoogle[dfEq5dFromGoogle$移動の程度 == "私はベッド(床)に寝たきりである", "MO"] <- 3

dfEq5dFromGoogle$SC <- as.integer(0)

  dfEq5dFromGoogle[dfEq5dFromGoogle$身の回りの管理 == "私は身の回りの管理に問題はない", "SC"] <- 1
  dfEq5dFromGoogle[dfEq5dFromGoogle$身の回りの管理 == "私は洗面や着替えを自分でするのにいくらか問題がある", "SC"] <- 2
  dfEq5dFromGoogle[dfEq5dFromGoogle$身の回りの管理 == "私は洗面や着替えを自分でできない", "SC"] <- 3



dfEq5dFromGoogle$UA <- as.integer(0)

  dfEq5dFromGoogle[dfEq5dFromGoogle$ふだんの活動 == "私はふだんの活動を行うのに問題はない", "UA"] <- 1
  dfEq5dFromGoogle[dfEq5dFromGoogle$ふだんの活動 == "私はふだんの活動を行うのにいくらか問題がある", "UA"] <- 2
  dfEq5dFromGoogle[dfEq5dFromGoogle$ふだんの活動 == "私はふだんの活動を行うことができない", "UA"] <- 3



dfEq5dFromGoogle$PD <- as.integer(0)
  dfEq5dFromGoogle[dfEq5dFromGoogle$"痛み/不快感" == "私は痛みや不快感はない", "PD"] <- 1
  dfEq5dFromGoogle[dfEq5dFromGoogle$"痛み/不快感" == "私は中程度の痛みや不快感がある", "PD"] <- 2
  dfEq5dFromGoogle[dfEq5dFromGoogle$"痛み/不快感" == "私はひどい痛みや不快感がある", "PD"] <- 3



dfEq5dFromGoogle$AD <- as.integer(0)

  dfEq5dFromGoogle[dfEq5dFromGoogle$"不安/ふさぎ込み" == "私は不安でもふさぎ込んでもいない", "AD"] <- 1
  dfEq5dFromGoogle[dfEq5dFromGoogle$"不安/ふさぎ込み" == "私は中程度に不安あるいはふさぎ込んでいる", "AD"] <- 2
  dfEq5dFromGoogle[dfEq5dFromGoogle$"不安/ふさぎ込み" == "私はひどく不安あるいはふさぎ込んでいる", "AD"] <- 3


#dfEq5dFromGoogle<- dfEq5dFromGoogle["MO","SC","UA","PD","AD"]

  
dfEq5dFromGoogle$EQ5D <- eq5d(dfEq5dFromGoogle, country = "Japan", version = "3L", type = "TTO", ignore.invalid = TRUE)

  
datatable(dfEq5dFromGoogle)

NULL (何も無い) ,NA (欠損値) ,NaN (非数) ,Inf (無限大)