[PYTHON] Bedeutung der Eingrenzung des Testziels des PCR-Tests auf neues Koronavirus nach dem Bayes-Theorem

Einführung

Die Zahl der mit der neuen Coronavirus-Infektion (COVID-19) infizierten Menschen hat sich von China auf die ganze Welt ausgebreitet. Ab dem 14. März 2020 beträgt die Zahl der Infizierten 145.637 und die Zahl der Todesfälle 5.436. Betrachtet man die Situation in Japan, so beträgt die Zahl der Infizierten 734, was nur 9,1% von 8086 in Südkorea und 4,2% von 17.660 in Italien entspricht. Es wurde darauf hingewiesen, dass der Grund für diesen deutlichen Unterschied darin besteht, dass Japan die Anzahl der PCR-Tests begrenzt. Es ist die Theorie. Wie viel quetschen Sie also tatsächlich? Welche Bedeutung hat das Drücken? Ist nicht ein anderes Land überuntersuchend und medizinischer Zusammenbruch? , Usw. sorgen für Kontroversen. Da es jedoch nicht viele quantitative Diskussionen gibt, scheint es, dass die emotionale Theorie durch Fernsehen und Internet entwickelt wird, was das korrekte Verständnis behindert. Daher habe ich mich in diesem Artikel, basierend auf dem Bayes-Theorem **, auf die Bedeutung der Eingrenzung von PCR-Tests ** konzentriert.

Was ist ein PCR-Test?

Lassen Sie uns zunächst einen kurzen Blick auf einen PCR-Test (Polymerase Chain Reaction) werfen. Handbuch des Nationalen Instituts für Infektionskrankheiten und [Leitfaden für PCR-Tests von Takara Bio](http: // Unter Bezugnahme auf www.takara-bio.co.jp/kensa/pdfs/book_1.pdf) usw. lautet der Umriss der Inspektion wie folgt. PCR-detection.jpg Kurz gesagt, es scheint positiv zu sein, wenn die charakteristische Region des Virus durch Zersetzung des Doppelstrangs der DNA, Amplifikation einer bestimmten Stelle und Wiederholung erhöht wird und dieser Teil durch Elektrophorese visuell beobachtet werden kann. Es scheint, dass wenn nur der Teil, der wirklich für das Virus charakteristisch ist, ausreichend amplifiziert werden kann (2 ^ N-mal), er mit hoher Genauigkeit nachgewiesen werden kann (die Genauigkeit wird später diskutiert). Es scheint jedoch, dass die Erkennungsgenauigkeit aufgrund der folgenden Faktoren abnehmen kann.

Testempfindlichkeit / -spezifität

Sensibilität und Singularität sind einige der Wörter, die wir oft über das Testen hören, aber lassen Sie uns die verwandten Begriffe aussortieren. Dieses Wiki ist gut organisiert.

Es gibt verschiedene Theorien über den PCR-Test von COVID-19 (SARS-CoV-2), aber es scheint Berichte zu geben, dass die Sensitivität etwa 70% und die Spezifität 90% oder mehr beträgt. Die Empfindlichkeit kann jedoch durch die Probenentnahmemethode (Abwischen des Rachens usw. mit einem Wattestäbchen) und die Transportumgebung beeinflusst werden, und die Spezifität kann durch den PCR-Testprozess beeinflusst werden, sodass es sich nicht um einen bestimmten Wert handeln sollte. Machen wir das. In der Realität ist es physikalisch unmöglich, den gesamten menschlichen Körper auf Viren zu untersuchen, daher gibt es möglicherweise keinen wahren Wert für Sensitivität und Spezifität.

Übrigens, wenn ich die obige Definition von Sensitivität und Singularität betrachte, denke ich, dass viele Leute denken, dass sie sich auf die hintere Wahrscheinlichkeit und die gleichzeitige Wahrscheinlichkeit beziehen. Definieren wir es also noch einmal mit einer Formel.

\begin{eqnarray}
Empfindlichkeit: RC&=& P(Inspektion=T|Betroffen=T) \\
Singularität: SP&=& P(Inspektion=F|Betroffen=F) \\
Konformitätsrate: PC&=& P(Betroffen=T|Inspektion=T) \\
Richtige Antwortrate: AC&=& P(Inspektion=T,Betroffen=T) + P(Inspektion=F,Betroffen=F)\\
\end{eqnarray}

Darüber hinaus gibt es häufig falsch positive und falsch negative Ergebnisse, die wie folgt definiert sind.

\begin{eqnarray}
Falsch positive Rate: FP&=& P(Inspektion=T|Betroffen=F) = 1 -Singularität\\
Falsch negative Rate: FN&=& P(Inspektion=F|Betroffen=T) = 1 -Empfindlichkeit
\end{eqnarray}

Satz von Bayes

[Bayes 'Theorem](https://ja.wikipedia.org/wiki/%E3%83%99%E3%82%A4%E3%82%BA%E3%81%AE%E5%AE%9A%E7 % 90% 86) ist eine Formel, die die Beziehung zwischen Vorwahrscheinlichkeit und Nachwahrscheinlichkeit ausdrückt. Selbst im Bereich des maschinellen Lernens erscheint es häufig in der Bayes'schen Schätzung.

P(B|A)=\frac{P(A|B)P(B)}{P(A)}

Basierend auf dem Satz von Bayes können wir nun sehen, dass ** Präzision aus Empfindlichkeit und Singularität ** berechnet werden kann. Nehmen wir hier an, dass die positive Konformitätsrate des Tests PC (T) und die negative Konformitätsrate des Tests PC (F) ist.

\begin{eqnarray}
PC(T) &=& P(Betroffen=T|Inspektion=T) \\
&=&
 \frac{P(Inspektion=T|Betroffen=T) P(Betroffen=T)}{P(Inspektion=T)} \\
&=&
 \frac{P(Inspektion=T|Betroffen=T) P(Betroffen=T)}
{ P(Inspektion=T|Betroffen=T) P(Betroffen=T) + P(Inspektion=T|Betroffen=F) P(Betroffen=F)} \\
&=&
 \frac{RC \times P(Betroffen=T)}
{ RC \times P(Betroffen=T) + (1 - SP) \times P(Betroffen=F)} \\
  \\
PC(F) &=& P(Betroffen=F|Inspektion=F)\\
&=&
 \frac{P(Inspektion=F|Betroffen=F) P(Betroffen=F)}{P(Inspektion=F)} \\
&=&
 \frac{P(Inspektion=F|Betroffen=F) P(Betroffen=F)}
{ P(Inspektion=F|Betroffen=T) P(Betroffen=T) + P(Inspektion=F|Betroffen=F) P(Betroffen=F)} \\
&=&
 \frac{SP \times P(Betroffen=T)}
{ (1-RC) \times P(Betroffen=T) + SP \times P(Betroffen=F)} \\
\end{eqnarray}

Auch die richtige Antwortrate ist gleich.

\begin{eqnarray}
AC &=& P(Inspektion=T,Betroffen=T) + P(Inspektion=F,Betroffen=F) \\
&=&
 P(Inspektion=T|Betroffen=T)P(Betroffen=T) + P(Inspektion=F|Betroffen=F)P(Betroffen=F) \\
&=&
 RC \times P(Betroffen=T) + SP \times P(Betroffen=F)
\end{eqnarray}

Kann geschrieben werden.

Versuchen Sie mit Python zu rechnen

Verwenden wir nun Python, um die PC-positive Präzisionsrate PC (T), die PC-negative Präzisionsrate PC (F) und die korrekte Antwortrate (AC) zu berechnen.

Voraussetzungen

Voraussetzung ist, dass wir folgende Annahmen treffen.

Wie oben erwähnt, kennen wir die wahren Werte dieser Werte nicht. Daher ist es möglicherweise eine gute Idee, verschiedene Änderungen vorzunehmen und zu simulieren.

Importieren Sie die Bibliothek.

import numpy as np
import matplotlib.pyplot as plt

Definiert eine Funktion zum Berechnen der positiven Testgenauigkeitsrate PC (T), der negativen Testgenauigkeitsrate PC (F) und der korrekten Antwortrate (AC). Geben Sie als Argumente die vorherige Wahrscheinlichkeit P (betroffen = T) und die Parameter an.

def PCT(p, key):
    rc = key['rc']
    fp = 1. - key['sp']
    return rc * p / ( rc * p + fp * (1. - p))

def PCF(p, key):
    sp = key['sp']
    fn = 1. - key['rc']
    return sp * (1. - p) / ( fn * p + sp * (1. - p))

def AC(p, key):
    rc = key['rc']
    sp = key['sp']
    return rc*p + sp*(1. - p)

Dies ist der Teil, der durch Ändern der vorherigen Wahrscheinlichkeit P (betroffen = T) berechnet werden muss. Ich versuche, das Netz in der Nähe von 0 feiner zu machen.

key = {'rc' : 0.7, 'sp' : 0.95 }
pp = [ np.exp( - 0.1 * i) for i in range(0,100)]
pct = [ PCT( p, key) for p in pp]
pcf = [ PCF( p, key) for p in pp]
ac = [ AC( p, key) for p in pp]

Dies ist der Teil, der das Diagramm anzeigt.

plt.rcParams["font.size"] = 12
fig, ax = plt.subplots(figsize=(10,5))
ax.plot(pp, pct)
ax.plot(pp, pcf)
ax.plot(pp, ac)
ax.legend(['precision (infected)','precision (non-infected)','accuracy'])
xw = 0.1; xn = int(1./xw)+1
ax.set_xticks(np.linspace(0,xw*(xn-1), xn))
yw = 0.1; yn = int(1./yw)+1
ax.set_yticks(np.linspace(0,yw*(yn-1), yn))
ax.grid(which='both')
ax.set_xlabel('positive ratio (prior probability)')
plt.show()

Simulationsergebnis

Werfen wir einen Blick auf die Berechnungsergebnisse. PCR_PCAC_all.png

Die folgenden Trends können aus dieser Grafik abgelesen werden.

Weitere Überlegungen

In Anbetracht der Bedeutung der Durchführung des Tests sind sowohl die positive Konformitätsrate des Tests als auch die negative Konformitätsrate des Tests wichtig, um die Isolation zu bestimmen. Darüber hinaus werden die folgenden Indikatoren als wichtig angesehen.

\begin{eqnarray}
Falsch positive Rate: FP&=& P(Betroffen=F|Inspektion=T) = 1 - P(Betroffen=T|Inspektion=T) = 1 - PC(T) \\
Lie negative Rate: FN&=& P(Betroffen=T|Inspektion=F) = 1 - P(Betroffen=F|Inspektion=F) = 1 - PC(F) \\
\end{eqnarray}

Lassen Sie uns diese Werte berechnen und anzeigen.

fp = [1. - p for p in pct]
fn = [1. - p for p in pcf]

plt.rcParams["font.size"] = 12
fig, ax = plt.subplots(figsize=(10,5))
ax.plot(pp, fp)
ax.plot(pp, fn)
ax.legend([ 'fake positive', 'fake negative' ])
xw = 0.1; xn = int(1./xw)+1
ax.set_xticks(np.linspace(0,xw*(xn-1), xn))
yw = 0.1; yn = int(1./yw)+1
ax.set_yticks(np.linspace(0,yw*(yn-1), yn))
ax.grid(which='both')
ax.set_xlabel('positive ratio (prior probability)')
plt.show()

Hier ist das Ergebnis. PCR_FPFN_all.png

Offensichtlich hat die Falsch-Positiv-Rate die entgegengesetzte Beziehung zur Test-Positiv-Präzisionsrate PC (T), und die Falsch-Negativ-Rate hat die Gegenbeziehung zur Test-Negativ-Präzisionsrate PC (F). Die folgenden Trends können aus dieser Grafik abgelesen werden.

Erwägung

Aus dem Obigen können die folgenden Trends aus der Simulation bezüglich des PCR-Tests für eine COVID-19-Infektion abgeleitet werden. In Bezug auf die numerischen Werte ist zu beachten, dass die wahren Werte für Empfindlichkeit und Singularität nur geschätzte Werte sind.

Außerdem ...

Referenzlink

Ich habe auf die folgende Seite verwiesen.

[Pathogen Detection Manual 2019-nCoV Ver.2.8] (https://www.niid.go.jp/niid/images/lab-manual/2019-nCoV20200304v2.pdf) [PCR Experiment Guide] (http://www.takara-bio.co.jp/kensa/pdfs/book_1.pdf) F-Wert [Bayes 'Theorem](https://ja.wikipedia.org/wiki/%E3%83%99%E3%82%A4%E3%82%BA%E3%81%AE%E5%AE%9A%E7 % 90% 86)

Recommended Posts

Bedeutung der Eingrenzung des Testziels des PCR-Tests auf neues Koronavirus nach dem Bayes-Theorem
Lassen Sie uns die medizinische Kollapshypothese des neuen Koronavirus testen
Zeichnen Sie die Ausbreitung des neuen Koronavirus
Berechnen wir den Übergang der Grundreproduktionszahl des neuen Koronavirus nach Präfektur
Pandas des Anfängers, vom Anfänger, für den Anfänger [Python]
Schätzen Sie die maximale Infektiosität des neuen Coronavirus ab
GUI-Simulation des neuen Koronavirus (SEIR-Modell)
Lassen Sie uns eine Rangfolge der Anzahl der wirksamen Reproduktionen des neuen Koronavirus nach Präfektur erstellen