Propos liminaires

Ce texte présente de manière simplifiée (et en français) des résultats publiés en anglais dans la revue Eurosurveillance. Les résultats présentés ci-dessous ont été réalisés avant la publication du manuscrit et peuvent différer un peu suite aux éditions lors du processus de revue. En cas de divergence éventuelle, la version publiée est la plus exacte.

Comme tous les autres rapports de l’équipe ETE depuis mars 2020, il est en accès libre sur le site https://covid-ete.ouvaton.org/.

Ce travail a pu être réalisé grâce à la collaboration avec la Société Française de Microbiologie (SFM) et aux laboratoires de virologie participants.

À propos des Ct

Les tests RT-PCR sont un des moyens de base de lutte contre les épidémies de maladies infectieuses. Ils consistent à détecter des microbes en amplifiant des motifs particulier de séquences génétiques présents dans leurs génomes.

En simplifiant, l’ADN extrait de l’échantillon (le prélèvement naso-pharyngé) est mélangé avec des sondes nucléiques ou “amorces” – correspondant au motif génétique spécifique à votre virus –, des nucléotiques fluorescents et une enzyme (la polymérase). Au cours d’un cycle de réaction PCR (réaction de polymérisation en chaîne), l’ADN s’ouvre (on parle de dénaturation) et donne 2 brins complémentaire. Si un des 2 brins d’ADN contient la séquence reconnue par l’amorce, celle-ci s’y lie. Puis la polymérase vient elle aussi se fixer et fabriquer un nouveau brin d’ADN complémentaire. Un nouveau cycle peut alors commencer. Toutefois, on a maintenant le double de copies de notre cible (le brin d’ADN initial et son brin synthétisé). Bref, si on avait \(X\) copies de notre cible, on en a \(2X\) (en réalité moins car il y a des pertes évidemment). Et à la fin du second cycle, cela passe à \(4X\) (en théorie). Au fur et à mesure que le nombre de copies de la cible augmente, la fluorescence augmente. En effet, chaque nouveau brin d’ADN est fabriqué à partir de nucléotides fluorescents. Le niveau de fluorescence permet donc de suivre le nombre de copies de notre cible. On arrête la réaction quand la fluorescence atteint un seuil prédéfini.

Au final, plus il y a de matériel génétique avec le motif recherché dans l’échantillon initial, moins il faut de cycles pour atteindre ce seuil. Ce nombre de cycle se note Ct (ou Cq). Si la valeur de Ct est trop élevée (par exemple 45) on considère que le motif recherché est absent car il y a toujours un risque de finir par amplifier un peu n’importe quoi. D’ailleurs, beaucoup de protocoles ne dépassent pas 40 cycles.

Pour des détails sur la réaction de polymérase en chaîne, la page Wikipédia est bien plus détaillée.

Il existe toute une variété de tests RT-PCR permettant de détecter le SARS-CoV-2 et beaucoup ont été analysés par la SFM (voir leur rapport en ligne). Ces tests se distinguent de par leurs cibles dans le génome viral (les motifs mentionnés dessus). Un test a souvent plusieurs cibles différentes pour permettre une meilleure spécificité. De plus, la RT-PCR associe une première étape de transcription reverse transformant un ARN en ADN puis une étape d’amplification de l’ADN synthèse par PCR (réaction de polymérisation en chaîne) grâce à une ADN polymérase. Le génome du SARS-CoV-2 est de type ARN donc pour le détecter dans les échantillons biologiques, il faut nécessairement utiliser une RT-PCR ce qui introduit encore de la variation.

En pratique, dans les laboratoires, on utilise un algorithme afin de définir si un test RT-PCR réalisé sur un échantillon est positif ou négatif (voire “positif faible”). Celui-ci prend en compte les Ct des différentes cibles. Ainsi, si les Ct pour les cibles sont tous élevés (supérieurs à 37), on pourra considérer que le risque est élevé que le signal ne soit en fait que du bruit.

En pratique toujours, les valeurs de Ct ne sont pas communiquées aux patients et peu analysées. En effet, en admettant que le Ct reflète la quantité de matériel génétique dans l’échantillon (de façon inversement proportionnelle : plus la valeur de Ct est faible, plus la charge virale serait élevée), il est compliqué d’en tirer des conclusions robustes car les variations peuvent fortement dépendre de la qualité du prélèvement ainsi que du contexte clinique. On sait aussi que la technique utilisée, le type de machines, voire l’opérateur qui réalise les analyses, influence la valeur de Ct, faisant d’elle une valeur extrêmement délicate à interpréter autrement que d’une manière binaire (présence ou absence).

Motivation de l’étude

La pertinence de cette étude repose fondamentalement sur la loi des grands nombres, que l’on pourrait énoncer dans ce contexte comme la réduction des aléas parasites au profit du signal à mesure que l’effectif d’étude augmente. Certes, il existe un bruit inhérent à toute mesure de Ct d’un test RT-PCR (qualité de l’échantillon, type de machine utilisée, type de réactifs utilisé). Toutefois, en admettant que ce bruit soit plus ou moins identique pour chaque test réalisé, on peut espérer que le nombre de tests réalisé compense ce bruit et permette de détecter des effets significatifs.

Ainsi, quelle information peut-on extraire des valeurs de Ct si compilées à grande échelle ?

Une des motivations de cette étude provient de la dynamique des populations. Lorsqu’une population est en croissance, sa pyramide des âges est biaisée du côté des valeurs plus faibles. À l’inverse, lorsqu’une population est en décroissance, les individus plus âgés sont sur-représentés. Au début d’une vague épidémique, le nombre de reproduction (\(R(t)\)) est strictement supérieur à 1, l’épidémie est en croissance quasi-exponentielle et on s’attend à observer davantage les infections les plus “jeunes”, c’est-à-dire les plus récentes. Or, la charge virale tend à atteindre son pic tôt dans l’infection et à diminuer, comme l’ont montré nos collègues du laboratoire IAME. On peut donc émettre l’hypothèse que dans les phases de croissance rapide de l’épidémie, on puisse avoir des valeurs de Ct plus faibles (car les infections sont plus jeunes et les charges virales plus élevées).

Cette hypothèse a une importance directe en santé publique. En effet, il s’écoule en moyenne 14 jours entre l’infection et l’hospitalisation éventuelle pour COVID-19. Si l’accélération (ou le ralentissement de l’épidémie) sont détectable de manière robuste via les Ct des tests RT-PCR, cela pourrait constituer un signal précoce potentiellement plus informateur que la proportion de tests positifs, cette dernière étant très biaisée par la population ciblée.

Structure des données

Ce travail se base sur des tests ayant été réalisés sur 2.220.212 personnes et est issu de la collaboration initiée par la SFM et le Centre National de Référence (CNR) des infections respiratoires avec 21 laboratoires de virologie français partenaires.

Ces résultats se concentrent en particulier sur 798848 tests réalisés sur autant de personnes entre le 21 janv. 2020 et le 30 nov. 2020. Notez que nous avons exclus les enfants de moins de 5 ans et les valeurs de Ct nulles ou supérieures à 50. De plus, les tests avec des caractéristiques aberrantes (date illisible, âges illisibles ou aberrant, jours post-symptômes multiples) ont été retirés.

La figure ci-dessous illustre le nombre de tests par jour ainsi que leurs laboratoires d’origine. On voit que deux laboratoires (à couverture nationale) ont partagé une grande partie des données analysées.

Ct et type de tests

La figure suivante illustre la variation des Ct selon le gène cible et la technique de détection utilisée. Ne sont représentés que les valeurs des tests positifs pour les techniques les plus utilisées. Ces résultats reflètent a priori les connaissances issues des comparaisons entre les kits effectuées par les CNR.

Attention, cette figure contient à la fois des tests correspondant à des diagnostics positifs et négatifs. À noter que beaucoup de tests négatifs ont été écartés car sans valeur de Ct associée (les valeurs supérieures à 40 sont rarement reportées).

Les codes pour les gènes ciblés sont R = RdRp, O = ORF1, N&O = N et ORF1 et ci = contrôle interne. On reviendra dans la section suivante sur le comparatif de Ct entre les gènes.

Modèle linéaire

Nous avons réalisé un modèle linéaire sur les valeurs de Ct en fonction de paramètres liés à l’hôte (âge, sexe et interaction entre les deux), à la technique (gène, kit et interaction entre les deux), au laboratoire ayant réalisé l’analyse et à l’infection (jours post-symptômes si connus). Ce modèle est réalisé uniquement pour tous les tests ayant des valeurs de Ct entre 1 et 50.

Comme le montre l’ANOVA ci-dessous, l’ensemble de ces facteurs sont significatifs avec pour la plupart des valeurs p extrêmement faibles.

anova(modele_general)
## Analysis of Variance Table
## 
## Response: Ct
##                                Df  Sum Sq Mean Sq    F value    Pr(>F)    
## Rt_noshift                      1    1266    1266    44.2391 2.924e-11 ***
## date_prelevement                1  105915  105915  3700.2062 < 2.2e-16 ***
## age                             1   28626   28626  1000.0732 < 2.2e-16 ***
## sexe                            1    1565    1565    54.6796 1.432e-13 ***
## gene_cible                      3   97085   32362  1130.5651 < 2.2e-16 ***
## technique_PCR                   9  201591   22399   782.5191 < 2.2e-16 ***
## laboratoire_analyse            57   76857    1348    47.1057 < 2.2e-16 ***
## symptoms                        3  251220   83740  2925.4979 < 2.2e-16 ***
## nature_prelevement              1    1281    1281    44.7564 2.245e-11 ***
## lieu_prelevement                3     357     119     4.1516  0.005979 ** 
## resultat_qualitatif             2  743434  371717 12986.1198 < 2.2e-16 ***
## variable_controle_id            9     625      69     2.4250  0.009457 ** 
## Rt_noshift:date_prelevement     1     305     305    10.6494  0.001102 ** 
## Residuals                   82933 2373890      29                         
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Preuve des précautions à prendre pour l’analyse, même notre variable contrôle intitulée variable_controle_id est sous un seuil de significativité “classique”. On verra ci-dessous que cet effet “significatif” est en fait très limité.

Cliquez sur le triangle pour voir la distribution gaussienne des résidus et les figures supplémentaires liées au modèle linéaire (pour les puristes).


Toutefois, explorer les effets en détails n’est pas inintéressant.

Cliquez sur le triangle pour voir tous les détails du modèle.
## 
## Call:
## lm(formula = Ct ~ Rt_noshift * date_prelevement + age + sexe + 
##     gene_cible + technique_PCR + laboratoire_analyse + symptoms + 
##     +nature_prelevement + lieu_prelevement + +resultat_qualitatif + 
##     variable_controle_id, data = dplyr::filter(Df, (gene_cible != 
##     "ci") & (age > 0) & (age < 90)))
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -38.136  -3.992  -0.502   3.583  24.109 
## 
## Coefficients: (1 not defined because of singularities)
##                                          Estimate Std. Error  t value Pr(>|t|)
## (Intercept)                             3.135e+02  2.409e+01   13.013  < 2e-16
## Rt_noshift                             -4.168e+01  1.277e+01   -3.263  0.00110
## date_prelevement                       -1.497e-02  1.299e-03  -11.528  < 2e-16
## age                                    -2.709e-02  1.112e-03  -24.366  < 2e-16
## sexeM                                  -1.085e-01  3.734e-02   -2.906  0.00367
## gene_cibleE                             3.751e-02  6.580e-02    0.570  0.56862
## gene_cibleO                             1.039e+00  4.310e-02   24.110  < 2e-16
## gene_cibleS                             1.234e+00  1.232e-01   10.019  < 2e-16
## technique_PCRArgene (BioMérieux)        4.570e+00  3.065e+00    1.491  0.13598
## technique_PCRBGI                        5.089e+00  3.071e+00    1.657  0.09748
## technique_PCRCNR Paris                  4.023e+00  3.081e+00    1.306  0.19160
## technique_PCRCobas 6800 (Roche)         6.867e+00  3.159e+00    2.174  0.02973
## technique_PCRDaan Gene (Appolonbiotek)  5.711e+00  3.096e+00    1.845  0.06508
## technique_PCRGenefinder                 1.214e+01  9.211e-01   13.181  < 2e-16
## technique_PCRother                      3.958e-01  2.850e+00    0.139  0.88955
## technique_PCRTechnique Drosten          2.506e+00  3.201e+00    0.783  0.43377
## technique_PCRThermofischer              6.802e+00  3.083e+00    2.206  0.02737
## laboratoire_analyseLAB_10               5.142e-01  8.405e-01    0.612  0.54068
## laboratoire_analyseLAB_100             -3.887e-03  9.022e-01   -0.004  0.99656
## laboratoire_analyseLAB_101              7.135e-01  1.226e+00    0.582  0.56050
## laboratoire_analyseLAB_102              7.569e-01  9.615e-01    0.787  0.43116
## laboratoire_analyseLAB_103              1.279e+00  1.197e+00    1.069  0.28520
## laboratoire_analyseLAB_104             -1.822e+00  1.520e+00   -1.198  0.23086
## laboratoire_analyseLAB_105              1.549e+00  1.048e+00    1.478  0.13948
## laboratoire_analyseLAB_106              1.005e+00  9.251e-01    1.086  0.27751
## laboratoire_analyseLAB_11               2.036e-01  8.636e-01    0.236  0.81365
## laboratoire_analyseLAB_110             -3.776e+00  2.552e+00   -1.480  0.13894
## laboratoire_analyseLAB_111              1.074e-01  2.005e+00    0.054  0.95728
## laboratoire_analyseLAB_112              2.762e+00  1.496e+00    1.846  0.06486
## laboratoire_analyseLAB_113              3.351e-01  1.999e+00    0.168  0.86687
## laboratoire_analyseLAB_119              4.341e+00  3.197e+00    1.358  0.17451
## laboratoire_analyseLAB_12              -9.850e-01  8.620e-01   -1.143  0.25318
## laboratoire_analyseLAB_120              6.010e+00  3.886e+00    1.547  0.12198
## laboratoire_analyseLAB_122              5.448e+00  8.343e-01    6.530 6.62e-11
## laboratoire_analyseLAB_124                     NA         NA       NA       NA
## laboratoire_analyseLAB_127              6.978e-01  9.552e-01    0.730  0.46511
## laboratoire_analyseLAB_128              2.543e+00  8.799e-01    2.890  0.00386
## laboratoire_analyseLAB_13              -8.983e-02  8.795e-01   -0.102  0.91865
## laboratoire_analyseLAB_14               4.059e-01  8.371e-01    0.485  0.62772
## laboratoire_analyseLAB_15               7.594e-01  8.400e-01    0.904  0.36602
## laboratoire_analyseLAB_16               4.032e-01  8.524e-01    0.473  0.63625
## laboratoire_analyseLAB_17               1.150e+00  9.415e-01    1.222  0.22178
## laboratoire_analyseLAB_18              -2.553e-01  8.452e-01   -0.302  0.76265
## laboratoire_analyseLAB_19              -4.253e-01  8.523e-01   -0.499  0.61774
## laboratoire_analyseLAB_2                3.666e-01  8.477e-01    0.432  0.66539
## laboratoire_analyseLAB_20               4.242e-01  8.383e-01    0.506  0.61284
## laboratoire_analyseLAB_21              -5.423e-01  8.589e-01   -0.631  0.52782
## laboratoire_analyseLAB_22              -2.616e+00  1.065e+00   -2.455  0.01407
## laboratoire_analyseLAB_23              -5.219e-01  8.569e-01   -0.609  0.54251
## laboratoire_analyseLAB_24              -9.639e-02  8.684e-01   -0.111  0.91162
## laboratoire_analyseLAB_25              -3.039e+00  2.808e+00   -1.082  0.27920
## laboratoire_analyseLAB_26               5.108e-01  8.463e-01    0.604  0.54616
## laboratoire_analyseLAB_27              -1.390e+00  2.801e+00   -0.496  0.61964
## laboratoire_analyseLAB_28              -4.148e+00  1.340e+00   -3.095  0.00197
## laboratoire_analyseLAB_29               5.169e+00  2.801e+00    1.845  0.06501
## laboratoire_analyseLAB_3               -5.656e-02  8.431e-01   -0.067  0.94651
## laboratoire_analyseLAB_30              -2.843e-01  8.703e-01   -0.327  0.74388
## laboratoire_analyseLAB_31              -8.453e-01  8.875e-01   -0.952  0.34088
## laboratoire_analyseLAB_32               1.355e+00  8.665e-01    1.564  0.11782
## laboratoire_analyseLAB_33              -9.117e-01  1.011e+00   -0.902  0.36726
## laboratoire_analyseLAB_4                2.280e-01  8.478e-01    0.269  0.78802
## laboratoire_analyseLAB_5                1.510e-01  8.552e-01    0.177  0.85980
## laboratoire_analyseLAB_6                1.075e-01  8.512e-01    0.126  0.89948
## laboratoire_analyseLAB_7               -1.340e-01  8.396e-01   -0.160  0.87321
## laboratoire_analyseLAB_77              -1.259e-01  8.672e-01   -0.145  0.88458
## laboratoire_analyseLAB_8                2.119e-01  8.835e-01    0.240  0.81046
## laboratoire_analyseLAB_83               1.288e+00  1.100e+00    1.171  0.24159
## laboratoire_analyseLAB_89              -7.852e+00  3.055e+00   -2.570  0.01016
## laboratoire_analyseLAB_9               -3.564e-01  8.574e-01   -0.416  0.67768
## laboratoire_analyseLAB_90              -7.820e+00  3.054e+00   -2.560  0.01046
## laboratoire_analyseLAB_91              -9.115e+00  3.058e+00   -2.980  0.00288
## laboratoire_analyseLAB_92               2.337e+00  1.293e+00    1.807  0.07079
## laboratoire_analyseLAB_96              -4.937e+00  9.743e-01   -5.067 4.05e-07
## laboratoire_analyseLAB_97              -2.853e+00  2.366e+00   -1.206  0.22789
## laboratoire_analyseLAB_99              -1.414e+00  2.819e+00   -0.502  0.61588
## symptomsentre_4_7_jours                 2.763e+00  5.154e-02   53.619  < 2e-16
## symptomsentre_8_14_jours                4.907e+00  8.933e-02   54.936  < 2e-16
## symptomsplus_de_14_jours                5.738e+00  1.533e-01   37.433  < 2e-16
## nature_prelevementOP                   -1.791e+00  3.425e-01   -5.229 1.71e-07
## lieu_prelevementehpad                   8.581e-01  3.506e-01    2.447  0.01439
## lieu_prelevementhospital               -8.772e-02  1.985e-01   -0.442  0.65850
## lieu_prelevementunknown                 1.796e-01  9.540e-02    1.882  0.05978
## resultat_qualitatif1                   -1.689e+01  1.349e-01 -125.222  < 2e-16
## resultat_qualitatif3                   -5.612e+00  1.607e-01  -34.919  < 2e-16
## variable_controle_id1                  -2.028e-01  8.310e-02   -2.440  0.01468
## variable_controle_id2                  -8.226e-02  8.301e-02   -0.991  0.32170
## variable_controle_id3                  -1.795e-01  8.304e-02   -2.161  0.03068
## variable_controle_id4                  -1.499e-01  8.335e-02   -1.798  0.07216
## variable_controle_id5                  -5.592e-02  8.286e-02   -0.675  0.49978
## variable_controle_id6                   9.683e-02  8.336e-02    1.162  0.24541
## variable_controle_id7                  -1.670e-01  8.313e-02   -2.008  0.04460
## variable_controle_id8                  -6.711e-02  8.339e-02   -0.805  0.42097
## variable_controle_id9                  -1.238e-01  8.278e-02   -1.496  0.13463
## Rt_noshift:date_prelevement             2.272e-03  6.962e-04    3.263  0.00110
##                                           
## (Intercept)                            ***
## Rt_noshift                             ** 
## date_prelevement                       ***
## age                                    ***
## sexeM                                  ** 
## gene_cibleE                               
## gene_cibleO                            ***
## gene_cibleS                            ***
## technique_PCRArgene (BioMérieux)          
## technique_PCRBGI                       .  
## technique_PCRCNR Paris                    
## technique_PCRCobas 6800 (Roche)        *  
## technique_PCRDaan Gene (Appolonbiotek) .  
## technique_PCRGenefinder                ***
## technique_PCRother                        
## technique_PCRTechnique Drosten            
## technique_PCRThermofischer             *  
## laboratoire_analyseLAB_10                 
## laboratoire_analyseLAB_100                
## laboratoire_analyseLAB_101                
## laboratoire_analyseLAB_102                
## laboratoire_analyseLAB_103                
## laboratoire_analyseLAB_104                
## laboratoire_analyseLAB_105                
## laboratoire_analyseLAB_106                
## laboratoire_analyseLAB_11                 
## laboratoire_analyseLAB_110                
## laboratoire_analyseLAB_111                
## laboratoire_analyseLAB_112             .  
## laboratoire_analyseLAB_113                
## laboratoire_analyseLAB_119                
## laboratoire_analyseLAB_12                 
## laboratoire_analyseLAB_120                
## laboratoire_analyseLAB_122             ***
## laboratoire_analyseLAB_124                
## laboratoire_analyseLAB_127                
## laboratoire_analyseLAB_128             ** 
## laboratoire_analyseLAB_13                 
## laboratoire_analyseLAB_14                 
## laboratoire_analyseLAB_15                 
## laboratoire_analyseLAB_16                 
## laboratoire_analyseLAB_17                 
## laboratoire_analyseLAB_18                 
## laboratoire_analyseLAB_19                 
## laboratoire_analyseLAB_2                  
## laboratoire_analyseLAB_20                 
## laboratoire_analyseLAB_21                 
## laboratoire_analyseLAB_22              *  
## laboratoire_analyseLAB_23                 
## laboratoire_analyseLAB_24                 
## laboratoire_analyseLAB_25                 
## laboratoire_analyseLAB_26                 
## laboratoire_analyseLAB_27                 
## laboratoire_analyseLAB_28              ** 
## laboratoire_analyseLAB_29              .  
## laboratoire_analyseLAB_3                  
## laboratoire_analyseLAB_30                 
## laboratoire_analyseLAB_31                 
## laboratoire_analyseLAB_32                 
## laboratoire_analyseLAB_33                 
## laboratoire_analyseLAB_4                  
## laboratoire_analyseLAB_5                  
## laboratoire_analyseLAB_6                  
## laboratoire_analyseLAB_7                  
## laboratoire_analyseLAB_77                 
## laboratoire_analyseLAB_8                  
## laboratoire_analyseLAB_83                 
## laboratoire_analyseLAB_89              *  
## laboratoire_analyseLAB_9                  
## laboratoire_analyseLAB_90              *  
## laboratoire_analyseLAB_91              ** 
## laboratoire_analyseLAB_92              .  
## laboratoire_analyseLAB_96              ***
## laboratoire_analyseLAB_97                 
## laboratoire_analyseLAB_99                 
## symptomsentre_4_7_jours                ***
## symptomsentre_8_14_jours               ***
## symptomsplus_de_14_jours               ***
## nature_prelevementOP                   ***
## lieu_prelevementehpad                  *  
## lieu_prelevementhospital                  
## lieu_prelevementunknown                .  
## resultat_qualitatif1                   ***
## resultat_qualitatif3                   ***
## variable_controle_id1                  *  
## variable_controle_id2                     
## variable_controle_id3                  *  
## variable_controle_id4                  .  
## variable_controle_id5                     
## variable_controle_id6                     
## variable_controle_id7                  *  
## variable_controle_id8                     
## variable_controle_id9                     
## Rt_noshift:date_prelevement            ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 5.35 on 82933 degrees of freedom
##   (396598 observations deleted due to missingness)
## Multiple R-squared:  0.3888, Adjusted R-squared:  0.3881 
## F-statistic: 573.4 on 92 and 82933 DF,  p-value: < 2.2e-16

Les différents effets sont maintenant décrits ci-dessous.

Variable “contrôle”

Pour commencer, décrivons notre variable contrôle, qui correspond à l’unité du numéro d’anonymat (ainsi pour le patient MPL_018 la valeur de la variable est 8). Le modèle linéaire montre que les patients dont le numéro se termine par 3 ou 7 on un Ct légèrement plus faible que les autres (0,1 cycles) mais l’ampleur de l’effet est inférieur à 0,1 pour un intercept 1.000 fois supérieur. La contribution de cet effet fortuit est ainsi négligeable devant celles des autres.

Effet “laboratoire”

On détecte aussi des effets très forts du laboratoire ayant effectué le test ou du kit de RT-PCR utilisé avec dans les deux cas des valeurs des facteurs étant associées à des différences de plus ou moins 5 unités de Ct, soit 50 fois le bruit de fond détecté avec la variable précédente. Ces différences peuvent avoir de multiples origines et ne seront pas détaillées plus par la suite.

Effet “résultat clinique”

Un résultat logique : les tests rendus comme “positif faible” (la valeur 3 dans le test) ou “négatif” (valeur 0) ont un Ct plus élevé que les tests rendus comme “positif” (valeur 1) avec un effet de l’ordre de 10 unités (soit 100 fois plus que l’effet de la variable contrôle). Par la suite, on ne représentera dans les figures que les tests positifs pour plus de clarté.

Effet “gène cible”

Pour les connaisseurs de virus à ARN, un effet particulièrement joli est celui du gène cible car cohérent avec des attendus de virologie décrits par Michalakis et alii (2021, Trends Microbiology). En effet, on trouve que par rapport au gène de référence N, les Ct associés aux gènes S et surtout ORF_1ab sont significativement plus élevés (d’un facteur moyen 0,3 et 1,7 respectivement). Ces effets sont exactement ceux auxquels on s’attend du fait de l’agencement des gènes dans le génome et du fait de la possibilité de génération d’ARNm subgénomiques (donc incomplets), qui enrichit la représentation des gènes proches de l’extrémité 3’. Or justement, le gène N est à l’extrémité 3’ et l’ORF1ab à l’extrémité 5’. Il faut noter que cet effet n’est pas directement visible depuis les données brutes car il existe une forte interaction avec le protocole de RT-PCR utilisé.

Effet “symptômes”

Pour 27 % des personnes, on sait si elles étaient symptomatiques ou pas au moment du test. On trouve que les personnes symptomatiques (ou celles dont les symptômes n’étaient pas connus) ont un Ct légèrement plus faible (de l’ordre de 1,2 unités) que les personnes asymptomatiques.

Effet “jours post-symptômes”

L’effet du nombre de jours post-symptômes est encore plus frappant. Il n’est pas connu pour toutes les infections mais on voit que les Ct pour les échantillons prélevés dans les 4 jours post-symptômes estimée (moins_4_jours) est plus faible que celui des échantillons prélevées entre 4 et 7 jours (entre_4_7_jours), lui-même plus faible que ceux prélevés entre 8 et 14 jours (entre_8_14_jours), lui-même plus faible que ceux prélevés 14 jours après les symptômes (plus_de_14_jours). Attention toutefois, cette donnée n’est disponible que pour 13 % des tests utilisés.

Effet “type de prélèvement”

On note enfin des effets du type de prélèvement avec les échantillons provenant des voies respiratoires basses ayant un Ct légèrement plus faible que les échantillons naso-pharyngés. À noter que les autres prélèvements (selles, frottis, etc.) on aussi un Ct légèrement plus faible que les écouvillons naso-pharyngés.

Effet “lieu de prélèvement”

Le lieu de prélèvement semble lui jouer un peu plus, les prélèvements réalisés dans les hôpitaux et, surtout, dans les EHPAD étant associés à des valeurs de Ct légèrement plus faibles (0,14 et 0,31 unités, respectivement) que ceux réalisés en ville. Là encore, ces effets sont à la limite de la distinction du bruit de fond et, de toutes façons, très certainement liés à des effets âge tels que décrits dessous.

Effet “état de l’épidémie”

Le nombre de reproduction temporel de l’épidémie \(R(t)\) calculé sur les hospitalisations 9 jours avant le test (donc a priori reflétant l’état de l’épidémie 5 jours avant le test RT-PCR) est aussi très corrélé au Ct. Attention toutefois car il existe une forte auto-corrélation temporelle. Ceci est détaillé dans la section suivante.

Effet âge et sexe

Les différences de Ct en fonction du sexe sont quasiment indétectable (0,12 unités). On peut éventuellement voir une différence en fonction de l’âge, dont la tendance générale est assez cohérente avec des charges virales moins élevées chez les plus jeunes. Le Ct diminue en moyenne de 1,2 unités par tranche de 10 ans.

Il faut cependant faire très attention à cette variable de l’âge. En effet, les critères de dépistage variaient très fortement en fonction des âges en 2020 (les enfants étaient très peu testés). Par conséquent, il est fort possible que ces différences d’âge reflètent plus des différences entre la date d’infection et la date de dépistage (un dépistage plus tardif se traduisant par un Ct plus élevé). Pour rappel aussi, il s’agit dans ces données des lignées initiale (donc pré-variant Alpha).

Ct et croissance de l’épidémie

Nous l’avons vu dans la section précédente, il existe une corrélation négative entre les valeurs de Ct et celles du nombre de reproduction temporel \(R(t)\) de l’épidémie. Toutefois, la comparaison de ces deux quantité doit être interprétée avec précaution compte tenu de leur propres variation temporelle. Dit autrement, les couples de valeurs (Ct, \(R(t)\)) que nous possédons ne sont pas tous indépendants. De plus, les valeurs de Ct que nous analysons sont obtenues au niveau national. Or, en particulier depuis l’été, la croissance de l’épidémie peut différer selon les régions.

Ces analyses ne portent que sur les tests réalisés en ville pour du dépistage et ayant un résultat positif.

Corrélation entre Ct et Rt

Afin d’étudier plus en détail un lien potentiel entre Ct et \(R(t)\), il faut d’abord corriger pour l’effet des nombreux facteurs que nous avons décrit sur la valeur du Ct.

Nous avons pour cela construit un modèle linéaire similaire à celui décrit dessus. Nous en avons extrait les résidus associés aux différentes observations, c’est-à-dire la part de la variance non expliquée par le modèle. (La distribution de ces résidus est à peu près gaussienne.)

Nous croisons ensuite ces valeurs de Ct, a priori corrigées pour différents biais (âge, laboratoire, test et symptômes) avec les valeurs de \(R(t)\). Les valeurs du nombre de reproduction sont calculées sur les chiffres des hospitalisations (données de Santé Publique France) et on s’attend donc qu’elles reflètent l’état de l’épidémie environ 14 jours plus tôt (Sofonea et alii 2021, Epidemics).

Pour cela, nous calculons la médiane de la distribution des valeurs de Ct chaque jour ainsi que le coefficient d’asymétrie associé. Ce dernier est calculé avec la fonction skewness() du logiciel R, qui prend le ratio entre le moment d’ordre 3 de la distribution et le cube de l’écart type.

Ces valeurs, comme celles du nombre de reproduction, sont lissées avec une moyenne glissante sur une semaine (les valeurs de Ct du jour \(j\) correspondent dont à la moyenne des valeurs sur les jours \(j-6\) jusque \(j\).

Les valeurs en noir correspondent aux valeurs de \(R(t)-1\) donc plus elles sont positives plus l’épidémie était en croissance rapide. On voit ainsi très nettement le début de la deuxième vague en octobre.

Les valeurs en rouge sont les écarts du Ct médian du jour de l’année par rapport à l’ensemble des valeurs mesurées entre août et décembre (ces écarts sont divisés par 4 pour faciliter la représentation). Les valeurs en bleu montrent ce même écart pour le coefficient d’asymétrie.

On voit donc une certaine corrélation entre ces séries temporelles. Par exemple, pour la 2e vague en octobre, on voit que les valeurs de Ct deviennent plus faibles que la moyenne plusieurs jours avant que le \(R(t)\) ne redevienne plus grand que 1 (calculé, on le rappelle, sur les données d’hospitalisation). De la même manière, en novembre, le Ct redevient plus haut que la moyenne avant que les chiffres des hospitalisations n’indiquent une décroissance. En revanche, pour la partie avant octobre, la corrélation est moins nette.

Enfin, il est intéressant de constater que fin novembre le Ct retrouve des valeurs plus faibles que la moyenne. Or le nombre de reproduction va remonter au cours du mois de décembre (ce n’est pas encore visible sur cette figure mais on peut le voir sur notre application Rt2).

Il est possible de formaliser cela à l’aide analyse simples de corrélations entre séries temporelles et de la fonction ccf(). On voit que pour la valeur médiane de Ct, la corrélation entre les deux séries temporelle est maximale avec un décalage de 11 jours.

Autrement dit, l’analyse des Ct pourrait fournir des informations que les données d’hospitalisation ne fourniront que 11 jours plus tard. Si cela se confirme, on serait donc avec un retard d’uniquement 3 jours sur l’état réel de l’épidémie, ce qui est assez cohérent avec l’intervalle de temps entre l’infection et le dépistage en ville (les symptômes apparaissant en moyenne aux alentours du 4e jour post-infection).

Prédiction des tendances hospitalières

Pour conclure, nous avons utilisé des modèles ARIMA pour analyser 4 séries temporelles, à savoir :

  1. notre cible, c’est-à-dire le nombre de reproduction journalier calculé sur les admissions COVID19 à l’hôpital (qui a priori ont un décalage de 14 jours avec l’état de l’épidémie),

  2. la médiane de la distribution des valeurs de Ct,

  3. l’asymétrie de la distribution des valeurs de Ct,

  4. la proportion de tests positifs dans la population.

L’idée est de déterminer dans quelle mesure les séries temporelles n°2, 3 et 4 nous aident à prédire la première.

Figure 3 de l’article montrant les 4 séries temporelle, l’erreur de prédiction faite en utilisant uniquement la première (en rouge) et l’erreur faite en utilisant une autre série temporelle.

On constate que l’erreur relative faite en utilisant que la série temporelle à prévoir (le nombre de reproduction calculé sur les hospitalisations) n’est souvent pas si mauvaise. Ceci est lié au fait qu’il y a une forte auto-corrélation temporelle dans les données (les hospitalisations de la veille sont proches de celles du lendemain).

C’est dans les périodes de changement abrupt, type confinement, que l’erreur augmente.

Pour les dates où la prédiction est mauvaise sans données extérieures, l’ajout d’information qui aide le plus est celui de la médiane de la distribution des Ct (en vert).

Pour conclure, il faut souligner que la période étudiée est limitée (mars à novembre 2020) et que les variations de l’épidémie (par exemple le nombre de reproduction) sont rares sur cette période. Répéter l’analyser sur une période temporelle plus large pourrait permettre d’affiner les modèles d’inférence.

Conclusion

Un message important est qu’il existe sans conteste un grand niveau de bruit dans les données de Ct recueillies au niveau national. Il faut aussi se méfier des corrélations potentielles sur un jeu de données de cette ampleur (798848 tests ayant des valeurs de Ct non nulles), comme le montre la “significativité” d’une variable a priori sans lien avec les Ct.

Toutefois, cette analyse sur des centaines de milliers de tests positifs fournit quelques enseignements :

  • On trouve des différences entre les kits qui peuvent être comparées aux résultats issus des analyses comparatives en laboratoire.

  • On trouve des différences biologiques qui peuvent être reliées à des variations décrites de charge virale, comme par exemple une augmentation avec l’âge ou une diminution avec le nombre de jours depuis les symptômes ou la présence/absence de symptômes.

  • Des effets plus légers tels que ceux liés au gène cible n’en sont pas moins inintéressants.

Concernant les liens avec l’état de l’épidémie, les résultats semblent assez prometteurs pour les périodes avec beaucoup de tests positifs. Ainsi, au niveau national, au mois d’octobre les variations de la médianes des distributions de Ct aident à prédire la tendance du nombre de reproduction temporel de l’épidémie (\(R(t)\)) mesuré sur les données d’hospitalisation.

Ces résultats, ainsi que ceux obtenus par Hay et alii (2021, Science) soulignent l’intérêt potentiel à exploiter les valeurs de Ct à un niveau populationnel dans une optique de santé publique. Ceci est d’ailleurs déjà en place au Royaume-Uni depuis 2020 et aide les autorités sanitaires à détecter des reprises épidémiques.

Sources et remerciements

  • L’équipe de modélisation de l’équipe ETE est composée de Samuel Alizon Thomas Bénéteau, Corentin Boennec, Marc Choisy, Gonché Danesh, Ramsès Djidjou-Demasse, Baptiste Elie, Alexander Massey, Yannis Michalakis, Claudia Ortiz, Bastien Reyné, Quentin Richard, Christian Selinger, Mircea T. Sofonea.

  • Ce projet a été initié par le groupe de travail de la SFM et l’équipe ETE.

  • Les données ont pu être analysées grâce au travail de laboratoires de virologie participant au groupe national de la SFM : CERBA, BIOGROUP, CHU La Pitié Salpêtrière APHP, CNR IPP, CHU de Bordeaux, CHU de Strasbourg, CHU de Rennes, CHU de Bordeaux, CHU de Saint-Etienne, CHU de Nîmes, CHU HEGP APHP, IHU Méditerranée Infection, CHU de Nantes, CHU de Nancy, CHU de Dijon, CHU d’Angers, CHU de Limoges, CHU de Caen, CHU de Montpellier, CHU Saint Louis APHP, CHU de Clermont-Ferrand, CHU Henri Mondor, CHU Bichat Claude Bernard APHP et CHU Cochin APHP.

  • Cette étude a été approuvée par l’IRB du CHU de Montpellier et est déposée sur ClinicalTrials.gov avec l’identifiant NCT04738331.

  • Contribution à ce travail :

    • Compilation des données et réalisation des analyses statistiques : Samuel Alizon, Christian Selinger et Mircea T Sofonea

    • Rédaction du rapport : Samuel Alizon

    • Relecture : Sonia Burrel

    • contact :

    • L’équipe ETE est soutenue par la région Occitanie (projet PHYEPI) et par l’Université de Montpellier.

  • Licence Creative Commons
    Ce(tte) œuvre est mise à disposition selon les termes de la Licence Creative Commons Attribution - Pas d’Utilisation Commerciale 4.0 International.