#!/usr/bin/perl use locale; $datejour=`date`; @ladate=split(" ",$datejour); $heure=$ladate[4]; $heure=~s/:.*$//g; $datepourfic= join("-",$ladate[0],$ladate[1],$ladate[2],$ladate[3])."-a-heure".$heure; $ficmorts="time_series_covid19_deaths_global.csv"; $ficmortsold=$ficmorts."-".$datepourfic; $fic="Graphes-Covid19-".$datepourfic."\.tex"; #20200413-1400 $ficdata="Donnees-$datepourfic"; #Paramètres $vrai=1; #FAIRE: ENLEVER: vrai=0 # $debut=35; #Départ effectif: 22 janvier > 1 SVP $lgmoymobile=5; $optionsaddplot{France}= "[line width=.5mm]"; #[red,mark=*] $optionsaddplot{Spain}= "[dashed]"; # dotted $optionsaddplot{US}= "[orange,mark=o]"; $seuilmorts=10; #Fin Paramètres if ($vrai) { system( "mv $ficmorts archives/$ficmortsold"); system( "wget https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_time_series/time_series_covid19_deaths_global.csv"); } #FAIRE Taiwan -> Taiwan*, #United Kingdom réglé; idem "Korea, South -> Korea-South" %nompays=( 'Afghanistan','Afghanistan', 'Angola','Angola', 'Argentina','Argentine', 'Australia','Australie', 'Austria','Autriche', 'Bangladesh','Bangladesh', 'Belgium','Belgique', 'Brazil','Brésil', 'Bulgaria','Bulgarie', 'Cameroun','Cameroun', 'Canada','Canada', 'Chad','Tchad', 'Chile','Chili', 'China','Chine', #fonctionne mal: par provinces 'Croatia','Croatie', 'Cuba','Cuba', 'Denmark','Danemark', #et rien dans province 'Finland','Finlande', 'France','France', 'Gabon','Gabon', 'Germany','Allemagne', 'Ghana','Ghana', 'Greece','Grèce', 'Honduras','Honduras', 'Iceland','Islande', 'India','Inde', 'Iran','Iran', 'Iraq','Irak', 'Italy','Italie', 'Japan','Japon', 'Kenya','Kénya', 'Koweit','Koweit', 'Lebanon','Liban', 'Lituania','Lituanie', 'Luxembourg','Luxembourg', 'Madagascar','Madagascar', 'Mali','Mali', 'Malta','Malte', 'Monaco','Monaco', 'Morocco','Maroc', 'Nepal','Népal', 'Netherlands','Pays-Bas', 'Nigeria','Nigéria', 'Norway','Norvège', 'Oman','Oman', 'Pakistan','Pakistan', 'Panama','Panama', 'Poland','Pologne', 'Portugal','Portugal', 'Qatar','Qatar', 'Romania','Roumanie', 'Russia','Russie', 'Singapour','Singapour', 'Slovenia','Slovénie', 'Spain','Espagne', 'Sweden','Suède', 'Switzerland','Suisse', 'Tunisia','Tunisie', 'United Kingdom','Grande-Bretagne', #et rien dans province 'US','États-Unis', 'Venezuela','Vénézuela', 'Yemen','Yémen', 'Taiwan','Taiwan', 'Turkey','Turquie', 'Korea-South', 'Corée du Sud' ); %pop=('Afghanistan','32225560', 'Angola','31127674', 'Argentina','45376763', 'Australia','25464116', 'Bangladesh','168100000', 'Belgium','11455519', 'Cameroun','26133035', 'Canada','37894799', 'Chile','19107216', 'China','1395380000', 'Croatia','4076246', 'Cuba','11280651', 'Denmark','5806081', 'Finland','5517919', 'France','67064000', 'Gabon','1672597', 'Germany','83149300', 'Ghana','30280482', 'Greece','10724599', 'Honduras','8576532', 'Iran','82800000', 'Italy','60317000', 'Japan','126010000', 'Kenya','47564300', 'Koweit','2742711', 'Lituania','2808901', 'Luxembourg','602005', 'Madagascar','26251309', 'Mali','19700000', 'Malta','475701', 'Monaco','37550', 'Nepal','29996478', 'Netherlands','17282163', 'Nigeria','201000000', 'Norway','5367580', 'Oman','4700000', 'Pakistan','207774520', 'Panama','4278500', 'Portugal','10276617', 'Qatar','2334029', 'Russia','146780700', 'Singapour','5703600', 'Spain','47100396', 'Sweden','10230185', 'Switzerland','8544527', 'Chad','16244513', 'Tunisia','11722038', 'Venezuela','32605423', 'Yemen','29600000', 'Austria','8858775', 'Brazil','211158000', 'Bulgaria','7000039', 'Iceland','323675', 'India','1368163000', 'Iraq','40150200', 'Lebanon','6100000', 'Morocco','35219547', 'Poland','38386000', 'Romania','19405000', 'Slovenia','2066880', 'US','329316000', 'United Kingdom','66436000', 'Taiwan','23600903', 'Turkey','82579000', 'Korea-South','51780000' ); #Préparation données open (D,"time_series_covid19_deaths_global.csv"); #Fabrication %hashtotalidx pour {$u,$pays} et %hashtotaldate (date fr, pays) while () { s/Taiwan\*/Taiwan/g; s/\"Korea, South\"/Korea-South/g; #United Kingdom réglé chop; s/\r//g; #Spécial MAC ($province,$pays, $lat,$long,@totalcas)=split(/,/); #LIGNE 1 if ($.==1) {@dates=@totalcas; foreach $i ($debut..$#dates) { $datefr=$dates[$i]; $datefr=~s/(\d+)\/(\d+)\/(\d+)/$2-$1/g; $datefrance[$i]=$datefr; $label.=$datefr."\,"; } $label=~s/,$//g; $xticklabels= "xticklabels=\{".$label."\}"; next; } #FIN LIGNE 1 next unless ($province eq ""); next if ! defined $pop{$pays}; $memopays{$pays}++; foreach $u ($debut..$#dates) #ouf, $u>-1 { if ($pays eq France) { $totalcas[59]=562; $totalcas[58]=460; $totalcas[57]=372; $totalcas[56]=254; $totalcas[55]=175; } $hashtotalidx{$u,$pays}=$hashtotaldate{$datefrance[$u],$pays}=$totalcas[$u]; $casdujouridx{$u,$pays}=$casdujourdate{$datefrance[$u],$pays}= $hashtotalidx{$u,$pays}-$hashtotalidx{$u-1,$pays}; } } close (D); #Valeurs de chaque pays: totaux après 22 jan + $debut, totaux après 10 morts foreach $u (keys %memopays) { @tmpmortspoplog=@tmpmortspop=@tmpmortslog=@tmpmorts=@tmp=(); @tmpaccrjour=@tmpaccrjourpop=(); foreach $d ($debut..$#datefrance) { push (@tmp,$hashtotalidx{$d,$u}); push (@tmpaccrjour,$casdujouridx{$d,$u}); push (@tmpaccrjourpop,sprintf("%.2f",1000000*$casdujouridx{$d,$u}/$pop{$u})) ; #Seuil 10 morts if ($hashtotalidx{$d,$u}>=$seuilmorts) {next if ! defined $pop{$u}; $memopaysseuil{$u}++; push (@tmpmorts,$hashtotalidx{$d,$u}) ; push (@tmpmortslog,sprintf("%.2f",logeg($hashtotalidx{$d,$u}))); push (@tmpmortspop,sprintf("%.2f",1000000*$hashtotalidx{$d,$u}/$pop{$u})) ; push (@tmpmortspoplog,sprintf("%.2f",logeg(1000000*$hashtotalidx{$d,$u}/$pop{$u}))) ; } } # @s = map( { fonction($_) } @t ) $valeurspays{$u}=join(",",@tmp); $valeurspaysseuil{$u}=join(",",@tmpmorts); $valeurspaysseuillog{$u}=join(",",@tmpmortslog); $valeurspaysseuilpop{$u}=join(",",@tmpmortspop); $valeurspaysseuilpoplog{$u}=join(",",@tmpmortspoplog); $accrjour{$u}=join(",",@tmpaccrjour); $accrjourpop{$u}=join(",",@tmpaccrjourpop); $accrjourmob{$u}= join(",",liste2chiffresapresvirg(moyennemobile($lgmoymobile,@tmpaccrjour))); #problème: trop long!!! $accrjourmobpop{$u}= join(",",liste2chiffresapresvirg(moyennemobile($lgmoymobile,@tmpaccrjourpop))); } #On copie open (D,">$ficdata"); print D ">>>> Décès cumulés, depuis le $dates[$debut]\n"; print D "date,",join(",",(@dates)[$debut..$#datefrance]),"\n"; print D "datefr,",join(",",(@datefrance)[$debut..$#datefrance]),"\n"; foreach $p (sort keys %memopays) {print D $p,",",$valeurspays{$p},"\n";} print D "\n>>>> Décès cumulés, depuis le $seuilmorts e mort\n"; foreach $p (sort keys %memopays) { next if ($valeurspaysseuil{$p} eq ""); $previrg=$valeurspaysseuil{$p}; $virg=$previrg=~s/\,//g; next if $virg <10; #au moins 10 jours... $virgmax=$virg if $virgmax< $virg; print D $p,",",$valeurspaysseuil{$p},"\n";} print D "\n>>>> LOG Décès cumulés, depuis le $seuilmorts e mort\n"; foreach $p (sort keys %memopays) { next if ($valeurspaysseuil{$p} eq ""); $previrg=$valeurspaysseuil{$p}; $virg=$previrg=~s/\,//g; next if $virg <10; #au moins 10 jours... $virgmax=$virg if $virgmax< $virg; print D $p,",",$valeurspaysseuillog{$p},"\n";} print D "\n>>>> Décès cumulés rapportés à la pop (1 million hab), depuis le $seuilmorts e mort\n"; foreach $p (sort keys %memopays) { next if ($valeurspaysseuil{$p} eq ""); $previrg=$valeurspaysseuil{$p}; $virg=$previrg=~s/\,//g; next if $virg <10; #au moins 10 jours... $virgmax=$virg if $virgmax< $virg; print D $p,",",$valeurspaysseuilpop{$p},"\n";} print D "\n>>>> LOG des décès cumulés rapportés à la pop (1 million hab), depuis le $seuilmorts e mort\n"; foreach $p (sort keys %memopays) { next if ($valeurspaysseuil{$p} eq ""); $previrg=$valeurspaysseuil{$p}; $virg=$previrg=~s/\,//g; next if $virg <10; #au moins 10 jours... $virgmax=$virg if $virgmax< $virg; print D $p,",",$valeurspaysseuilpoplog{$p},"\n";} #Accroissements # accrjour, accrjourpop, accrjourmob, accrjourmobpop print D "\n>>>> Accroissement des décès \n"; foreach $p (sort keys %memopays) { next if ($valeurspaysseuil{$p} eq ""); print D $p,",",$accrjour{$p},"\n";} print D "\n>>>> Accroissement des décès rapportés à la pop (1 million hab)\n"; foreach $p (sort keys %memopays) { next if ($valeurspaysseuil{$p} eq ""); print D $p,",",$accrjourpop{$p},"\n";} print D "\n>>>> Accroissement des décès, moy mobile sur $lgmoymobile jours \n"; foreach $p (sort keys %memopays) { next if ($valeurspaysseuil{$p} eq ""); print D $p,",",$accrjourmob{$p},"\n";} print D "\n>>>> Accroissement des décès rapportés à la pop (1 million hab), moy mobile sur $lgmoymobile jours\n"; foreach $p (sort keys %memopays) { next if ($valeurspaysseuil{$p} eq ""); print D $p,",",$accrjourmobpop{$p},"\n";} #Nom français du pays et pop print D "\n>>>> Nompays,Nom français,popWikiPedia\n"; foreach $p (sort keys %memopays) {next if ($valeurspaysseuil{$p} eq ""); next if ! defined $pop{$p}; print D $p,",",$nompays{$p},",",$pop{$p},"\n"; } close (D); #Légende, etc. $caption{accrjour}="\\caption{Nombre de nouveaux décès comptabilisés chaque jour. Les sauts peuvent être liés à de nouvelles modalités de rencesement (ex.: intégration des décès en Ehpad le 2 avril pour la France). Ce graphique n'est pas très lisible, mais donne d'emblée l'évolution journalière du phénomène et permet une première comparaison entre pays: Espagne dépassant l'Italie dès le 25 mars, décroissance de ces deux pays (11 avril), statistiques erratiques de la France, flambée en Grande-Bretagne. Mais ces graphiques ne tiennent pas compte de la population des pays. \\textbf{Attention}, la valeur de l'Allemagne le 11 avril est bizarre (négative, cf. ma remarque dans l'introduction).}"; $caption{accrjourpop}="\\caption{Proportion du nombre de morts par jour pour un million d'habitants dans les pays considérés. L'accroissement soudain des statistiques françaises le 2 avril (+900 décès Ehpad) met la France au niveau moyen de l'Espagne, qui dépassait déjà l'Italie vers le 25 mars. Ces 3 pays et la Grande-Bretagne sont au même niveau le 11 avril 2020. %Les graphiques de l'Allemagne et de l'Autriche donnent à réfléchir, comme celui (affiché plus bas) de la Suède, qui a choisi des mesures socialement très confortables. } "; $caption2{accrjourpop}="\\caption{Proportion du nombre de morts par jour pour un million d'habitants dans les pays considérés. La situation de la \\textbf{Belgique} est préoccupante, à l'opposé de celle du Portugal et de l'Autriche, qui organise sa sortie de confinement. La situation française sert de point de comparaison.}"; $caption3{accrjourpop}="\\caption{Proportion du nombre de morts par jour pour un million d'habitants dans les pays considérés. La situation de petits pays riches, comme la Suisse, est préoccupante. Celle de la Suède, non confinée au 20 avril, voisine parfois celle de la France. Les autres pays scandinaves ont des taux de mortalité bas. %Est-ce du fait d'une statistique nationale conçue différemment? Les données luxembourgeoises semblent erratiques, comme les françaises. De plus, celles du 12 au 15 avril sont \\emph{étranges}: 62,66,69,67: deux morts de moins le 15 que le 14\\ldots }"; $caption{accrjourmob}="\\caption{Moyenne mobile sur \\textbf{$lgmoymobile jours} du nombre de nouveaux décès comptabilisés chaque jour. Graphique produit à fins de lissage. La moitié des $lgmoymobile jours est automatiquement «\\,perdue\\,» avec cette méthode, surtout adaptée à des séries longues (1 jour si l'étalement est de 3 jours, 2,5 jours s'il est de 5, etc.). On voit néanmoins que les décès baissent en Italie, 3 jours après en Espagne; on espère que les décroissances française et britannique vont se prolonger.}"; $caption{accrjourmobpop}="\\caption{Moyenne mobile sur \\textbf{$lgmoymobile jours} de la proportion de décès quotidiens par million d'habitants. Graphique produit à fins de lissage. Au 12 avril, la situation britannique est inquiétante, celle de la France, qui a été la pire des pays considérés, s'améliore. Si la décroissance de la pandémie dans les pays considérés semble acquise au 20 avril, elle s'avère plus lente que sa croissance. Cf. le cas de l'Italie}"; $caption2{accrjourmobpop}="\\caption{Moyenne mobile sur \\textbf{$lgmoymobile jours} de la proportion de décès quotidiens par million d'habitants. Situation insoutenable de la Belgique, sous contrôle aux Pays-Bas depuis la fin mars, contrairement aux États-Unis.}"; $caption3{accrjourmobpop}="\\caption{Moyenne mobile sur \\textbf{$lgmoymobile jours} de la proportion de décès quotidiens par million d'habitants. Comme auparavant, on constate ici la lenteur de la décroissance de la pandémie, quand celle-ci se produit.}"; $caption{valeurspaysseuil}="\\caption{Décès cumulés pour chaque pays depuis le jour du 10\\up{e} décès de chaque pays. Cette représentation commence avec des dates différentes selon les pays. Elle permet d'imaginer les évolutions des pays les plus tardivement atteints par la pandémie. Mais à part une évolution «\\,exponentielle\\,» au tout début suivie d'une droite (linéaire), elle ne permet pas d'inférence, même si nous remarquons un triste peloton de tête: Espagne, Grande-Bretagne, France, Italie. Sur ce graphique, un plateau correspond à un arrêt de la mortalité.}"; $caption{valeurspaysseuillog}="\\caption{Logarithme des décès cumulés pour les pays étudiés depuis le jour du 10\\up{e} décès de chaque pays. On commence ici à \\emph{lire} des tendances désormais connues: montée linéaire (la croissance exponentielle du début de la mortalité devient ici une droite: effet log) au début de la pandémie, lent infléchissement 20 jours (environ) après ce 10\\up{e} décès (Espagne, Italie), montée lente jusqu'à un sommet prévu pour l'Italie vers les 10-12 avril, et donc 10 jours après pour la France. La plus faible pente de l'Allemagne pose de réelles questions de traitement politique et logistique de la pandémie. %Si la décroissance du nombre de décès a le même rythme que sa croissance (ce qui n'est qu'une hypothèse: le confinement et les hospitalisations peuvent accélèrer la décroissance de la courbe), on ne retombera pas en dessous du seuil de 200 décès par jour en France avant le 25 mai--1\\up{er} juin (hypothèse étayée par les graphiques des moyennes mobiles). Ce graphique me sert de \\textbf{référence}. Il rend inutile la normalisation par la population du pays, puisque l'échelle est logarithmique. Ici encore, quand le nombre quotidien de décès devient nul, la courbe devient plate. }"; $caption2{valeurspaysseuillog}="\\caption{Logarithme des décès cumulés pour les pays étudiés depuis le jour du 10\\up{e} décès de chaque pays. États-Unis, Belgique et France semblent dans le même lot. La situation portugaise méritera quelques commentaires.}"; $caption3{valeurspaysseuillog}="\\caption{Logarithme des décès cumulés pour les pays étudiés depuis le jour du 10\\up{e} décès de chaque pays. %La Turquie passe de 9 à 30 morts, ce qui explique que sa courbe démarre plus haut que les autres. Si les statistiques sont fiables, le pays le plus mal loti reste\\ldots{} la France: à l'opposé de celle de la Finlande. %Ce graphique et les précédents méritent d'amples commentaires, que j'appelle de mes v\\oe ux. }"; $caption{valeurspaysseuilpop}="\\caption{Proportion, pour un million d'habitants, du nombre de décès cumulés pour les pays étudiés depuis le jour du 10\\up{e} décès de chaque pays. Ce graphique, qui normalise à sa façon les variations de taille (démographique) des pays, reste informatif: forte pente de l'Espagne, etc. La fin de la pandémie dans un pays se signalera par une forme finale de sa courbe en plateau.}"; $caption2{valeurspaysseuilpop}="\\caption{Proportion, pour un million d'habitants, du nombre de décès cumulés pour les pays étudiés depuis le jour du 10\\up{e} décès de chaque pays. Là encore, focus sur la Belgique, dont nous entendons peu parler dans les médias français.}"; $caption3{valeurspaysseuilpop}="\\caption{Proportion, pour un million d'habitants, du nombre de décès cumulés pour les pays étudiés depuis le jour du 10\\up{e} décès de chaque pays. % (le Luxembourg (602~005 hab.) démarre avec 15 dècès contre 9 la veille, d'où sa courbe au dessus des autres). Il faudra étudier attentivement la situation des pays scandinaves. Ce graphique donne envie d'en savoir plus sur les pays considérés, de disposer de données fiables, en espérant que cette pandémie soit enfin comprise et maîtrisée. Malgré une incitation à comparer les situations française et suédoise, la difficulté à commenter ce graphique(temporalités différentes selon les pays) ouvre sur une question: celle des \\textbf{apports, dangers et limites} des représentations (carto)graphiques. }"; $caption{valeurspaysseuilpoplog} = "\\caption{Logarithme de la proportion, pour un million d'habitants, du nombre de décès cumulés pour les pays étudiés depuis le jour du 10\\up{e} décès de chaque pays. Ce graphique permet lui-aussi de bien prendre conscience de la lenteur du phénomène et de son évolution à moyen terme (un ou deux mois).}"; $labelimage{accrjour}= "ylabel={Décès quotidiens},"; $labelimage{accrjourpop}= "ylabel={Décès quotidiens / pop. du pays},"; $labelimage{accrjourmob}= "ylabel={Décès quotidiens. Lissage.},"; $labelimage{accrjourmobpop}= "ylabel={Décès quotidiens / pop. du pays. Lissage},"; $labelimage{valeurspaysseuil}= "ylabel={Décès cumulés, en dizaines de milliers},"; $labelimage{valeurspaysseuillog}= "ylabel={Décès cumulés, log (népérien: e).},"; $labelimage{valeurspaysseuilpop}= "ylabel={Décès cumulés / pop. du pays, à partir du 10\\up{e}},"; $labelimage{valeurspaysseuilpoplog}= "ylabel={Log (base e) du \\emph{Nombre de décès cumulés / pop. du pays}},"; $introjournal=" \\textbf{Note} \\quad Document produit au format A3 paysage pour une meilleure lisibilité des graphiques. Visualisation conseillée sur de grands écrans. Source: \\url{http://barthes.enssib.fr/coronavirus}. \\textbf{Attention} \\quad Le format général de ce journal sera prochainement remanié. \\bigskip \\large \\textbf{Pays à l'évolution inquiétante le \\today: Belgique, Grande-Bretagne, France, États-Unis.} \\normalsize Moins inquiétants: \\textbf{Allemagne, Portugal, Autriche, Pays-Bas, Danemark, Norvège, Finlande}. \\section*{Préliminaire} \\begin{multicols}{3} \\subsection*{Fonction de ces analyses et graphiques} Cette introduction reprend celle des jours précédents. Les graphiques sont sélectionnés et commentés en leurs légendes, actualisés au fil des jours. Le propos de ce journal est de nous aider tous (moi le premier) à cerner l'état et l'évolution de la pandémie. De plus en plus de sources et synthèses fiables existent. Ce «\\,quotidien\\,» fonctionnel depuis le 27 mars espère citer les meilleures, et proposer des graphiques (inédits, sinon pédagogiques) permettant à tous et toutes de se faire une idée de la durée de la pandémie, du confinement, de son utilité, et de débattre sereinement des questions politiques, sociales, philosophiques, économiques et finalement épistémologiques ---\\,centrales pour l'auteur ce ces lignes\\,--- qu'alimentent la pandémie et son traitement. %Une première série de questions est listée à partir du point \\ref{ouvrirdebat}. \\subsection*{Débattre, graphes à l'appui} Dans ce débat, j'ai mes propres intuitions et certitudes. Je trouve inutile de les préciser, car je me reconnais dans nombre d'analyses ou de critiques médiatisées. J'ai choisi de privilégier des arguments \\textbf{quantitatifs et visuels} pour aider au dialogue entre des personnes aux points de vue différent. En effet, un double constat m'inquiète. \\begin{enumerate} \\item J'ai l'impression que, dans l'espace universitaire, savant, scientifique, etc. deux logiques rigoureuses, étayées, rationnelles et de grande qualité se déploient, et \\textbf{s'ignorent}: \\begin{enumerate} \\item celle des spécialistes du nombre et de la modélisation, inquiets de l'expansion de la pandémie, parfois confiants en des solutions technologiques (surveillance du confinement via nos téléphones), sensibles aux solutions probabilistes; donc assurément universalistes et démocrates (le virus nous touche tous, il faut protéger/soigner tout le monde); \\item celle des spécialistes des sciences sociales et de la pensée critique, peut-être moins à l'aise avec les nombres (auxquels ils n'ont pas toujours accès) et plus ancrés dans l'histoire; donc sensibles aux enjeux de pouvoir et aux menaces sur les libertés individuelles, témoins attentifs de la gestionnarisation des savoirs et des services publics, fins connaisseurs des logiques opportunistes associées (économie, démocratie) et sachant analyser les effets des options politiques nationales. \\end{enumerate} Il existe des passerelles entre ces deux mondes (j'espère en être une). Pour autant, je les vois peu communiquer. D'où ces graphiques et commentaires, censés créer un \\textbf{tronc commun} à partir duquel le dialogue pourrait se construire. \\item De plus, j'ai l'intuition que le monde «\\,savant\\,» précité (SHS comme numérique) communique peu avec celui des gens livrés à eux-mêmes: dont les rationalités se construisent par les médias\\footnote{Le 9 avril à 22h, il me faut 10 mn pour trouver des informations sur le site du \\emph{Guardian} quant à l'état de santé de Boris Johnson, premier ministre de Grande-Bretagne, en soins intensifs depuis le lundi 6 avril 2020: «\\,Boris Johnson has left intensive care and returned to a ward\\,» (\\url{https://www.theguardian.com/world/live/2020/apr/09/coronavirus-live-news-global-cases-uk-us-usa-worst-daily-death-toll-latest-updates}, 21h03, 9 avril 2020). Via un moteur de recherche j'apprends que son état est stable (le Point, information de la veille). En fouillant Le Monde, j'apprends que «\\,Le premier ministre Boris Johnson, toujours hospitalisé, est sorti jeudi du service de soins intensifs\\,» (\\url{https://www.lemonde.fr/planete/article/2020/04/09/coronavirus-dans-le-monde-les-pays-europeens-exhortes-a-surmonter-leurs-divisions-face-aux-consequences-economiques_6036058_3244.html}, 21h03, 9 avril). Le dimanche 12 avril, la première page du Monde en ligne a comme premier titre «\\,Coronavirus en direct: Boris Johnson est sorti de l'hôpital mais la pandémie frappe toujours durement l'Europe\\,» (\\url{https://www.lemonde.fr}, 17h). Cet exemple donne à penser que, pour l'information médiatique, mise en scène et recherche d'effets de stupeur semblent plus pertinentes que mise à jour et optimisation de cette information; il y a là de quoi désorienter plus d'une personne curieuse. }, les oui-dire (ou web-dire) et les expériences. En matière de Covid-19, je sens une frontière entre ceux qui ont les moyens de savoir et les autres. Le gouvernement ne s'y trompe pas, qui est prêt à financer des études sur les \\emph{fake news} liées au virus. Les associations non plus, qui s'inquiètent de l'agrégation de communautés haineuses autour de boucs émissaires (le «\\,juif\\,», le «\\,chinois\\,», le «\\,blanc\\,», l'«\\,immigré\\,» à l'origine du virus, etc.). \\end{enumerate} Aussi mon propos est-il de participer à la (re?)construction de ces deux types de dialogue: \\textbf{partager des analyses et juger n'empêchent pas de \\textsc{réparer}}. \\subsection*{Précautions et méthodologie synthétique} Nous disposons de \\textbf{peu de données} sur le Covid-19. Par exemple, les chiffres sur les contaminés (cas confirmés) ne sont pas utiles car il y a beaucoup de porteurs sans symptômes (asymptomatiques, peut-être 80\\%?) et car ils varient beaucoup selon les pays: tous ne pratiquent pas des tests, les tests instantanés (suis-je contaminé aujourd'hui?) ont une marge d'erreur non-négligeable et doivent obéir à des protocoles contraignants, qui imposent en France d'utiliser un produit unique (celui vendu par Invitrogen, entreprise américaine), les autres (ai-je été en contact avec le virus?) sont peu répandus, etc. Je donne en fin de document des liens vers des textes qui complètent ce point. De ce fait, je privilégie les chiffres officiels du \\textbf{nombre de personnes mortes à l'hôpital} des effets du virus. Ce nombre peut certainement être doublé (quadruplé?), si nous prenons en compte les personnes mortes chez elles, dans une structure médicalisée pour vieillards (du type Ehpad en France), etc., même si ces cas sont parfois soudainement ajoutés, comme on le voit dans les chiffres francais du 2 avril; et enfin toutes les personnes fragiles ou gravement malades (hors coronavirus), qui ne peuvent plus profiter d'une assistance hospitalière du fait de l'engorgement actuel. \\subsection*{Estimations} Si on s'en tient à des statistiques qui font consensus (sur 600~000 personnes, 28 mars 2020), 85 \\% de cas dits confirmés sont bénins, 15 \\% sévères, 5 \\% de cas nécessitent des soins intensifs. Si on considère un taux de létalité de 2,5\\%, avec les chiffres officiels proposés dans ce journal (source actualisée toutes les nuits: \\url{https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_time_series/time_series_covid19_deaths_global.csv}), on peut en déduire, \\emph{de façon très approximative}, que, pour 500 décès en hôpital (chiffres du 31 mars en France), il y en a au moins 1000 de réels, ce qui correspond à 2000 hospitalisations indispensables (qui vont durer plusieurs jours) et 6000 cas sévères\\footnote{Ces chiffres corroborent exactement les informations du Monde du 2 avril: «\\,4 503 personnes sont mortes du Covid-19 depuis le 1er mars, soit une hausse de 471 décès de mercredi 1er avril à jeudi. Parmi les plus de 26 000 personnes hospitalisées (+ 1 607 en vingt-quatre heures), 6 399 sont en réanimation\\,». Source: \\url{https://www.lemonde.fr/planete/article/2020/04/02/coronavirus-en-france-les-transferts-de-malades-s-accelerent-couvre-feu-en-martinique-et-en-guadeloupe_6035245_3244.html}}. Les données de ce site commencent le 22 janvier 2020. Sur ces graphiques, elles commencent $debut jours plus tard. \\subsection*{Évolution au quotidien} Dans ce document, l'accent a été mis sur la \\textbf{dérivée} du phénomène, négligée par les médias avant avril: le taux d'accroissement quotidien des décès, plutôt que leur total, plus anxiogène. Ce taux a été souvent rapporté à la population du pays: 10 morts au Luxembourg n'ont pas le même sens que 10 aux États-Unis. J'ai aussi privilégié la comparaison entre pays: d'abord dans une perspective universaliste (ce virus nous aura rappelé que nous sommes \\emph{a priori} tous égaux devant lui, et que les \\textbf{classes sociales et les niveaux de richesse} ont plus d'importance que d'autres pararamètres à la mode, mais difficilement définissables de façon rigoureuse); ma première idée est de ne pas oublier nos voisins, proches ou lointains; d'autre part pour comprendre ce qui peut/pourrait advenir en France, en comparaison de ce qui s'est déjà passé (par exemple en Italie) ou de ce qui \\textbf{n'advient pas} (cas de l'Allemagne, au confinement mesuré, ou de la Suède, non encore confinée le 9 avril). C'est aussi pour ces raisons que j'ai utilisé une approche qui a déjà fait ses preuves (cf. \\url{http://91-divoc.com/pages/covid-visualization}, repris avant le 27 mars par le \\emph{Financial Times}): la mesure de l'évolution par pays après que chaque pays a dépassé les 10 décès. Cette démarche, un peu lugubre, apparaît pertinente pour estimer les futurs de certains pays. Au fil du temps, les graphiques les plus probants ont des formes arrondies, qui permettent de prévoir des évolutions: par exemple le délai entre la situation du jour et le maximum de la courbe, et par extension entre ce maximum hypothétique et un retour à des chiffres bas. Par exemple, le 31 mars, je pouvais supposer que le \\textbf{pic italien aurait lieu vers le 13 avril, et donc que le français adviendrait vers le 20}. La décrue française risque d'être lente et le nombre de \\textbf{décès officiels devrait revenir à 200 par jour fin mai-début juin} (note personnelle d'avant le 4 avril). \\subsection*{Design et lisibilité} Reste un dernier point ergonomique: comment offrir une comparaison internationale sans étouffer le lecteur sous une chevelure de lignes brisées? Initialement, ce programe (mélange de perl et de tikz) permettait la comparaison entre un nombre réduit de pays: pas plus de 6 ou 7, pour ne pas alourdir la lecture. Pour autant, j'ai moi-même besoin de visualiser les données pour des classes de pays européens (confinés \\emph{vs} non-confinés, grands \\emph{vs} petits, etc.) et pour les USA, la Méditerrannée, etc. D'où l'option développée à partir du 9 avril: créer, toujours en pdf, des groupes de graphes relatifs à des catégories de pays (l'option web intégrale, avec le choix des pays laissé à l'utilisateur, existe déjà. Cf. le point \\ref{refweb}). J'essaie enfin de soigner la lisibilité de ces graphiques. D'où ma préférence pour des solutions dédiées à l'imprimé, qui me semblent plus agréables à l'\\oe il, même si je sais que l'allure de ces textes, graphiques et légendes produits automatiquement (en bref, à l'aveugle ou presque) est perfectible. \\end{multicols} \\begin{multicols}{2} \\subsection*{Mode de lecture} La méthode \\emph{accrjour} affiche l'évolution du nombre quotidien de décès officiels par pays. Elle est informative. Des évolutions apparaissent. Elle témoigne aussi du caractère erratique des données (nationales: France et ses zigzags; inconnues: Allemagne et ses 2767 morts le 10 avril, et 2736 le lendemain). Je lui préfère la suivante, rapportée à la population: \\emph{accrjourpop}. Elle m'a permis de vite repérer la tragédie espagnole, et montre la similarité en France et Grande-Bretagne au 12 avril. De même pour les moyennes mobiles. Ces graphiques commencent à devenir pertinents. Avec \\emph{accrjourmob} nous voyons clairement le nombre de décès baisser pour l'Italie et l'Espagne, et peut-être en Suède et Allemagne, mais les tendances sont plus fiables avec la méthode \\emph{accrjourmobpop}: elle signale l'\\textbf{explosion belge}, qui déborde la France dès le 2 avril. De façon inverse, la méthode \\emph{accrjourmob} nous focalise sur la situation américaine avec son grand nombre de cas, alors que celle en Belgique (30 fois moins peuplée) est bien plus alarmante. La méthode \\emph{valeurspaysseuil} est celle qui produit un graphique à partir du 10\\up{e} décès rencontré dans chaque pays. Elle est instructive, publicisée et robuste. Je lui préfère la suivante: \\emph{valeurspaysseuillog}, qui permet d'estimer la fin de la pandémie (sinon de ce premier cycle), comme on le voit avec l'Italie et l'Espagne au bout de 30 jours. Le fait que la courbe de la France dépasse depuis le 9 avril celle de l'Italie est inquiétant: autant pour notre situation sanitaire que pour notre (faible) goût pour la comparaison avec les situations voisines, qui nous instruisent pourtant. Cette méthode rend peu utile la méthode \\emph{valeurspaysseuilpoplog} (le log translate la courbe précédente de la population), qui devrait disparaître à terme. \\end{multicols} \\textbf{Les titres en milieu ou bas de page ne sont pas élégants, mais vous permettent une lecture des graphiques en pleine page.} La table des matières est page suivante. \\newpage \\tableofcontents "; $conclusionjournal="\\section{Pour le débat} \\label{ouvrirdebat} Reste à faire: Autres comparaisons (Iran, Suisse, Turquie, Belgique, etc.); vérifier les statistiques chinoises, rapporter les décès aux nombres de lits par habitant (pas si simple: cf. Suède), estimation du nombre d'agents hospitaliers requis pour les cas sévères (6 pour 6, soit 1 pour 1, voire 2 pour 1 si on compte les ambulanciers?). "; #Fabrication du .tex $introfigtikz="\n\\begin{figure}[h] \\begin{center} \\begin{tikzpicture} \\begin{axis}[ width=36cm, height=15cm, legend style={at={(0.38,0.98)}}, ymajorgrids=true,"; open (T,">$fic"); print T " \\documentclass[12pt,landscape]{article} \\usepackage[utf8]{inputenc} \\usepackage[T1]{fontenc} \\usepackage{lmodern} \\usepackage{multicol} \\setlength{\\columnsep}{1cm} \\usepackage[a3paper,margin=2cm]{geometry} \\usepackage[french]{babel} \\usepackage[hidelinks, pdfstartview=FitH, plainpages=false]{hyperref} \\usepackage{subfigure,caption} \\captionsetup{margin=20pt,labelfont=bf,format=hang} \\usepackage{url,tikz,pgfplots,minitoc} \\usetikzlibrary{plotmarks} \\title{Graphiques Covid-19, avec leurs commentaires quotidiennement mis à jour} \\author{Éric Guichard} \\begin{document} \\maketitle\n"; print T $introjournal; ############## ROUTINES ############## sub addplotidx { #Pour une liste standard: pas de seuil (my @liste)=@_; my $u=0; my $plot=""; my $longueurdate=$#datefrance - $debut; foreach $d ($debut..$#datefrance) { $plot.="\(".$d.",".$liste[$u]."\) "; $u++; } $plot=" coordinates {".$plot."};"; return $plot; } sub addplotseuilauto { #Pour une liste de lg variable: pas de date, mais des morts local ($methodeparam, @liste)=@_; my $u=0; my $plot=""; my $v=0; if ($methodeparam =~/seuil/) {foreach $u (0..$#liste) { $plot.="\(".$u.",".$liste[$u]."\) "; } } else {foreach $u (0..$#liste) { $v=$debut+$u; $plot.="\(".$v.",".$liste[$u]."\) "; } } $plot=" coordinates {".$plot."};"; return $plot; } sub logeg{ (my $x)=@_; if ($x<=0) {$l=0} else {$l=log($x)} return ($l); } sub moyennemobile{ #longueur AVANT la liste local ($long,@liste)=@_; my (@moym); foreach $u (0..$#liste+1-$long) {my $tmp=0; $v=$u-1+$long; foreach my $w ($u..$v) { $tmp+=$liste[$w]; } $tmp/=$long; push (@moym,$tmp); } return (@moym); } sub liste2chiffresapresvirg{ local (@liste)=@_; my @liste2; my $u; foreach $u (0..$#liste) { push (@liste2,sprintf("%.2f",$liste[$u])); } return (@liste2); } 1; __END__