理学療法士がまとめたノート

統計学備忘録 since2016

Rを使って統計学を勉強するブログです

感度と特異度

更新日2019.1.29

D=罹患、T=検査
     D+  D- 
T+   a   b 
T-   c   d 

感 度 = \frac{a}{a+c}  P(T+| D+)

特異度 = \frac{d}{b+d}  P(T-| D-)

偽陽性 = \frac{b}{b+d}  P(T+| D-)

偽陰性 = \frac{c}{a+c}  P(T-| D+)

陽性的中率(陽性反応的中度)= \frac{a}{a+b}  P(D+| T+)

陰性的中度(陰性反応的中度)= \frac{d}{c+d}  P(D-| T-)

Rを使用してROC曲線を描いてみます

# 準備
install.packages("ROCR")  
library(ROCR) 

# サンプルを用意します(参考文献)  
--------------------------------------------
         01234点
    罹患    1     0     6    11    12
罹患なし     9     2    11     8     0    
--------------------------------------------

# 検査の各点数の該当者数(0は含めない)
x <-c (rep(0, 10),rep(1, 2),rep(2, 17),rep(3, 19),rep(4, 12))
# xに罹患=1、罹患なし=0を当てはめます
y <-c (1, rep(0, 9), rep(0, 2), rep(1, 6), rep(0, 11), rep(1, 11), rep(0, 8), rep(1, 12))
# 次の操作はベクトルxがソートされていない場合に使用
pd <- prediction(x,y)
# 次の操作で偽陽性率vs感度を求めます
# tpr : True positive rate(感度)、fpr : False positive rate(偽陽性率)
roc <- performance (pd, "tpr", "fpr")
# 一気に計算してくれます!
"x.values":偽陽性率
  [[1]]
[1] 0.0000000 0.0000000 0.2666667 0.6333333 0.7000000 1.0000000
"y.values":感度
  [[1]]
[1] 0.0000000 0.4000000 0.7666667 0.9666667 0.9666667 1.0000000
# rocの散布図がROC曲線となります
plot( roc )

f:id:yoshida931:20171026124248j:plain

aucの算出 (area under the curve) 

auc.tmp <- performance (pd, "auc")
auc <- as.numeric (auc.tmp @ y.values)

 auc = 0.8327778

サンプルデータ
出典)柳川 堯 , 荒木 由布子; バイオ統計の基礎―医薬統計入門,近代科学社 ,2010,p12 

参考ブログ  k-lab http://www.nemotos.net/?p=836
ほとんどそのまま使用しております.
ありがとうございました.