
Visualisation des cas mondiaux de coronavirus COVID-19
Utilisation d'un graphique à bulles animé de série chronologique
J'ai rassemblé des ressources ici pour vous aider avec les visualisations. Visionnez la vidéo du webinaire en direct du 26 mars 2020, lisez pourquoi j'ai choisi ces analyses, accédez aux données ou au Rapports JMP en direct , essayez mes scripts joints et/ou utilisez les données, essayez de faire vos propres analyses.
Il y a beaucoup de mises à jour dans cet effort continu pour communiquer des données sur la propagation du coronavirus COVID-19. Dans la dernière version, j'ai inclus des tracés de générateur de graphiques en regardant le résumé global ainsi que les résumés locaux. De plus, les graphiques à bulles sont augmentés de couleur pour représenter les changements quotidiens dans les comptages. Il y a une boîte à onglets pour basculer entre les échelles logarithmiques et linéaires dans les graphiques, et dans la figure des comptages locaux, le tracé de l'échelle linéaire comporte un graphique à axe divisé pour afficher les régions de comptage inférieur et supérieur ensemble.
Jetez un oeil à la version HTML ici sur le Page JMP en direct.
Préface:
- Le coronavirus et tous les problèmes causés par sa propagation sont graves et affectent de nombreuses personnes, certaines de manière horrible. Ce n'est pas mon intention de banaliser la gravité de cela en créant ce chiffre. Mon but n'est pas non plus de promouvoir l'hystérie ou la xénophobie.
- Dans mon script, je recode les noms de lieux utilisés par les auteurs originaux. Je n'ai pas d'agenda politique. Lorsque j'utilise l'API google map pour géocoder, j'en ai besoin pour me donner des emplacements de pays. Taïwan, Taïwan donne un emplacement de restaurant, tandis que Taïwan, Chine donne un géocode près du centre de Taïwan. Encore une fois, ce n'est pas politique, c'est fonctionnel.
- Toutes les données entourant le signalement et la détection du coronavirus sont extrêmement controversées. Je ne me porte pas garant de l'exactitude de ces données ; c'est cependant la meilleure agrégation de données publiquement disponibles (en anglais) que je connaisse. Si vous avez quelque chose de mieux, faites-le moi savoir.
- Ce ne sont pas mes données. Les gens de l'Université Johns Hopkins, Whiting School of Engineering, du Centre pour la science et l'ingénierie des systèmes ont publié un joli tableau de bord avec les données. Un grand merci et bravo à cette équipe pour la mise à disposition de ses données.Lisez leur blog et certainement vérifier leur visualisation.
Ils ont également mis en place un Page GitHub avec les données brutes dans un format facilement accessible. (Félicitations x 10 ^ 6).
Pourquoi utiliser un graphique à bulles avec une animation de série chronologique ?
Les graphiques à bulles ont un haut degré d'utilité dans la mesure où un grand nombre de dimensions peuvent être représentées dans un seul graphique. Avec l'ajout d'une animation de série chronologique, les changements dans les relations entre ces dimensions peuvent être visualisés et communiqués sans beaucoup de traitement pré-attentif complexe par le spectateur. (alias : ils ont l'air cool et sont faciles à comprendre)
Notez que j'ai dit qu'un graphique à bulles est utile pour examiner les relations de plusieurs dimensions animées au fil du temps, pas seulement un dimension (variable) animée dans le temps. J'ai vu des gens créer un graphique de type run/control chart avec une seule dimension sur l'axe X et le temps sur l'axe Y, puis s'animer en fonction du temps. C'est ce qu'on appelle un tableau de contrôle/d'exécution fastidieux, veuillez ne pas le faire.
Pour la figure que je vais construire ici. Les axes X et Y sont à une échelle géodésique, de sorte que les points s'alignent sur une carte. Nous pouvons voir les relations spatiales des points sur le graphique, qui sont mises en contexte par la forme de la carte d'arrière-plan. Ensuite, j'ajoute une dimension de taille pour les marqueurs, qui correspond au nombre cumulé de cas par période pour chaque emplacement. Enfin, j'utilise la séquence de période de temps pour animer l'intrigue qui se traduit par des bulles qui grandissent ou apparaissent au fil du temps. Chacun des points est étiqueté par pays et région. Dans cette figure, il est possible de regrouper tous les points individuels dans leur ID de pays ou de les diviser en leur ID de région dans l'ID de pays.
Le script pour générer le graphique poursuit une cible mouvante. Les auteurs des données continuent d'apporter des modifications, cela peut donc ne fonctionner que pendant quelques jours si des modifications sont apportées aux données source. Depuis le matin du 12/02/2020, cela fonctionne. À la fin du script se trouve une option pour publier ou actualiser la figure dans JMP Live. Cela ne fonctionnera pas pour vous car vous n'avez pas ma clé API top secrète pour accéder au package dans JMP Live. Cela peut être utile comme exemple du fonctionnement de la publication et de l'actualisation si vous disposez de JMP Live.
Comment fonctionne le script.
- Configure toutes les variables dont j'ai besoin plus tard dans le script
- Télécharge les données et les formate
- il y a des choses bizarres dans cette partie. À plusieurs reprises, j'enregistre les données localement, ferme la table puis la rouvre. J'avais du mal à forcer le script à s'exécuter de manière séquentielle et c'est un moyen d'y arriver. Parfois, une table n'était pas mise à jour avant le début de l'étape suivante et j'obtenais des tables bancales.Cette méthode de force brute correspond à mon caractère et à mon style.
- Générer le graphique à bulles
- Déterminez s'il est nécessaire de publier ou d'actualiser, puis publiez ou actualisez la figure
En regardant le script, vous remarquerez peut-être que j'ai enveloppé des sections dans des expressions. C'est un moyen pratique de désencombrer un long script lorsqu'il est combiné avec l'option de pliage de code (vérifiez les préférences de l'éditeur de script).
MISE À JOUR 26/03/20
Plus tôt cette semaine, l'ensemble de données que j'utilisais était obsolète. Et ce matin, les données obsolètes ont été déplacées vers un autre emplacement. Inutile de dire que ce projet est vraiment une cible mouvante ! Johns Hopkins CSSE dispose d'un autre référentiel GitHub de données qui est mis à jour quotidiennement avec des données. Le nouveau script ci-dessous, "Compile COVID-19 Time Series Data" vérifiera quels fichiers se trouvent dans le référentiel, puis les téléchargera et les assemblera. Cet ensemble de données a quelques "caractéristiques" intéressantes. J'ai utilisé recode pour résoudre bon nombre d'entre eux, et quelques formules créatives pour résoudre le reste.
Certains des problèmes et la résolution
-Les emplacements de chaque site ne sont pas cohérents, j'ai donc utilisé l'emplacement le plus récent et l'ai remplacé partout ailleurs.
-Le nombre cumulé devrait soit augmenter, soit rester le même. Lorsque le nombre cumulé diminue, la valeur du jour précédent est utilisée. Cela empêche les nombres négatifs dans les comptages quotidiens dérivés des comptages cumulés.
-Les noms de colonnes dans les tableaux ne sont pas cohérents dans le temps. Les libellés sont unifiés aux noms de colonne de la table 3/24/20.
-Il y a des incohérences de fautes de frappe et des espaces de fin/de début dans certains noms de lieux. Recode les résout.
-Les emplacements sont en valeur ordonnée et en couleur ordonnée par la somme des décomptes confirmés à chaque emplacement.
-Le tableau final ne contient aucune formule. Le tableau peut être trié sans affecter les calculs dépendant du tri.
MISE À JOUR 03/04/20
J'ai mis à jour le script aujourd'hui. Veuillez noter que son exécution prendra environ une minute ou un peu plus. Beaucoup de choses se passent dans le script de nettoyage et certaines formules prennent un peu de temps pour se terminer.
Cette version comprend une section à la fin qui supprime les lignes en double ainsi que quelques autres ajustements
Nouvelles formules de colonne pour créer les graphiques à bulles Cum Counts vs. Counts by day. Il s'agit de colonnes de moyenne mobile par emplacement, plutôt que de prendre la moyenne de 5 ou 7 jours. La moyenne mobile me donne quelques points de plus pour travailler.
Articles utiles qui ont éclairé les graphiques :
• Notes sur ce qu'il faut tracer dans une série chronologique, en particulier un graphique à bulles. Notez que les décomptes cumulés font des bulles de plus en plus nombreuses, mais les décomptes par jour montrent des points chauds.(Joël Selanikio)
• https://www.futurehealth.live/blog/2020/2/17/all-the-coronavirus-maps-are-wrong
• https://www.futurehealth.live/blog/2020/2/10/coronavirus-dataviz-sucks
• Notes sur l'utilisation des cartes et des formes de carte. (Champ Kenneth)
• https://www.esri.com/arcgis-blog/products/product/mapping/mapping-coronavirus-responsibly/
• Notes sur les indicateurs retardés et interprétation des données avec différentes échelles d'axes. (Kaiser Fung)
• https://junkcharts.typepad.com/numbersruleyourworld/2020/03/how-to-act-like-a-data-scientist-8-dont-use-lagging-indicators-to-forecast.html
@KevinB Le vieux truc de l'axe divisé. Placez votre variable sur l'axe des abscisses, puis replacez-la à droite ou à gauche de la première. Simple, non ? mais insolublement difficile à trier, car qui, dans son bon sens, mettrait deux fois la même variable sur le même axe. Un axe obtient l'extrémité inférieure de la plage et l'autre obtient l'extrémité supérieure.
Par exemple 0 à 60 min à gauche et 1 à 24 h à droite. Et puis, si vous voulez avoir une fantaisie folle, les jours 2 à 10 dans un troisième axe des abscisses.
Ce projet est en quelque sorte la poursuite d'une cible mouvante. Les auteurs des données continuent de les déplacer.
J'ai mis à jour le script (oui, le jour de la Saint-Valentin, mais en attendant qu'une lasagne monstre finisse de cuire.)
Maintenant, l'extraction des données est un peu plus simple, et au lieu d'avoir une boîte de filtre de données, chaque catégorie se trouve dans sa propre boîte à onglets.
Il y avait aussi un problème de points qui n'apparaissaient pas sur le graphique à bulles, et c'est également corrigé.
Une façon vraiment intéressante et agréable de donner un script utile (et vraiment cool) pour suivre cette tragédie mondiale de la santé publique, Byron @Byron_JMP .C'est tellement utile que JMP gère les données de séries temporelles.
J'allais copier le code dans un fichier .jsl, mais j'ai remarqué qu'une certaine personnalisation est impliquée.Par exemple, vous pointez vers votre compte JMP Live.Pouvez-vous mettre à jour le script afin qu'il soit un peu plus générique ?Et merci pour le lien vers le Page GitHub avec les données brutes afin que je puisse essayer d'examiner moi-même les nouvelles données dans JMP.