A7U1 P2

Equipo 2: Germá Gómez López - Jorge Alan Retamoza Flores - Erick Abraham Bernal Amparano

14/3/2022

library(pacman)
p_load("DT","xfun","ggplot2", "readr","tseries","ggfortify","tidyr", "dplyr")

Estado de animo de los Twitteros en México

Twitter es una red social vista para expresar diversas cosas a través de twits. En este caso hablaremos del como expresaban sus estados de animo durante la pandemia por COVID-19 en México.

El estado de animo es una actitud o disposición en la vida emocional. Es un estado, una forma de permanecer cuya duración es prologanada. Con la pandemia por COVID-19 muchas de las personas se empezaron a sentir preocupadas/frustradas por el como esta enfermedad iba a afectar el futuro de toda la humanidad. La pandemia nos obligó a ponernos en estado de cuarentena para poder disminuir los contagios lo mayor posible, esto afectó a las personas que no pasaban mucho tiempo en su hogar antes del suceso ya que no estaban “acostumbradas” a estar encerrados por tanto tiempo por lo cual comenzaban a desarrollar trastornos de ansiedad. Se recopiló información con indicadores de frecuencia y sentimientos así como también se agruparon diversos términos para lograr identificar temas/tópicos para poder determinar el interés de los usuarios.

Twitter x Covid

Datos

Los datos fueron proporcionados por el Instituto Nacional de Estadística y Geografía (INEGI) a través del siguiente enlace: https://www.inegi.org.mx/app/animotuitero/#/app/multiline

tweets <- read_csv("twitter_diaria.csv")
## Rows: 2255 Columns: 7
## -- Column specification --------------------------------------------------------
## Delimiter: ","
## chr  (2): tipo_usuario, lugar
## dbl  (4): tuits_negativos, indice, recoleccion_promedio, tuits_positivos
## date (1): fecha
## 
## i Use `spec()` to retrieve the full column specification for this data.
## i Specify the column types or set `show_col_types = FALSE` to quiet this message.
datosTwitter <- data.frame(tweets)
datatable(datosTwitter)

Tweets positivos y negativos agrupados por mes.

A continuación se mostrarán las cantidades de tweets tanto positivos como negativos que van agrupados por meses tanto antes como durante la pandemia.

Tweets antes de Pandemia

Estos datos son agrupados mes por mes desde el año 2016 hasta el mes de marzo del año 2020.

tuitsAntesNegativos= ts(tweets[2], start = c(2016), end = c(2020), frequency = 12)
tuitsAntesNegativos
##        Jan   Feb   Mar   Apr   May   Jun   Jul   Aug   Sep   Oct   Nov   Dec
## 2016 34401 34689 39431 46229 44575 43144 42547 46027 38919 40552 48545 43537
## 2017 47347 47837 39033 38003 40682 43126 41019 41634 39618 38079 34354 40478
## 2018 42117 41156 41919 40741 37697 35741 36328 41179 39212 40859 34781 27802
## 2019 35124 42267 38856 39781 39921 39653 38781 37918 39535 41594 40646 40679
## 2020 40914
tuitsAntesPositivos= ts(tweets[7], start = c(2016), end = c(2020), frequency = 12)
tuitsAntesPositivos
##         Jan    Feb    Mar    Apr    May    Jun    Jul    Aug    Sep    Oct
## 2016 102401  87432  94997 109772 100176  99458  96080 101565 100065  96689
## 2017  96110 100735  96099  95216  99796  92845  91236  92049  91049  92008
## 2018  92564  91793  94864  95124  97175  93764  95785  98240  92347  95664
## 2019  92330 106284  95356  96370 102481 101153 106535 103034 107637  97946
## 2020  94602                                                               
##         Nov    Dec
## 2016  97004  91623
## 2017  87731  96211
## 2018  83783  75733
## 2019  92341  94491
## 2020
tuitsDespuesNegativos= ts(tweets[2], start = c(2020), end = c(2022), frequency = 12)
tuitsDespuesNegativos
##        Jan   Feb   Mar   Apr   May   Jun   Jul   Aug   Sep   Oct   Nov   Dec
## 2020 34401 34689 39431 46229 44575 43144 42547 46027 38919 40552 48545 43537
## 2021 47347 47837 39033 38003 40682 43126 41019 41634 39618 38079 34354 40478
## 2022 42117
tuitsDespuesPositivos= ts(tweets[7], start = c(2020), end = c(2022), frequency = 12)
tuitsDespuesPositivos
##         Jan    Feb    Mar    Apr    May    Jun    Jul    Aug    Sep    Oct
## 2020 102401  87432  94997 109772 100176  99458  96080 101565 100065  96689
## 2021  96110 100735  96099  95216  99796  92845  91236  92049  91049  92008
## 2022  92564                                                               
##         Nov    Dec
## 2020  97004  91623
## 2021  87731  96211
## 2022
twittsST <- ts(datosTwitter[ ,c(2,7)],start = c(2016,1),end = c(2022,3),frequency = 12)
twittsST
##          tuits_negativos tuits_positivos
## Jan 2016           34401          102401
## Feb 2016           34689           87432
## Mar 2016           39431           94997
## Apr 2016           46229          109772
## May 2016           44575          100176
## Jun 2016           43144           99458
## Jul 2016           42547           96080
## Aug 2016           46027          101565
## Sep 2016           38919          100065
## Oct 2016           40552           96689
## Nov 2016           48545           97004
## Dec 2016           43537           91623
## Jan 2017           47347           96110
## Feb 2017           47837          100735
## Mar 2017           39033           96099
## Apr 2017           38003           95216
## May 2017           40682           99796
## Jun 2017           43126           92845
## Jul 2017           41019           91236
## Aug 2017           41634           92049
## Sep 2017           39618           91049
## Oct 2017           38079           92008
## Nov 2017           34354           87731
## Dec 2017           40478           96211
## Jan 2018           42117           92564
## Feb 2018           41156           91793
## Mar 2018           41919           94864
## Apr 2018           40741           95124
## May 2018           37697           97175
## Jun 2018           35741           93764
## Jul 2018           36328           95785
## Aug 2018           41179           98240
## Sep 2018           39212           92347
## Oct 2018           40859           95664
## Nov 2018           34781           83783
## Dec 2018           27802           75733
## Jan 2019           35124           92330
## Feb 2019           42267          106284
## Mar 2019           38856           95356
## Apr 2019           39781           96370
## May 2019           39921          102481
## Jun 2019           39653          101153
## Jul 2019           38781          106535
## Aug 2019           37918          103034
## Sep 2019           39535          107637
## Oct 2019           41594           97946
## Nov 2019           40646           92341
## Dec 2019           40679           94491
## Jan 2020           40914           94602
## Feb 2020           37659           93483
## Mar 2020           39047          101287
## Apr 2020           39771           96473
## May 2020           40344           92336
## Jun 2020           25731           60898
## Jul 2020           32683           77274
## Aug 2020           24428           58417
## Sep 2020           29111           80843
## Oct 2020           38719           98482
## Nov 2020           50372          129741
## Dec 2020           41075           98033
## Jan 2021           40870          103955
## Feb 2021           40547           94638
## Mar 2021           39683           98942
## Apr 2021           38156           97899
## May 2021           38114          103154
## Jun 2021           37973           99533
## Jul 2021           41352           96870
## Aug 2021           42023           99510
## Sep 2021           48202           96191
## Oct 2021           43881           95608
## Nov 2021           36746           93498
## Dec 2021           37097           98650
## Jan 2022           44881          111260
## Feb 2022           42477           94509
## Mar 2022           45218           97231

La varible que nos indica el tiempo nos indica la cantidad de tweets positivos y negativos por mes. Logramos ver que se empezó en enero de 2016 y se terminó en enero de 2022. Esto se vuelve analizable debido a la frecuencia que tienen los tweets tanto negativos como positivos a lo largo de este periodo.

Gráfica de tiempo de tweets positivos y negativos

En esta gráfica podemos observar como los tweets positivos no tenían una tendencia a subir o bajar, siempre era variable, pero al final siempre se mantenian en una media entre estos.

 plot(tuitsAntesPositivos, main ="Tweets positivos antes de iniciar la pandemia", xlab="Año", ylab="Tweets positivos")

Aquí logramos observar como los tweets positivos al momento de que inicia la pandemia ya no eran tan irregulares como antes pero su tendencia era una tendencia hacía a bajo ya que íban en decadencia.

  plot(tuitsDespuesPositivos, main ="Tweets positivos después de iniciar la pandemia", xlab="Año", ylab="Tweets positivos")

Conclusión

Nos hemos dado cuenta incluso con nostros mismos como personas el como la pandemia nos ha afectado sobre todo en el ámbito de nuestra salud mental, y de todo esto nos pudimos percatar mediante los datos que se recopilaban a través de las redes sociales. Con la pandemía hubo un aumento de las personas que se expreseban mediante estas redes y gracias a estos datos del expresar el como se sentian podemos saber el como estaba su estado de animo antes de la pandemia y como esta misma los afectó.

Estado de animo Twitter - Movilidad - Muertes por covid

Se espera que los datos de las variables de movilidad y muertes por covid esten relacionadas con la cantidad de tweets negativos, siendo así que, mientras más decesos se hayan registrado, más tweets negativos estarán registrados, igual con la movilidad, mientras menos movilidad sea registrada mas tweets tristes se esperán.

p_load("base64enc", "htmltools", "mime", "prettydoc", "knitr","plotly", "gganimate","gifski","scales")

Importar datos

#Se realiza la declaración de las variables que contienen los archivos csv donde se encuentran los decesos, twits y movilidad

url_decesos <- "https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_time_series/time_series_covid19_deaths_global.csv"

arch_twitter <- "twitter_diaria.csv"

arch_movilidad <- "2020_MX_Region_Mobility_Report.csv"

#Leer los archivos .csv

datos_decesos <- read.csv(url_decesos)
datos_twitter <- read.csv(arch_twitter)
datos_movilidad <- read.csv(arch_movilidad)

#definir variables

dec_mex <- t(datos_decesos[datos_decesos$Country.Region=="Mexico" ,])
mov_mex <- datos_movilidad
twit_mex <- datos_twitter 

Formatear datos

  • Eliminar campos no utilizables
  • Formatear las fechas
  • Crear un marco de datos (data frame)
#vector de fecha
Fecha <- seq(from = as.Date("2020-02-15"), to = as.Date("2020-12-31"), by = "day"   )

#casos twits 
vec1 <- as.vector(twit_mex$tuits_positivos)
vec2 <- vec1[1505:1825]
num1 <- as.numeric(vec2)
Twits <- as.vector(num1)

#decesos 
vec1 <- as.vector(dec_mex)
vec2 <- vec1[29:349]
num1 <- as.numeric(vec2)
Decesos <- as.vector(num1)

#movilidad
vec1 <- as.vector(mov_mex$residential_percent_change_from_baseline)
vec2 <- vec1[1:321]
num1 <- as.numeric(vec2)
Movilidad <- as.vector(num1)

#generación de un marco de datos (data frame)

datos1 <- data.frame(Fecha, Twits, Decesos, Movilidad)

Graficación de datos

A continuación se presentan visualizaciones que representan los datos de Tweets, decesos y movilidad para México.

Se harán 3 tipos de graficas donde se podran visualizar como interactuan estas 3 variables entre sí, estas graficas serán:

  • Grafica estatica

  • Grafica interactiva

  • Grafica animada

Gráfica estática

gcov <- ggplot(data = datos1) +
  geom_line(aes(Fecha, Twits/1000, colour="Twits")) +
  geom_line(aes(Fecha, Decesos/1000, colour="Decesos")) +
  geom_line(aes(Fecha, Movilidad, colour="Residencia")) +
  xlab("Fecha") +
  ylab("Cantidad") +
  labs(colour="casos")+
  ggtitle("Relación Tweets Negativos/ Decesos/ Movilidad") +
  scale_y_continuous(labels = comma)
gcov

Gráfica interactiva

ggplotly(gcov)

Gráfica animada

ggplot(data = datos1) +
  geom_line(aes(Fecha, Twits/1000, colour="Twits")) +
  geom_line(aes(Fecha, Decesos/1000, colour="Decesos")) +
  geom_line(aes(Fecha, Movilidad, colour="Residencia")) +
  xlab("Fecha") +
  ylab("Cantidad") +
  labs(colour="casos")+
  ggtitle("Relación Tweets Negativos/ Decesos/ Movilidad") +
  scale_y_continuous(labels = comma) +
  transition_reveal(Fecha)

Correlación

datos2 <- data.frame(Twits, Decesos, Movilidad)
round(cor(x = datos2, method="pearson"), 3)
##            Twits Decesos Movilidad
## Twits      1.000  -0.684     0.068
## Decesos   -0.684   1.000    -0.160
## Movilidad  0.068  -0.160     1.000

Conclusion

A primera vista podemos llegar a la conclusion de que los datos no tienen una relación muy clara dada la grafica vista anteriormente.

Al analizar la correlación de estos se puede observar que:

  • Mientras los tweets negativos crecen los decesos se decrementan.

  • Mientras se registra menos movilidad no se alcanza a percibir un aumento de los tweets negativos.

Esto nos demuestra que no se cumple con nuestra hipotesís que decía que mientras mas muertes, mas tweets negativos.

Descargas

Descarga este código.

xfun::embed_file("A7P2U1.Rmd")

Download A7P2U1.Rmd

Archivo que contiene los datos de la investigación.

xfun::embed_file("twitter_diaria.csv")

Download twitter_diaria.csv