A8U1

Equipo 2: Roberto Rojas, Marco Irineo, Jesus Valencia, Antonio del Pardo

11/3/2022

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

Estado de animo de los Twitteros en México

Durante el inicio de la pandemia, muchas personas se sintieron angustiadas por el futuro de la humanidad debido a la situación que comenzamos a vivir. La pandemia nos trajo una etapa de nuestras vidas al que denominamos “confinamiento” en la que muchas personas, sobre todo las que no estaban acostumbradas a estar en su casa por largos periodos de tiempo comenzaran a desarrollar transtornos de ansiedad. . Se midieron indicadores de frecuencia y sentimientos, y se agruparon términos para identificar tópicos y determinar el interés de los usuarios sobre estos, mediante métodos digitales y de lenguaje computacional en R.

Imagen representativa

Negatividad en la pandemia

Vivir una pandemia no es para nada facil y menos si es la primera vez que te toca presenciar este acontecimiento. Para muchos, esto fue algo tan inesperado y desconocido que les tomó por sorpresa. Esto hizo que muchas personas se sintieran angustiadas al inicio. Pero el verdadero problema no fue la pandemia sino el confinamiento. La cantidad de tiempo que las personas pasaban encerradas aumentó el número de enfermedades de la salud mental en las personas y se puede reflejar en los tweets negativos.

Imagen representativa

Datos

Los datos fueron tomados del Inegi proporcionados en la siguiente página: https://www.inegi.org.mx/app/animotuitero/#/app/collect, en los cuales podemos encontrar el número de twitts positivos y negativos ya sea diarios, semanales, mensuales o anuales. Para este caso utilizaremos los datos diarios.

Importación de datos

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)

En esta tabla se muestran los tweets positivos y negativos agrupados por mes.

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,1),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

Podemos observar lo que es una variable orientada al tiempo, tiempo en el cual se nos indica la cantidad de tweets positivos y negativos por mes, empezando en enero de 2016 y terminando en enero de 2022, esto se puede analizar por la frecuencia de tweets negativos y positivos en este transcurso de tiempo, ya que representa el periodo de un año.

Serie de tiempo de tweets positivos y negativos

autoplot(twittsST, ts.colour = "red",ts.linetype = "dotted")

Este gráfico representa una serie de tiempo, la cual indica el comportamiento de los tweets positivos y negativos a lo largo de estos años. se observa el contraste mencionado de tweets de forma más visual, asi dandonos cuenta de que desde el año 2016, hasta el presente se intensificaron los twits negativos en la pandemia, especificamente cuando las olas de contagios estaban muy presentes en cada conversación del día a día, ya que las personas tenían (y tienen) miedo de enfermarse y empezaron a padecer transtornos psicológicos por el encierro de esta misma.

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

En esta gráfica podemos observar como los tweets positivos antes de iniciar la pandemia del COVID-19 tenian caídas y subidas pero al final siempre se mantenían regulares con su tendencia.

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

En esta gráfica podemos observar como los tweets positivos despues de iniciar la pandemia talvez ya no eran tan irregulares como antes pero su tendencia era una tendencia bajista ya que íban en decadencia.

Conclusiónes

Conclusión

Como conclusión sabemos que la pandemia ha influído mucho en las personas y mucho más en la salud mental, especialmente de una manera negativa. Las personas al no poder salir de sus casas comenzaron a utilizar mas las redes sociales para poder comunicarse entre ellas y saber que estaba pasando en el mundo. También compartían opiniones y gracias a estos datos podemos saber la manera en la que se sentían en ese momento. Twitter es la red social que más influyó en este caso para saber el estado de animo de las personas. Gracias a saber identificar los tweets positivos y negativos podemos rectificar que las personas se sentían con menos ánimo al iniciar la pandemia.

Relacion de las variables: Decesos, movilidad y twits negativos

En esta parte buscamos evaluar si las variables de decesos, movilidad y el positivismo tienen una relación entre si, y comprobar la hipotesis de que a medida que los decesos aumentan la movilidad decrese y el positivismo tambien baja

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

Importar datos

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"


datos_decesos <- read.csv(url_decesos)
datos_movilidad <- read.csv("2020_MX_Region_Mobility_Report.csv")
datos_twitter <- read.csv("twitter_diaria.csv")

# Definir variables

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

Formatear campos

Eliminar campos no utilizables Formatear las fechas Crear un marco de datos (data frame)

#vector de fecha
#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$indice)
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)

Graficacion de los datos

Graficamos los datos para compararlos entre si

gcov <- ggplot(data = datos1) +
  geom_line(aes(Fecha, Twits, colour="Positivismo")) +
  geom_line(aes(Fecha, Decesos/1000, colour="Decesos")) +
  geom_line(aes(Fecha, Movilidad, colour="Residencia")) +
  xlab("Fecha") +
  ylab("Cantidad") +
  labs(colour="casos")+
  ggtitle("Decesos, Residencia y positivismo") +
  scale_y_continuous(labels = comma)
gcov

Grafica interactiva

ggplotly(gcov)

Grafica animada

ggplot(data = datos1) +
  geom_line(aes(Fecha, Twits, colour="Positivismo")) +
  geom_line(aes(Fecha, Decesos/1000, colour="Decesos")) +
  geom_line(aes(Fecha, Movilidad, colour="Residencia")) +
  xlab("Fecha") +
  ylab("Cantidad") +
  labs(colour="casos")+
  ggtitle("Decesos, Residencia e indice") +
  scale_y_continuous(labels = comma) +
  transition_reveal(Fecha)

Análisis de correlación: ¿las variables están correlacionadas?

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

Conclusion

En conclusion podemos notar que no existe una relacion clara entre decesos y el positivismo aunque estos tengan una buena relacion positiva, podemos notar que la movilidad es un dato muy disperso y tiene una relacion muy baja con las demas variables, notando todo esto, podemos decir que a medida que las muertes aumentan, la movilidad sigue su ritmo por x factor y el positivismo en twitter se mantiene estable.

Descargas.

Código.

xfun::embed_file("A8U1.Rmd")

Download A8U1.Rmd