## 今回のシナリオ
- **測定器A**:現行の血糖測定器
- **測定器B**:新しい測定器
この二つの測定器で一つの血清を測定したという仮定で進みます。
## コード
まずコード全体を書きます。
このまま [[RStudio]] に
```R
# データ削除(データが消えてしまうので注意)
rm(list=ls())
# パッケージ
# インストールされていない場合は、事前にインストールしてください
library(ggplot2)
# 血糖値データ(見た目は手入力)
A <- c(92, 110, 98, 105, 123, 87, 101, 115, 108, 95,
99, 120, 104, 112, 90, 109, 100, 118, 85, 102)
B <- c(103, 119, 107, 115, 133, 98, 111, 126, 118, 105,
110, 131, 114, 121, 99, 118, 109, 127, 94, 111)
# 平均と差を計算
mean_AB <- (A + B) / 2
diff_AB <- A - B
# Bland-Altmanプロット
ggplot(data = data.frame(mean = mean_AB, diff = diff_AB), aes(x = mean, y = diff)) +
geom_point() +
geom_hline(yintercept = mean(diff_AB), linetype = "dashed") +
geom_hline(yintercept = mean(diff_AB) + 1.96 * sd(diff_AB), linetype = "dotted") +
geom_hline(yintercept = mean(diff_AB) - 1.96 * sd(diff_AB), linetype = "dotted") +
labs(x = "Mean of A and B (mg/dL)", y = "Difference A - B (mg/dL)")
```
できたプロットがこちらです。
![[Pasted image 20250507231403.png]]
## 基本的な解釈
このBland-Altman plotは、2つの異なる測定方法の一致度を評価するためのグラフです。例えば、同じ患者の血糖値を測定する2つの異なる機器の比較などに使われます。
## 横軸(Mean of A and B)の説明
横軸は「2つの測定値の平均」を示しています。例えば:
- 方法Aで105 mg/dL、方法Bで115 mg/dLと測定された場合
- 平均は (105 + 115) ÷ 2 = 110 mg/dL
- このデータ点は横軸の110の位置にプロットされます
## 縦軸(Difference A - B)の説明
縦軸は「2つの測定値の差」を示しています。同じ例では:
- 差は A - B = 105 - 115 = -10 mg/dL
- このデータ点は縦軸の-10の位置にプロットされます
## 点が持つ情報について
一つの点は2つのデータA,Bの平均と差の情報をもっていることになります。つまり、点は一つですが、二つの情報を含んでいる(復元可能である)ということです。
具体的には:
- もし平均値が110 mg/dLで差が-10 mg/dLだとわかれば
- 平均 について $(A + B) / 2 = 110$ なので $A + B = 220$
- 差 について $A - B = -10$
- これら2つの連立方程式を解くと:
- A = 105 mg/dL
- B = 115 mg/dL
- つまり元の測定値が復元できます
## バイアス(系統誤差)について
グラフを見ると、ほとんどの点が負の値(-9〜-11 mg/dL)に集中しています。これは「バイアス」と呼ばれる系統誤差を示しています。つまり、方法Aは方法Bと比較して一貫して低い値(約9〜11 mg/dL低い)を示す傾向があります。
## グラフの線の意味
- 中央の破線:差の平均値を示しています(約-9.8 mg/dL)
- 上下の点線:通常は「一致の限界」(limits of agreement)と呼ばれ、標準偏差の±1.96倍の範囲を示します。この範囲内に約95%のデータが含まれると期待されます。