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
Archivo que contiene los datos de la investigación.
xfun::embed_file("twitter_diaria.csv")