[PYTHON] Importance de la réduction de la cible de test du test PCR pour le nouveau virus corona compris par le théorème de Bayes

introduction

Le nombre de personnes infectées par la nouvelle infection à coronavirus (COVID-19) s'est propagé de la Chine vers le monde entier et, au 14 mars 2020, le nombre de personnes infectées est de 145637 et le nombre de décès est de 5436. Cependant, si l'on regarde la situation au Japon, le nombre de personnes infectées est de 734, soit seulement 9,1% de 8086 en Corée du Sud et 4,2% de 17 660 en Italie. Il a été souligné que la raison de cette nette différence est que le Japon limite le nombre de tests PCR. C'est la théorie. Par conséquent, combien serrez-vous réellement? Quelle est la signification de la compression? N'est-ce pas un autre pays surexaminant et effondré médical? , Etc. suscitent la controverse. Cependant, comme il n'y a pas beaucoup de discussions quantitatives, il semble que la théorie émotionnelle se développe à travers la télévision et Internet, ce qui empêche une compréhension correcte. Par conséquent, dans cet article, basé sur le théorème de Bayes, ** je me suis concentré sur l'importance de réduire les tests PCR **.

Qu'est-ce qu'un test PCR?

Tout d'abord, jetons un coup d'œil à ce qu'est un test PCR (Polymerase Chain Reaction). Manuel de l'Institut national des maladies infectieuses et [Guide for PCR testing of Takara Bio](http: // En se référant à www.takara-bio.co.jp/kensa/pdfs/book_1.pdf) etc., le plan de l'inspection est le suivant. PCR-detection.jpg En bref, il semble positif que la région caractéristique du virus soit augmentée en décomposant le double brin d'ADN, en amplifiant un site spécifique et en répétant, et cette partie peut être observée visuellement par électrophorèse. Il semble que si seule la partie qui est vraiment caractéristique du virus peut être suffisamment amplifiée (2 ^ N fois), elle peut être détectée avec une grande précision (la précision sera discutée plus loin). Cependant, il semble que la précision de détection puisse chuter en raison des facteurs suivants.

Test de sensibilité / spécificité

La sensibilité et la singularité sont quelques-uns des mots que nous entendons souvent à propos des tests, mais trions les termes associés. Ce wiki est bien organisé.

Il existe diverses théories sur le test PCR du COVID-19 (SARS-CoV-2), mais il semble que certains rapports indiquent que la sensibilité est d'environ 70% et la spécificité est de 90% ou plus. Cependant, la sensibilité peut être affectée par la méthode de prélèvement de l'échantillon (essuyer la gorge, etc. avec un coton-tige) et l'environnement de transport, et la spécificité peut être affectée par le processus de test PCR, il ne doit donc pas s'agir d'une valeur définitive. Faisons le. En réalité, il est physiquement impossible d'inspecter tout le corps humain à la recherche d'un virus, il se peut donc que la sensibilité et la spécificité n'aient aucune valeur réelle.

En passant, en regardant la définition de la sensibilité et de la singularité ci-dessus, je pense que beaucoup de gens pensent qu'il s'agit de probabilité postérieure et de probabilité simultanée. Alors définissons-le à nouveau avec une formule.

\begin{eqnarray}
Sensibilité: RC&=& P(Inspection=T|Affecté=T) \\
Singularité: SP&=& P(Inspection=F|Affecté=F) \\
Taux de conformité: PC&=& P(Affecté=T|Inspection=T) \\
Taux de réponse correct: AC&=& P(Inspection=T,Affecté=T) + P(Inspection=F,Affecté=F)\\
\end{eqnarray}

De plus, il y a des faux positifs et des faux négatifs qui sont souvent entendus, et ceux-ci sont définis comme suit.

\begin{eqnarray}
Taux de faux positifs: FP&=& P(Inspection=T|Affecté=F) = 1 -Singularité\\
Taux de faux négatifs: FN&=& P(Inspection=F|Affecté=T) = 1 -sensibilité
\end{eqnarray}

Théorème de Bayes

[Théorème de Bayes](https://ja.wikipedia.org/wiki/%E3%83%99%E3%82%A4%E3%82%BA%E3%81%AE%E5%AE%9A%E7 % 90% 86) est une formule qui exprime la relation entre la pré-probabilité et la post-probabilité. Même dans le domaine de l'apprentissage automatique, il apparaît souvent dans l'estimation bayésienne.

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

Maintenant, sur la base du théorème de Bayes, nous pouvons voir que ** la précision peut être calculée à partir de la sensibilité et de la singularité **. Ici, supposons que le taux de conformité au test positif est PC (T) et que le taux de conformité au test négatif est PC (F).

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

De plus, le taux de réponse correct est le même.

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

Peut être écrit.

Essayez de calculer avec Python

Maintenant, utilisons Python pour calculer le taux de précision au test positif PC (T), le taux de précision au test négatif PC (F) et le taux de réponse correct (AC).

Conditions préalables

Comme condition préalable, nous utilisons les hypothèses suivantes.

Comme mentionné ci-dessus, nous ne connaissons pas les vraies valeurs de ceux-ci, il peut donc être judicieux d'apporter divers changements et de simuler.

Importez la bibliothèque.

import numpy as np
import matplotlib.pyplot as plt

Définit une fonction pour calculer le taux de précision du test positif PC (T), le taux de précision du test négatif PC (F) et le taux de réponse correct (AC). Comme arguments, donnez la probabilité P (affectée = T) et les paramètres a priori.

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)

C'est la partie à calculer en modifiant la probabilité antérieure P (affectée = T). J'essaye de rendre le maillage plus fin près de 0.

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]

C'est la partie qui affiche le graphique.

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()

résultat de la simulation

Jetons un coup d'œil aux résultats du calcul. PCR_PCAC_all.png

Les tendances suivantes peuvent être lues à partir de ce graphique.

Plus de considération

Compte tenu de l'importance de la réalisation du test, le taux de conformité au test positif et le taux de conformité au test négatif sont importants pour déterminer l'isolement, mais en plus de cela, les indicateurs suivants sont considérés comme importants.

\begin{eqnarray}
Taux de faux positifs: FP&=& P(Affecté=F|Inspection=T) = 1 - P(Affecté=T|Inspection=T) = 1 - PC(T) \\
Taux de mensonge négatif: FN&=& P(Affecté=T|Inspection=F) = 1 - P(Affecté=F|Inspection=F) = 1 - PC(F) \\
\end{eqnarray}

Calculons et affichons ces valeurs.

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()

Voici le résultat. PCR_FPFN_all.png

De toute évidence, le taux de faux positifs est l'opposé du taux de précision du test positif PC (T), et le taux de faux négatifs est l'opposé du taux de précision du test négatif PC (F). Les tendances suivantes peuvent être lues à partir de ce graphique.

Considération

De ce qui précède, les tendances suivantes peuvent être dérivées de la simulation concernant le test PCR pour l'infection COVID-19. Concernant les valeurs numériques, il faut noter que les vraies valeurs de sensibilité et de singularité ne sont que des valeurs estimées.

En outre ...

Lien de référence

Je me suis référé à la page suivante.

[Manuel de détection des agents pathogènes 2019-nCoV Ver.2.8] (https://www.niid.go.jp/niid/images/lab-manual/2019-nCoV20200304v2.pdf) [Guide d'expérimentation PCR] (http://www.takara-bio.co.jp/kensa/pdfs/book_1.pdf) Valeur F [Théorème de Bayes](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

Importance de la réduction de la cible de test du test PCR pour le nouveau virus corona compris par le théorème de Bayes
Testons l'hypothèse d'effondrement médical du nouveau virus corona
Tracez la propagation du nouveau virus corona
Calculons la transition du nombre de reproduction de base du nouveau virus corona par préfecture
Pandas du débutant, par le débutant, pour le débutant [Python]
Estimer le pic d'infectivité du nouveau virus corona
Simulation GUI du nouveau virus corona (modèle SEIR)
Établissons un classement du nombre de reproductions efficaces du nouveau virus corona par préfecture