Note:

因為blogger會有很多廣告留言,所以我有設留言管制。大家留言留一次就好,只要不是廣告,我都會定期去後檯把留言給撿回來。

造成麻煩還請大家多多見諒。

2013年5月4日 星期六

Sensitivity, Specificity and Drug screening

是說前陣子在和朋友討論一篇關於cancer screening test的文章,裡頭提到該test sensitivity只有大約60%的問題,那個時候我一直在argue這個sensitivity太低,而且從報導中我們不知道specificity,所以無法判斷這個test有沒有用。

然後昨天又和網友討論到全面尿篩的事情,從人權觀點講到Bayes' theorem,在討論當中帶出了一些關於設計screening test的概念,我覺得滿值得拿出來討論的,不過很多東西在討論時你一言我一語的,很難有個完整的架構,不如直接寫成文章來得清楚,所以就稍微整理一下,把格主的想法整理成一篇文章,看看能不能釐清一些概念。

在開始之前,我先稍微定義一下這篇文章中最關鍵的兩個詞:sensitivity和specificity。

在一個binary classification test中(test做出來的結果只會被分為兩類,例如有或沒有,黑或白,好或壞之類的,為方便說明,之後一律以positive和negative兩種分類來說明),sensitivity指得是【在此一population中,真正為positive的samples有多少比例可以被這個test正確的identified出來】。舉例來說,如果一個母體為100人的population中,有5個人是true positive,但這個test只抓出了4個,那麼這個test的sensitivity就是0.8,用數學去表示的話就是:

Sensitivity = 4/(4+1)%=80%

這裡我特別把5拆成4+1去表示是有用意的,這個等等會提到。

接下來我們換個角度去想。如果說今天我們已經知道一個test的sensitivity是80%,而在一個population中,有100個true positive samples (regardless the population size),這時候我們拿這個test去跑,就會成功的identify 80個true positive samples,而另外20個會被這個test給漏掉。這漏掉的20%,我們會稱之為missing rate(雖然是positive但卻漏掉沒被抓出來的)反過來說,那80%被抓出來,就被我們叫做true positive rate。

接下來重點就來了。

很多人會在這裡很直觀的想說,既然80%是"true positive rate",那剩下的那20%就是所謂的false positive rate了。

但如果你從定義上去思考,就會發現這個完全錯誤的推論。所謂的false positive,指得是【negative samples卻被判定為positive】,所以這個positive result是假的,因此我們才會把它叫做"false" positive。同理,false negative則是【positive samples被判定為negative】,所以才會說這個negative是假 (false) 的。

好,現在我們再回頭去看前面那個例子裡那20%的missing rate。

這20%的missing rate是『沒被identified出來的positive samples』,也就是說他們是被判定為negative,但實際上他們卻是positive samples。因此按照上面的定義來講,這20個samples應該是false negative,那20%的missing rate則是false negative rate才對。

如果把這個概念用一個簡單的等式來表示,那就是:

1-sensitivity = false negative rate

所以sensitivity的反邊,是false negative,從sensitivity中,你無法得知任何與false positive有關的資訊。

這個時候讓我們再一次回頭,去看看上面那個被我故意拆成 (4+1) 的5。

在那個例子裡,我說一共有5個true positives,而其中有4個被我們的test identified出來,所以sensitivity是:4/(4+1) 。這個(4+1)裡的4,是"被identified出來的true positive",而那個1,就是所謂"沒被identified出來的positive",也就是被認定為negative的positive。所以,這個1,就是false negative的數目。由這裡我們就可以很輕易的得到結論:

Sensitivity = (identified true positives) /[(identified true positives) + (false negatives)]

用了這麼多不同的方式來表示sensitivity這個概念,目的就是希望不論你是習慣靠直觀去理解事情,還是習慣靠數學去理解事情的人,都可以真正明白sensitivity這個概念是在說什麼。

接下來,我想用一個很簡單的例子來說明很多人對sensitivity的一個誤解。

假設今天我們使用一個sensitivity為80%的test去測試某個population,然後得到100個positives。這個時候我們可以說,因為此一test的sensitivity為80%,所以這100個positives裡頭有80個為true positives嗎?

很顯然不行。首先,按照上面那個sensitivity的公式,我們根本找不到足夠的條件可以帶進去算出true positives。另一方面,如果你用直觀去理解,假設這80個真的是 identified true positives好了,那剩下的那20個就應該是"false negatives"才對(1-sensitivity = false negative rate),可是很顯然的那20個並不是false negatives,都被驗出來是positives了,頂多也就是false positives,不可能跟negative再有任何關聯不是嗎(別忘了false negative的定義是驗出來是negative但其實不是)?

由這個例子和上面那一大串的解釋,我想大家應該開始會有一個sense:

【Sensitivity的高低和false positive rate無關】。

以剛剛那個例子來說,就算你用的test sensitivity是100%,但你還是不知到你驗出的那100個positives裡面有多少個是false positive,你只知道這個population中所有的true positives都一定會被這個test給找出來,至於這個這個population裡頭到底有100個、80個還是25個positives,你是無法透過sensitivity來檢驗的。

因此,當我們想要在一個population中找出真正的positives時,選擇sensitivity高的test並不是一個好的辦法,因為你永遠不會知道你得到的結果中有多少比例是false postives。

反過來說,由於我們知道highly sensitive test測出來的結果"false negative rate"非常低 (1-sensitivity = false negative rate,when sensitivity ➝ 1, false negative will ➝ 0) ,所以我們可以很有信心地說,一個highly sensitive test測出來的negatives,有非常非常高的可能性是true negatives。

因此,我們可以說一個highly sensitive test其實是比較適合用來"exclude positive results"的。舉例來說,你用一個sensitivity 99.9%的flu test做出來是negative,那我們可以很確定的說你幾乎不可能患有flu (false negative rate=0.1%),但如果你測出來是positive,其實我們並不知道你是不是真的患有flu。

有了這樣的概念,那我們就知道high sensitivity test可以用在哪裡了。

它可以用在我們不care false positive但是非常concern false negative的時候。例如像這篇文章開頭提到的那個cancer test。如果是當作一個初步的screening test來使用,我們並不會特別在意病人驗出來的結果是false positive,因為這只是一個初步篩檢,篩完之後如果呈現positive result,顯示該受試者有cancer,我們還可以用其他方法做進一步的確認。但是在這個case裡面我們非常concern false negative,因為這意味著有實際上患有cancer的patients沒被檢驗出來。在這樣的情況下,一個highly sensitive test就會很適合用來做這樣的screening。不過那篇文章中所用的test sensitivity只有60%,而這就意味著false negative rate會是40%,以一個screening test來說這個比例實在是太高太高了。

這時候很多人腦海中可能會開始出現這樣的疑問:「那如果情況反過來,我們這時候concern的是false positive,而比較不care false negative,那該怎麼辦呢?」

這樣的情況在真實世界當中也是常常會遇到的,譬如說第一段提到的尿篩,一個false positive很可能會害一個人莫名的吃上官司或著被老師同學認定為有吸毒的壞學生,這樣的結果有多devastating我想應該不難想像。

這裡,就是輪到specificity出場的時候了。

在這邊,我打算利用上面大家對false positive的瞭解,用反著推回去的方式嘗試讓大家明白specificity是什麼東西。

首先,既然false positive rate是【negative samples卻被判定為positive的比例】,那麼如果我們將所有驗出來為negative的samples扣掉false positive,那剩下的就是成功的被identified出來的"true negatives"。一樣用數學去表示的話就是:

1-false positive rate = true negative rate

或著我們可以把它改寫成:

1-true negative rate = false positive rate

然後在這邊,我們就把這個成功identify negative的比例,也就是"true negative rate",稱為是specificity。是以上面那個式子又可以改寫成:

1-specificity = false positive rate


所以如果一個population中有5個true negatives,其中4個被某個test給identified出來,那麼我們就可以說這個test的specificity是:4/(4+1),而這時候這裡的1,就是false positive的數目。

因此,若改成文字敘述的話,我們可以說specificity其實就是【用一個binary classification test測試某個population時,在此一population中,真正為negative的samples有多少比例可以被這個test正確的identified出來】。

和sensitivity那個case裡一樣的是,雖然specificity是個以identify negatives來定義的概念,但他和false negative完全無關,所以今天即使有一個test的specificity是100%,然後他identify出來了1000個negatives,但其實我們並不知道這裡面有多少是false negative。

不過因為highly specific test的false positive rate一定很低,所以這個test測出來呈現positive的samples,極有可能是"true positive"。在這樣的情況下,當你看到這個high specificity test測出來的結果是positive的時候,這個result其實是相當reliable的。

一樣來個簡單的例子,一個specificity=99.9%的test,如果測出來是positive,由於false positive rate只有0.1%,所以我們可以很有信心的claim這個sample非常非常可能是true positive。反之,如果這個test測出negative result,因為我們不知道false negative rate,所以我們並不知道這樣的result到底有多麼reliable。

如果上面這些對於sensitivity和speficity的解釋都能瞭解的話,我想讀者應該就會開始建立起下面這個觀念:

【我們永遠無法利用一個test去確定一個sample是positive或negative,但我們可以用highly sensitive或highly specific的test去盡量排除某個sample是negative或是positive的可能性】。

也就是說,我們永遠只能"反過來做",嘗試rule out一個sample是positive或negative的可能性。

這個過程其實跟所謂的scientific process很像,我們永遠無法證明一個hypothesis是對的,所以我們嘗試用各種方式推翻它,如果都失敗的話,就讓這個hypothesis成為一個theory。同樣的,我們永遠無法證明一個sample是positive的,但是我們可以利用它非常非常可能不是true negative,所以說宣稱他是positive。

又或著你可以用stats中的取樣來想,以一個normally distributed population來說,如果今天你手上的sample放進這個distribution後的位置位於兩個standard deviation之外,那你就可以說因為這個sample的值很極端,所以他來自這個population的機會非常低,因此你可以主觀的說這個sample很有可能是來自另外一個population。

倘若這樣的觀念建立起來的話,我們就可以進入這篇文章的最後一個主題:【Bayes' Theorem and drug screening tests】。

基本上Bayes' Theorem就是一個conditional probability的概念。很簡單的說,conditional probability就是在處理假設今天有A和B兩事件,在A先發生後B發生的機率或著在B發生後A發生的機率這類的事情。而Bayes' Theorem基本上就是在處理這樣的事情,嘗試把A發生的機率、B發生的機率、在B已發生的情況下A發生的機率以及在B已發生的情況下A發生的機率之間的關係用數學式子給表示出來。

Bayes' Theorem的詳細討論並不是這篇文章的重點,所以大家只要對這東西有個大概的概念就好。重點是Bayes' Theorem可以用來計算這篇文章開頭提到的驗尿問題,看看我們使用的test到底有多準確。

在這裡我直接引用wiki的例子來說明。

簡單講,假設今天有一個drug test的sensitivity和specificity都是99%,然後在這個population中有0.5%的人是真正的drug users。在這個情況下,如果我們隨機在這個population裡挑一個人(不知道他是不是drug user)來做這test,那這個人既是user又會被驗出來是positive的機率是多少?

然後我們就按照Bayes' Theorem的公式去算,就會算出大約有33.2%的人會被驗出來成positive的嚇死人結果。

這是怎麼回事?怎麼一個highly sensitive and highly specific test會不準成這樣呢?

在能理解這件事情的問題到底在哪裡之前,我們必須對於Bayes' Theorem為什麼會算出這樣的數字有一定程度的理解。但一來解釋數學不是我的專長,二來用數學解釋一定有很多人會看不下去,所以這邊我會用一個比較直觀的方式解釋,這也是在我不知道Bayes' Theorem之前,自己理解這件事情的方式。他很簡單,是屬於那種你自己靜下來想一想就能察覺到問題在哪邊的一種方式。

我一開始的想法是這樣的:如果sensitivity和specificity是一個"percentage",那就代表不管percentage的高低,我們都有可能拿到一個極大或極小的absolute number。舉個例子,如果說坐太空梭旅遊的死亡率是100%,而坐飛機旅遊的死亡率是20%,但是每年做太空梭的人只有100個,而坐飛機的人有10000個,那麼其實每年因為坐飛機死掉的人會是坐太空梭死掉的人數的20倍 (100 vs. 2000) 。因此,如果我們今天處理的兩個sample pools差距太大,就會發生小pool被大pool的數字給汙染的狀況。

把這個例子套回到sensitivity和specificity上,由於今天上面那個例子的假設是drug users只佔5%,比較起來和non-users實在太小,所以就很容易被來自non-users的數字給汙染,即使這個test再準也一樣。

譬如說今天我們的population共有1000人,那麼drug users就有5人,而non-drug users則有995人。這5人裡面,有5×0.99 (sensitivity) =4.95人會被驗出來成positive。但是在non-drug users中則有955×0.01 (false positive) = 9.55人會被驗出來成positive。因此,在這些被驗出來呈現positive的人裡面,真正是既是user又被驗出來是positive的機率只有4.95/(4.95+9.55)=34%。上面那個Bayes' Theorem的例子,基本上就是用數學公式去解釋這個情況而已,所以算出來的答案當然也就和我們這樣推想的差不多。

所以你可以很清楚的從這樣的例子裡看到,雖然9.55相對於955是個極小的數字,但和5相比起來還是太大,所以即使今天這個test是100% sensitive也沒用,他做出來的結果還是會被false positive過大的absolute number給汙染,導致整個test非常不精確。由此,我們就可以得到一個很簡單的結論:

當一個population中true positive samples存在的比例很低時,一個test不管sensitivity和specificity再高,測出來的positive結果,都是很不精確的】。

這就是上面那個Bayes' Theorem的例子想要表達的東西。他在數學上是完全正確的,可是在實務上,這個問題是可以很輕易地被避免的。怎麼說呢?

還記得我前面說的【我們永遠無法利用一個test去確定一個sample是positive或negative,但我們可以用highly sensitive或highly specific的test去盡量排除某個sample是negative或是positive的可能性】這個概念嗎?

如果按照這個概念去推論,你就會知道如果你想要focus在positive sample,你要做的應該是盡量排除這個sample是negative的可能性,而不是嘗試證明他是positive。

所以對於上面那個狀況,我們應該換個角度去做假設。我們把重點放在這個population中有95%的人是non-users,然後在所有的non-users中,會有99% (specificity) 被identified出來。這時候,會被identified出來的non-user就是995×0.99=985.05人,而users中會被判定成negative的則有5×0.01 (false negative) =0.05人。

在這樣的情況下,我們就知道被驗出來是negative的人中,真正是negative的人有:985.05/(985.05+0.05)=0.999,也就是99.9%。因此,我們可以非常確定說99.9%的negative results是genuine negative,而測出來不是negative的samples是false positive的機會很低(false positive rate只有1%)。加上在一個binary test中,結果不是positive,就是negative,所以我們可以說這個不是negative的sample非常可能就是positive

但是別忘記這1%也是比例,放到超大的population裡面還是會有相當數量的absolute number,這也就是為什麼我們要複驗的原因。假設A test的false positive rate是7%,B test的false positive rate則是5%,那麼一個negative sample連續兩次都被判定為positive的機率就只有0.07×0.05=0.0035,也就是0.35%。因為這個情況發生的機率真的很低,所以我們就會主觀認定這個sample是positive的了。

由這樣說明之後,各位應該就會很明白,這類大規模的screening test,其實最適合還是用來【說明學生沒有吸毒】這件事。用來說明學生有吸毒還是可以,甚至可以focus在排除negative上,以複驗來增加【因為不是negative因此判定為positive】的信心,避開前面Bayes' Theorem那個例子的問題,所以實際執行上,還是會有一定效力的。

但是不要忘記了,我們還是永遠無法確定該生是否真的有吸毒,而且現實生活中的尿檢不論在sensitivity和specificity上,都不太可能達到上述假設的水準,更別提尿檢的結果很容易受到其他食用品或藥物的影響,所以全面實施尿篩,其實是一個很沒有效力的做法。不過比起這些支微末節而且常常被誤解、錯誤引用的機率和測試設計問題,全面尿篩其中隱含的【有罪推定】假設及其衍生出來的【侵犯人權】問題,只怕才是我們更應該花時間去關注的。

註:Sensitivity和specificity與false positive、false negative也可以用stats上的type I及type II errors去理解,但要說明這部分還要去扯null hypothesis,為了簡化,我就沒有特別在這篇文章裡面提起了。但如果你的stats底子不錯,用type I和type II errors的觀念去理解specificity和sensitivity是絕對正確,而且很可能會更容易的。

沒有留言: