之前一直都很想寫有關於sensitivity和specificity的差別
尤其在看了一些論文之後
發現對於這些概念有比較正確的了解
所以就記錄一下
所有的解釋其實還是要從定義而來
所以要看一下根本的數學式的定義
sensitivity是true positive的結果
=a/ (a+c)
specificity是true negative
=d/ (b+d)
所以如果當一個檢查sensitivity很高 specificity很低的時候
所出來的示意圖應該是怎麼樣呢?
圖一
這裡我們用實線的圓圈來代表檢查 虛線代表疾病本身
如果一個檢查sensitivity很高specificity很低 所出來的圖像就如上所示
如果再極端一點的話會長的這樣
圖二
sensitivity最高的狀況就是檢查整個把疾病都包含進去了
這種狀況之下如果我把每個人都當成有病
那sensitivity最高 因為你不會miss任何一個人
不過specificity就變低了
所以檢查的實線圈圈愈大 sensitivity不變都是100%
可是specificity卻會越來越小
在回到圖一那種比較正常的狀況
那種比較符合現實的狀況
所以如果sensitivity高的話 重點其實是在c這一塊
sensitivity愈高表示c愈小 (所以c代表的是 false negative ,偽陰性)
同時因為sensitivity和specificity有某種相反的關係
所以sensitivity愈高 specificity愈低
specificity愈低表示b值越大 (b代表的就是false positive, 偽陽性)
所以在此要歸納一些原則
--sensitivity愈高 specificity愈低
--c代表 false negative ,偽陰性
--b代表 false positive, 偽陽性
--sensitivity愈高表示c值愈小
--specificity愈高表示b值越小
在此如果一個檢查sensitivity高的話
它比較會是一種理想中的檢查
因為比較不會miss有疾病的人
這樣接下來的問題就是它的正確性有多少
如果討論到正確性的話
就牽涉到PPV(positive predictive valus)
ppv= a/(a+b)
這時候就只牽涉到檢查本身的正確率了
可是大家可以注意到 a其實是不變的
所以b值決定了ppv的大小
如果b值越小 表示ppv越大
那這樣就表示這樣的檢查正確率很高了
可是b值其實是跟specificity相關的
(specificity越高 b值越低)
所以在討論到正確率的問題
ppv其實是跟specificity連動的
specificity越高 b值越低 ppv越高
所以這裡又出現了一些原則
--ppv跟specificity跟b值相關
--npv跟sensitivity跟c值相關
--specificity越高 ppv越高
--sensitivity越高 npv越高
另外一個狀況就是表示如果一個檢查
specificity很高 sensitivity很低
那這個檢查的示意圖會像什麼樣子
這個檢查應該會長的像上面那個樣子
sensitivity很低 c值高
specificity很高 b值低
這個檢查本身會比真正有疾病的小很多
可是因為b值低 所以它的ppv很高
只要它說是有病的人 大概就是真的有病了
最極端的狀況就是像上面那樣了
檢查全部都在疾病裡面
specificity為 100% ppv也為100%
這裡又有一些原則
所以我們可以了解
sensitivity, specificity是比較跟疾病相關的
這裡會比較注重sensitivity
可是當把有疾病的人篩選出來之後
要注意的就是ppv, npv
而這些是比較跟檢查本身的正確率相關的
這時候要注意的就是ppv這個
所以當我們評論一個檢查的時候
第一個會問的其實是sensitivity
如果sensitivity好的話 接下來才會問ppv
這樣是比較符合邏輯
可是因為specificity跟b值跟ppv都是連動相關的
所以當specificity高的話 ppv也是高
所以這就是問完sensitivity之後在問specificity的原因
也許不是直接相關不過卻是有連動的
參考資料
http://www.alivelearn.net/?p=898
http://uberpython.wordpress.com/2012/01/01/precision-recall-sensitivity-and-specificity/
http://m.australianprescriber.com/magazine/13/3/62/4/







沒有留言:
張貼留言