## 今回のシナリオ - **測定器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%のデータが含まれると期待されます。