2010年6月8日火曜日

検査結果陽性の場合に病気である確率を知る10の方法

問題
突然、上腹部が痛いという主訴で60才男性が来院。診察して急性膵炎の検査前確率を20%と推定した。アミラーゼの感度(急性膵炎の患者さんでアミラーゼが上昇する確率)が80%、特異度(急性膵炎でない患者さんでアミラーゼが上昇しない確率)が80%として、アミラーゼ上昇を見た場合、実際に急性膵炎である確率は、次のどれに一番近いでしょう?
A 25% B 50% C 75%
方法1 自然頻度を用いる。
 2002年ノーベル経済学賞を受賞したダニエル・カーネマンらの説では、人間の脳は条件付き確率を過つように仕組まれているらしい。実際、右のモンティホール問題があしらわれた「リスク・リテラシーが身につく統計学的思考」という本の中では、法律家や医師という高学歴の人間 でさえも、直感では条件付き確率を誤ってしまうことを実証し、解決策を提言している。時間がない方には、著者による英国医学雑誌への寄稿が参考になる。
 要するに、感度とか特異度とかの分母が異なる確率を排し100人とか1000人とかの切れのよい集団を想定し絶対数で考えましょうということです。そうすると、問題は下のように言い換えられます。
突発する上腹部痛の100名のうち20名が急性膵炎だとします。これらの急性膵炎の20人のうち16人がアミラーゼが上昇します。急性膵炎でない80人のうち16人でもアミラーゼが上昇します。今、突発する上腹部痛の方がアミラーゼが高かったとして、実際に急性膵炎である確率は?
方法2 ツリーダイアグラムを用いる。
 上の考え方をマインドマップ風に書き出してみるとすっきりしますね。

                検査陰性の4名
      急性膵炎の20名 <
                検査陽性の16名
100名 <
                  検査陽性の16名
      急性膵炎でない80名 <
                  検査陰性の64名
                   
方法3 分割表 (Contingency table)を用いる。
 小飼弾氏がブログの記事「直感的な定理の反直観的な帰結」で推奨している方法です。下記のような2×2表を作ってやるというものです。
TABLE急性膵炎
非急性膵炎

アミラーゼ上昇
16
16
32
アミラーゼ正常
4
64
68

20
80
100

 一般化すると、下図のようになります。矢印の意味は、始点の数値を矢印の方向の小計で割って下さいということです。
方法4 同心円グラフを用いる。
 イメージ思考が得意な方は、グラフを思い描くのも一つの方法です。

方法6 ベイズの定理に基づく公式を使う。
 感度は、原因があったときに結果が生じる確率で、今求めたいのは、結果があったときに原因がある「逆確率」。逆確率を得るには、原因の確率を掛けて、結果の確率で割りなさいというのが、ベイズの定理。原因の確率は、有病率。結果の確率は、真陽性の場合と偽陽性の場合の和なので、公式として書けば、下のようになる。


公式を覚えるのも大変だし、計算が面倒ですね…

方法7 検査後オッズ=検査前オッズ×尤度比の式を使う。
 そこで役立つのが、「オッズの魔法使い」。競馬をしない方には馴染みが薄いかもしれない。中国語では「発生比」というらしく、あることが起こる場合と起こらない場合の比、勝ち負けの比、表裏の比ということです。ですから、事前確率が20%ならオッズは20/80で0.25となります。
 次に尤度比。尤もらしさの比、疾患のある人において陽性結果がどれだけ出やすいか、つまり真陽性率÷偽陽性率。公式として書いておくと、下式になる。


これら2つのツールを導入すると、計算自体が簡単で、連続した確率の更新も可能になります。話は逸れるが、0〜1の確率より、0〜∞のオッズのほうが、人間の確率認知に適した表現のような気もしています。例えば、臨床医学の箴言、"to cure sometimes, to relieve often, to comfort always"などは、オッズを用いると「1/2で治し、2/1で和らげ、3/0で慰める」と解釈できるのでした。

方法8 McGeeの近似を使う。
 確率の増減の近似値は、尤度比を使ってΔP=0.19×lnLRで計算できるらしいです。この方法の弱点は事前確率が0.1〜0.9 の範囲でしか近似しないこと、普通の電卓で計算できないので下表を覚えておかなければならないことです。

尤度比
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
確率の減
-45
-30
-25
-20
-15
-10
-7
-5
-2
尤度比
2
3
4
5
6
7
8
9
10
確率の増
+15
+20
+25
+30
+35
+37
+40
+42
+45


方法9 Faganのノモグラムを使う。
 下のノモグラムをコピーしてラミネート加工して栞として持ち歩くのもありですね。


方法10 JavaScriptを用いる。

 解法6や解法7の公式をプログラムしておくという裏技。JavaScriptで書いてUSBメモリーに入れとけば、ブラウザさえあれば、OSを問わず使えます。ブラウザがあるなら、"EBM calculator"などをググって使うほうが手っ取り早いのですが、BMIやeGFRの計算などに流用できるので、敢えて拙いスクリプトを上げてみました。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html lang="ja">
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<link rev="made" href="hoge.hoge@gmail.com">
<title>感度と特異度で検査前確率を検査後確率に更新する</title>
<SCRIPT Language="JavaScript">
function calc(){
a=eval
(document.ebm.pre.value);
b=eval
(document.ebm.sens.value);
c=eval
(document.ebm.spec.value);
d=Math.round(b*a/(b*a+(100-c)*(100-a))*10000);
e=Math.round(c*(100-a)/(c*(100-a)+(100-b)*a)*10000);
document.ebm.ppv.value=d/100;
document.ebm.npv.value=e/100;
}
</SCRIPT>
</head>
<body>
<form method=post name="ebm">
検査前確率:<input type="text" name="pre" value="" size="10">%<br>
感度:<input type="text" name="sens" value="" size="10">%<br>
特異度:<input type="text" name="spec" value="" size="10">%<br>
<input type=button name=button value="計算" onClick="calc()">
<input type=reset value="リセット"><br>
陽性予測値: <input type="text" name="ppv" size="10">%<br>
陰性予測値: <input type="text" name="npv" size="10">%<br>
</form>
</body>
</html>

下のように表示されれば、大成功です。

0 件のコメント:

コメントを投稿