class: center, middle, inverse, title-slide # Vaccination contre la COVID-19: Étude des dynamiques des conversations sur Twitter ### Marine Leroi (CIRANO) et Thierry Warin, PhD (HEC Montréal, CIRANO & OBVIA) --- ## Contributions 1. Protocole d'analyse de langage naturel 2. Données du réseau social Twitter 3. Méthodologie: développement d'un protocole de recherche 4. Discipline: politiques publiques --- ## Agenda 1. Introduction 2. Collecte des données 3. Méthodologie 4. Résultats et leçons 5. Conclusion --- class: inverse, center, middle # 1. Introduction --- ## 1. Introduction > Notre propos est surtout méthodologique et porte sur la faisabilité et la validité de l'analyse des conversations dans un contexte de haute importance pour l'humanité, celui de la maladie Covid-19. --- ## 1. Introduction - Données structurées et données non-structurées - Les données textuelles sont omniprésentes dans la recherche en sciences sociales: les médias traditionnels, les médias sociaux, les données d'enquête et de nombreuses autres sources contribuent à l'énorme quantité de texte à l'ère de l'information moderne. - Modèle de structuration de thèmes ou modèle de sujet structurel - La disponibilité et l'intérêt croissants des données textuelles ont conduit au développement d'une variété d'approches statistiques pour analyser ces données. Nous nous concentrons sur le modèle de sujet structurel (STM) --- ## 1. Introduction Un exemple d'utilisation de données structurées: - Situation de la Covid-19 au Québec: https://hugo.warin.ca/coronavirus Un exemple d'utilisation de données non-structurées: - Google Trends: https://trends.google.com/trends/story/US_cu_E-aoCHEBAADKbM_en --- ## 1. Introduction - Avec la STM, les utilisateurs peuvent modéliser l'encadrement des journaux internationaux (Roberts, Stewart et Airoldi 2016b), les réponses d'enquête ouvertes dans l'American National Election Study (Robertset al., 2014), les forums de classe en ligne (Reich, Tingley, Leder -Luis, Roberts et Stewart 2015), des fils Twitter et des déclarations religieuses (Lucas, Nielsen, Roberts, Stewart, Storer et Tingley 2015), des rapports de lobbying (Milner et Tingley 2015), etc. - L'objectif du modèle de thème structurel est pour permettre aux chercheurs de découvrir des sujets et d'estimer leur relation avec les métadonnées du document. - Les résultats du modèle peuvent être utilisés pour effectuer des tests d'hypothèse sur ces relations. - Cela reflète bien sûr le type d'analyse que les chercheurs en sciences sociales effectuent avec d'autres types de données, où l'objectif est de découvrir des relations entre les variables et de tester des hypothèses. --- class: inverse, center, middle # 2. Collecte des données --- ## Distribution temporelle des tweets .panelset[ .panel[.panel-name[Période totale] .pull-left[ * **Nombre de tweets :** 2 409 522 * **Période :** 1er janvier 2020 au 21 avril 2021 * **Mots-clés :** “vaccine” OU “vaccines” OU “vaccinate” OU “vaccination” OU “vaccineswork” OU “antivax” OU “vaccinesdontwork” OU “provax” OU “vaxwithme” OU “antivaxxers” OU “immunization” ] .pull-right[ <img src="./figures/tidytext/nbr_tweets_date_crop.png" width="100%" /> ] ] .panel[.panel-name[Période 1] .pull-left[ * **Nombre de tweets:** 374 084 * **Proportion:** 15,5% du nombre total de tweets <img src="./figures/nbr_tweets_month_part1.png" width="100%" /> ] .pull-right[ * **Période :** 1er janvier au 31 septembre 2020 <img src="./figures/dfm_hashtags/dfm_toptag_cleaned_part1_crop.png" width="100%" /> ] ] .panel[.panel-name[Période 2] .pull-left[ * **Nombre de tweets:** 2 035 438 * **Proportion:** 84,5% du nombre total de tweets <img src="./figures/nbr_tweets_month_part2.png" width="100%" /> ] .pull-right[ * **Période :** 1er octobre 2020 au 21 avril 2021 <img src="./figures/dfm_hashtags/dfm_toptag_cleaned_part2_crop.png" width="1000px" /> ] ] ] --- class: inverse, center, middle # 3 Méthodologie --- ## 3.1 Détection des anomalies .panelset[ .panel[.panel-name[Méthode] **L'étude des événements** * En finance, il s'agit d'étudier comment un événement particulier change les perspectives d'une entreprise en quantifiant l'impact de l'événement sur le stock de l'entreprise. * Nous avons repris ce même principe pour étudier comment un événement a conduit la conversation des individus sur twitter. * Afin d'effectuer ce type d'analyse, les spécialistes de la finance utilisent le rendement, le volume ou la volatilité des actions. Il s'agit de quantifier l'impact économique d'un événement en rendements dits anormaux. * Pour notre étude nous avons choisi d'utiliser la quantité de tweets twittée par jour pour effectuer la détection d'anomalie. ] .panel[.panel-name[Étape 1] .pull-left[ Nous avons tout d'abord effectué une détection d'anomalies sur la totalité des tweets (du 1er janvier 2020 au 21 avril 2021) Nous avons remarqué une accélération de la conversation sur Twitter au sujet de la vaccination qui débute le 1er octobre 2020. Nous avons donc décidé de couper les tweets en deux parties : * **Partie 1 :** 1er janvier 2020 au 31 septembre 2020. * **Partie 2 :** 1er octobre 2020 au 21 avril 2021. ] .pull-right[ <img src="./figures/anomalize/period_plot_anomalies_alpha_dots_025.png" width="100%" /> ] ] .panel[.panel-name[Étape 2] .pull-left[ Pour chaque partie nous avons effectué une nouvelle détection d'anomalies. * **Partie 1 (01-01-2020 au 31-09-2020) :** Anomalie effectuée avec les paramètres de bases: * alpha = 0.05 soit 5% de données abérantes (outlier) * max_anoms = 0.2 soit 20% d’anomalies autorisées. * **Partie 2 (01-10-2020 au 21-04-2021) :** Anommalie effectuée avec des paramètres ajustés: * alpha = 0.3 * max_anoms = 0.05 ] .pull-right[ <img src="./figures/anomalize/part1_plot_anomalies_alpha_dots_025.png" width="70%" /> <img src="./figures/anomalize/part2_plot_anomalies_alpha_03_maxanoms_005.png" width="70%" /> ] ] .panel[.panel-name[Étape 3] .pull-left[ * Nous avons regroupé les anomalies par sous période. * **Partie 1 :** nous avons identifié 5 sous périodes * **Partie 2 :** nous avons observé 6 sous périodes. * Interval de temps de chaque sous période: * **Début de l'inverval :** date 1ère anomalie - 3 jours (period_start) * **Fin de l'interval :** date dernière anomalie + 3 jours (period_end) ] .pull-right[ <img src="./figures/anomalize/period_part1_plot_anomalies_alpha_dots_025.png" width="70%" /> <img src="./figures/anomalize/period_part2_plot_anomalies_alpha_03_maxanoms_005.png" width="70%" /> ] ] .panel[.panel-name[Récapitulatif des périodes] .pull-left[ <table class=" lightable-classic" style='font-family: "Arial Narrow", "Source Sans Pro", sans-serif; margin-left: auto; margin-right: auto;'> <caption>Sous périodes d'anomalies pour la 1ère partie de tweets</caption> <thead> <tr> <th style="text-align:left;"> Période </th> <th style="text-align:left;"> Data de début </th> <th style="text-align:left;"> Date de fin </th> </tr> </thead> <tbody> <tr> <td style="text-align:left;"> Period 1 </td> <td style="text-align:left;"> 2020-03-13 </td> <td style="text-align:left;"> 2020-03-19 </td> </tr> <tr> <td style="text-align:left;"> Period 2 </td> <td style="text-align:left;"> 2020-05-12 </td> <td style="text-align:left;"> 2020-05-21 </td> </tr> <tr> <td style="text-align:left;"> Period 3 </td> <td style="text-align:left;"> 2020-07-13 </td> <td style="text-align:left;"> 2020-07-30 </td> </tr> <tr> <td style="text-align:left;"> Period 4 </td> <td style="text-align:left;"> 2020-08-08 </td> <td style="text-align:left;"> 2020-08-14 </td> </tr> <tr> <td style="text-align:left;"> Period 5 </td> <td style="text-align:left;"> 2020-09-05 </td> <td style="text-align:left;"> 2020-09-19 </td> </tr> </tbody> </table> ] .pull-right[ <table class=" lightable-classic" style='font-family: "Arial Narrow", "Source Sans Pro", sans-serif; margin-left: auto; margin-right: auto;'> <caption>Sous périodes d'anomalies pour la 2ème partie de tweets</caption> <thead> <tr> <th style="text-align:left;"> Période </th> <th style="text-align:left;"> Data de début </th> <th style="text-align:left;"> Date de fin </th> </tr> </thead> <tbody> <tr> <td style="text-align:left;"> Period 1 </td> <td style="text-align:left;"> 2020-11-06 </td> <td style="text-align:left;"> 2020-11-12 </td> </tr> <tr> <td style="text-align:left;"> Period 2 </td> <td style="text-align:left;"> 2020-11-23 </td> <td style="text-align:left;"> 2020-11-29 </td> </tr> <tr> <td style="text-align:left;"> Period 3 </td> <td style="text-align:left;"> 2020-11-29 </td> <td style="text-align:left;"> 2020-12-17 </td> </tr> <tr> <td style="text-align:left;"> Period 4 </td> <td style="text-align:left;"> 2020-12-21 </td> <td style="text-align:left;"> 2021-01-04 </td> </tr> <tr> <td style="text-align:left;"> Period 5 </td> <td style="text-align:left;"> 2021-02-27 </td> <td style="text-align:left;"> 2021-03-05 </td> </tr> <tr> <td style="text-align:left;"> Period 6 </td> <td style="text-align:left;"> 2021-04-10 </td> <td style="text-align:left;"> 2021-04-16 </td> </tr> </tbody> </table> ] ] ] --- ## 3.2 Modèle Thématique .panelset[ .panel[.panel-name[Méthode] .pull-left[ **Structural Topic Models (STM)** STM en 6 étapes: 1. Ingest : Lecture et traitement de données textuelles 2. Prepare : Association du texte à des métadonnées 3. Estimate : Estimation du modèle de sujet structurel 4. Evaluate : Sélection et recherche de modèles 5. Understand : Interpréter le STM en traçant et en inspectant les résultats 6. Visualize : Présentation des résultats du STM ] .pull-right[ <img src="./figures/stm_model.png" width="70%" /> ] ] .panel[.panel-name[Procédé] Utilisation du modèle STM pour déterminer le Top 10 des sujets (Topics) pour chaque sous période: => 11 sous périodes, donc 11 STM. ] ] --- ## 3.2 Modèle Thématique .panelset[ .panel[.panel-name[Top 10 sujets (1)] .pull-left[ Partie 1 Période 1 (13 au 19 mars 2020) <img src="./figures/stm/p1p1/stm_topics_top10.png" width="100%" /> ] .pull-right[ <img src="./figures/stm/p1p1/stm_wordcloud_topic5_crop.png" width="100%" /> ] ] .panel[.panel-name[Top 10 sujets (2)] Partie 1 Période 1 (13 au 19 mars 2020) <img src="./figures/stm/p1p1/stm_topics_correlation.png" width="70%" height="50%" style="display: block; margin: auto;" /> ] .panel[.panel-name[Top 10 sujets (3)] .pull-left[ Partie 2 Période 6 (10 au 16 avril 2021) <img src="./figures/stm/p2p6/stm_topics_top10.png" width="100%" /> ] .pull-right[ <img src="./figures/stm/p2p6/stm_wordcloud_topic4_crop.png" width="100%" /> ] ] .panel[.panel-name[Top 10 sujets (4)] Partie 2 Période 6 (10 au 16 avril 2021) <img src="./figures/stm/p2p6/stm_topics_correlation.png" width="70%" height="50%" style="display: block; margin: auto;" /> ] ] --- ## 3.2 Modèle Thématique .panelset[ .panel[.panel-name[Récapitulatif des sujets] **Top 3 des sujets pour chaque sous période** .pull-left[ <table class=" lightable-classic" style='font-family: "Arial Narrow", "Source Sans Pro", sans-serif; margin-left: auto; margin-right: auto;'> <thead> <tr> <th style="text-align:left;"> Date </th> <th style="text-align:left;"> Sujet </th> </tr> </thead> <tbody> <tr> <td style="text-align:left;"> 13-03-2020 au 19-03-2019 </td> <td style="text-align:left;"> covid, develop, amp; peopl, get, can; trial, coronavirus, test </td> </tr> <tr> <td style="text-align:left;"> 12-05-2020 au 21-05-2020 </td> <td style="text-align:left;"> get, peopl, need; covid, coronavirus, research; trump, coronavirus, presid </td> </tr> <tr> <td style="text-align:left;"> 13-07-2020 au 13-07-2020 </td> <td style="text-align:left;"> get, peopl, like; amp, need, work; covid, trial, phase </td> </tr> <tr> <td style="text-align:left;"> 08-08-2020 au 14-08-2020 </td> <td style="text-align:left;"> get, peopl, like; russia, first, coronavirus; covid, coronavirus, dose </td> </tr> <tr> <td style="text-align:left;"> 05-09-2020 au 19-09-2020 </td> <td style="text-align:left;"> trump, say, coronavirus; coronavirus, covid, first; covid, develop, work </td> </tr> </tbody> </table> ] .pull-right[ <table class=" lightable-classic" style='font-family: "Arial Narrow", "Source Sans Pro", sans-serif; margin-left: auto; margin-right: auto;'> <thead> <tr> <th style="text-align:left;"> Date </th> <th style="text-align:left;"> Sujet </th> </tr> </thead> <tbody> <tr> <td style="text-align:left;"> 06-11-2020 au 12-011-2020 </td> <td style="text-align:left;"> get, peopl, flu; pfizer, covid, effect; news, stock, hope </td> </tr> <tr> <td style="text-align:left;"> 23-11-2020 au 29-11-2020 </td> <td style="text-align:left;"> covid, effect, astrazeneca; take, time, now; covid, develop, india </td> </tr> <tr> <td style="text-align:left;"> 29-11-2020 au 17-12-2020 </td> <td style="text-align:left;"> peopl, get, need; first, covid, dose; pfizer, approv, covid </td> </tr> <tr> <td style="text-align:left;"> 21-12-2020 au 04-01-2021 </td> <td style="text-align:left;"> covid, dose, first; covid, health, state; get, take, like </td> </tr> <tr> <td style="text-align:left;"> 26-02-2021 au 05-03-2021 </td> <td style="text-align:left;"> effect, like, just; covid, johnson, dose; covid, get, can </td> </tr> <tr> <td style="text-align:left;"> 10-04-2021 au 16-04-2021 </td> <td style="text-align:left;"> peopl, just, make; johnson, amp, paus; dose, receiv, million </td> </tr> </tbody> </table> ] ] ] --- class: inverse, center, middle # 4. Résultats et leçons --- ## Résultats et leçons - Pendant les 5 premières périodes, les conversations portaient chronologiquement sur: - les **peurs**: va-t-on avoir un vaccin? - puis sur le **débat** sur les vaccins - puis sur l'**économie**, les relaions entre les vaccins et le retour au travail - puis sur l'invention du vaccin et sa dimension **politique** - enfin sur l'**économie** à nouveau comme raison de se faire vacciner - Pendant les 6 dernières périodes, les conversations permettaient le niveaud e développement de l'expertise épidémiologique: - la dimension **espoir**: Pfizer - puis **AstraZeneca** et une dimension pays en voie de développement - puis Pfizer à prioriser sur AstraZeneca - puis sur l'importance de se faire vacciner de toute façon - puis une conversation sur les vaccins à nouveau lorsque les campagnes de vaccination ont commencé - la question de quel vaccin est préférable. --- ## Résultats et leçons 1. Leçons pour la recherche - preuve de concept sur la mesure quantitative des dynamiques des conversations sur un sujet comme celui du Sars-Cov-II - réflexions sur l'utilisation de ces transformations des conversations sur les réseaux sociaux afin de les utiliser comme données probantes - domaines: linguistique, communications, économie, politiques publiques 2. Leçons pour les politiques publiques - réflexions sur l'utilisation de ces méthodes de transformation des données issues des réseaux sociaux pour augmenter l'impact et la communication sur la pertinence d'une politique publique - mesures nationales et temporelles: possibilité de contruire un baromètre national pour connaître la dynamique des conversations sur un sujet particulier de politique publique. --- class: inverse, center, middle # 5. Conclusion --- ## Conclusion - PLN: protocole d'analyse de langage naturel - Données du réseau social Twitter - Contexte de la pandémie - Projet à objectif méthodologique en priorité --- ### Conclusion - Extensions en cours: - chercher les raisons de ces anomalies dans nos conversations, par exemple est-ce que les conversations sont conséquentes ou causales des sujets développés dans la presse? - nous nous inspirons de travaux précédents sur une autre crise internationale: la crise des réfugiés en Europe (qui décide de l'agenda des conversations?) --- class: inverse, middle, center # Merci à toutes et tous!