作者:黃存操/有勁基因

 

  一個檢測究竟能做到多準確?該如何判斷結果可不可信?事實上,就算檢測的條件與對象都一模一樣,對於準確率仍然很難百分百掛保證,通常你會看到如下的敘述:

1. 此檢測技術的出錯率每萬次中少於一次

2. 此檢測技術的出錯率每千人中少於一次

3. 此檢測技術的出錯率每百人中少於一次

4. 此檢測技術每20次就可能出現一次錯誤

 

  這些敘述看起來很雷同,深究其內容意義卻很不同,主要是因為各自對「準確度」的定義並不相同。目前關於檢測準確率(或出錯率)常見的指標有準確度、靈敏度、特異度…等等,多到令人昏頭轉向。想要弄清楚這些指標,就必須先從這些指標是「如何由實際數據轉換而來的」開始瞭解。本文將一步步示範如何從數據得出各種檢測指標,並會解釋各種指標的詳細意義。

 

步驟一、分類(陽性|陰性、異常 | 正常)

每個人根據其實際上有否罹患特定疾病,可區分為「無/有」兩種狀態:

● 正常:實際上沒生病(健康的人),簡稱此狀態為「

● 異常:實際上生病了(生病的人),簡稱此狀態為「

 

一般人在接受某疾病的罹患篩檢時,檢驗結果可區分為「陰/陽」兩種狀況:

● 陽性:檢測的結果是有生病,簡稱為「

● 陰性:檢測的結果是沒生病,簡稱為「

 

也就是說,每個人在做了特定疾病的檢驗後,其檢測結果會被分類到下列四種狀態的其中一種(括號內為代表符號)。而對所有檢測來說,想方設法要儘量避免的就是偽陽性與偽陰性的出現。

 

有(+)

無(-)

檢測結果為陽性,且真的有生病(真陽性;TP)

檢測結果為陽性,但其實沒有生病(偽陽性;FP)

檢測結果為陰性,但其實有生病(偽陰性;FN)

檢測結果為陰性,且真的沒有生病(真陰性;TN)

英文縮寫分別代表:TP(True Positive)/真陽性;FP(False Positive)/偽陽性;TN(True Negative)/真陰性;FN (False Negative)/偽陰性

 

有了上面這個表,我們就可以藉由「數人頭」的方式計算出這個疾病罹患檢測的統計結果;如下。表格內英文縮寫處要填入的是各欄位所對應的人數。

 

TP

FP

FN

TN

 

步驟二、列聯表 混淆矩陣

上述由數人頭結果填寫出來的表格,傳統統計學上稱為列聯表(Contingency table)1;現在機器學習與AI當道,這個表格因此有個更酷炫的名字,叫做混淆矩陣(Confusion matrix)2。假設有個對十萬人進行的疾病罹患檢測,其人數統計結果做出來的列聯表如下:

 

950人

50人

5人

98,995人

 

將上述表格的數據,依據縱欄來加總、或是依據橫列來加總,可以得出以下結果:

 

列總和

TP=950

FP=50

p=TP+FP=1,000

FN=5

TN=98,995

n=FN+TN=99,000

欄總和

w=TP+FN=955

m=FP+TN=99,045

Tot=100,000

英文縮寫分別代表:p/檢驗出陽性的人數;n/檢驗出陰性的人數;w/實際上有患病的人數;m/實際上健康的人數;Tol/總人數

 

從這個表可得知此疾病篩檢的結果意義:

● 實際上有患病的人(w = 955)當中,有950位被正確檢測出來(真陽性;TP),另外的5位被誤判為陰性了,也就是偽陰性(FN)

● 實際上健康的人(m = 99,045)當中,有98,995位被正確檢測為陰性(真陰性;TN),而有50位卻被誤判為陽性了,也就是偽陽性(FP)

準確度:計算公式為(Accuracy)= (TP+TN)/Tot總人數 = 99.945%;換句話說此檢驗的誤判機率為0.055%。表示就這個檢測來說,每一萬次檢測,約莫會出現5~6個誤判案例。

 

步驟三、計算(靈敏度|特異性)

如果將列聯表各欄位中的數值,除以當成分母的欄總和,可以得到下面的比值:

 

檢出率

950/w =
99.48%

50/m =
0.05%

1,000/Tot=
1%

5/w =
0.52%

98,995/m=
99.95%

99,000/Tot=
99%

欄總和

w=TP+FN=955

m=FP+TN=99,045

Tot= 100,000

 

檢出率從上述表格中右上角的數據格子可以知道,此檢驗檢出陽性結果(包括真陽性和偽陽性)的陽性檢出率剛好為1%。

 

檢測準確性,在此處的指標主要有「靈敏度/特異性」3兩種:

靈敏度(Sensitivity)= TP/w:真正有患病的人,被正確檢驗出陽性的機率是99.48%;換句話說,每兩百個有病的人中,大約就有一個可能會被誤判為沒病。

特異性(Specificity)= TN/m:沒患病的人,被正確檢驗判斷為陰性的機率是99.95%;換句話說,每兩千個健康的人,大概會有一個被誤判為有病。

 

步驟四、計算(PPV | NPV)

將列聯表各欄位中的數值,除以當成分母的列總和,可以得到下面的比值:

 

列總和

950/p =
95.0%

50/p =
5.0%

p=TP+FP=

950+50=1,000

5/n =
0.005%

98,995/n=
99.995%

n=FN+TN=

5+98,995=99,000

流行率

955/Tot =
0.955%

99,045/Tot =

99.045%

Tot= 100,000

 

流行率從上述表格中左下角的數據格子來看,有接近1%的受檢人其實真的罹患了這個疾病。

 

檢測準確性,在此處有下面「PPV/NPV」兩種指標可以參考:

陽性預測值PPV(Positive Predictive Value)= TP/p:在這個例子裡,確實有生病也被檢測出陽性的機率是95.0%。這裡PPV的值相對於其他幾項指標的值,低了許多。由於PPV所代表的意義是真陽性的檢出率,這個檢驗結果代表大約每20個判定為陽性的檢測結果中,大約有一個是誤判。這對於一般疾病來說或許還好,但若是檢測的目標為重大疾病(例如癌症),這樣的誤診就有可能無謂地增加病患心理負擔,或是引導錯誤的治療。

陰性預測值NPV(Negative Predictive Value)= TN/n:被檢測出陰性也的確沒患病的機率是99.995%。

 

步驟五、比較檢測的各項指標

根據前述各說明,這個列聯表的數據可得出最少五個指標,機率由高到低排序如下:

 

列總和

950

50

1,000

5

98,995

99,000

欄總和

955

99,045

100,000

● 陰性預測值NPV = 99.995%,每十萬個判定為陰性的檢測結果中,大約會有5個是誤判。

● 特異性(Specificity)= 99.95%,每一萬個健康的人中,大約有5個會被誤判為有病。

● 準確度(Accuracy)= 99.945%,每一萬次的檢測,大約有5次會出錯。

● 靈敏度(Sensitivity)= 99.48%,每一千個有病的人中,大約有5個會被誤判為沒病。

● 陽性預測值PPV = 95.0%,每20個判定為陽性的檢測結果中,大約會有1個是誤判。

 

  之所以要有那麼多與準確率相關的指標,是因為不同疾病對於檢測結果所在意的重點不同。有些疾病檢測會希望儘量避免將沒病誤判成有病(也就是要降低偽陽性FP),有些疾病檢測則可能希望盡量避免將有病誤判為沒病(也就是要降低偽陰性FN)。一個檢測想要同時降低偽陽性和偽陰性兩者很困難,這時通常會藉由調整閥值(threshold),以便讓兩者都降低到可接受的範圍之內;這部分本文就不詳述。

 

  現在回到文章的開頭那四句關於準確率的敘述,根據各自所在意的重點,更精準的說法如括號內所示:

1. 此檢測技術的出錯率每萬次中少於一次  ← 著重在陰性預測值NPV

(此檢測技術在每一萬次「判定為陰性」的檢測結果中,誤判的機率低於一次)

2. 此檢測技術的出錯率每千人中少於一次 ← 著重在特異性Specificity

(此檢測技術的出錯率:每一千個「其實沒生病」的健康人,被誤判為「有病 (偽陽性)」的機會低於一次)

3. 此檢測技術的出錯率每百人中少於一次 ← 著重在靈敏度Sensitivity

(此檢測技術的出錯率:每一百個「其實有生病的人」,被誤判為「沒病 (偽陰性)」的機會低於一次)

4. 此檢測技術每20次就可能出現一次錯誤 ← 著重在陽性預測值PPV

(此檢測技術每20次「判定為陽性」的檢測結果中,可能就有一次是誤判)

 

 

參考資料

1. Wikipedia. (2019 Sep). Contingency table.  Retrieved from https://en.wikipedia.org/wiki/Contingency_table

2. Wikipedia. (2019 Jul). Confusion matrix. Retrieved from https://en.wikipedia.org/wiki/Confusion_matrix

3. Wikipedia. (2019 Sep). Sensitivity and specificity. Retrieved from https://en.wikipedia.org/wiki/Sensitivity_and_specificity

 

 

thumbnail_官網用CC創用_ND_YH.png

arrow
arrow

    Yourgene Health 發表在 痞客邦 留言(0) 人氣()