A8U1

Equipo 3: Jose Alfredo Nuñez - Mario Alejandro Salcedo - Julio Mejia Sotomayor - Carlos Valle Encinas

15/3/2022

library(pacman)
p_load("base64enc", "htmltools", "mime", "xfun", "prettydoc","readr", "knitr","DT","dplyr", "ggplot2","plotly", "gganimate", "scales","datasets","fdth", "GGally", "gridExtra","corrplot")

Estado de animo de los twitteros en México

Para empezar con el tema bien se sabe que la red social twitter es una de las más usadas actualmente por todo el mundo, donde millones de usuarios expresan sus opiniones diariamente acerca de algunos temas en especifico. Y el día de hoy se tomara en cuenta uno de los casos que más se han comentados en los últimos años que es la pandemia de COVID 19 en México, donde se analizaran los estados de ánimo de los usuarios en México.

También se tienen que tomar en cuenta que un estado de ánimo es una actitud que acontece en la vida emocional de una persona y los cuales pueden influir dependiendo de las situaciones de cada persona. Es por eso que en este caso de estudio se analizarán todos los estados de ánimo de los twitteros en México ante la situación de la pandemia.

Twitter

Datos

Los datos utilizados en este análisis son en base a la organización INEGI en el siguiente enlace: https://www.inegi.org.mx/app/animotuitero/#/app/multiline

tweet <- read_csv("datos_twitter.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.
tweet
## # A tibble: 2,255 x 7
##    fecha      tuits_negativos indice recoleccion_promedio tipo_usuario lugar
##    <date>               <dbl>  <dbl>                <dbl> <chr>        <chr>
##  1 2016-01-01           34401   2.98               136802 todos        NAC  
##  2 2016-01-02           34689   2.52               122121 todos        NAC  
##  3 2016-01-03           39431   2.41               134428 todos        NAC  
##  4 2016-01-04           46229   2.37               156001 todos        NAC  
##  5 2016-01-05           44575   2.25               144751 todos        NAC  
##  6 2016-01-06           43144   2.31               142602 todos        NAC  
##  7 2016-01-07           42547   2.26               138627 todos        NAC  
##  8 2016-01-08           46027   2.21               147592 todos        NAC  
##  9 2016-01-09           38919   2.57               138984 todos        NAC  
## 10 2016-01-10           40552   2.38               137241 todos        NAC  
## # ... with 2,245 more rows, and 1 more variable: tuits_positivos <dbl>
datatable(tweet)

Desarrollo.

Representación de los datos mediante una gráfica interactiva.

plot_ly(data = tweet, x = tweet$fecha , y = tweet$indice, type = 'scatter' , mode = 'lines')%>% layout(title = 'Estado de ánimo de twitteros México',
         yaxis = list(zeroline = FALSE, title = 'Indice'),
         xaxis = list(zeroline = FALSE), title = 'Fecha')

Se puede llegar a observar que los tuits tenian un control normal antes de Marzo del 2020, que es cuando la pandemia entro en vigor. Es cierto que poco después de la pandemia los tuits negativos aumentaron y se mantenieron constantes pero aún asi nunca hubo una superioridad de los tuits negativos hacia los tuits positivos.

Datos por año

tuits2022 <- tweet%>% 
  filter(between(fecha, as.Date("2022-01-01"), as.Date("2022-12-31")))

tuits2022 <- cbind(tuits2022, anio=2022)

tuits2021 <- tweet%>% 
  filter(between(fecha, as.Date("2021-01-01"), as.Date("2021-12-31")))

tuits2021 <- cbind(tuits2021, anio=2021)

tuits2020 <- tweet%>% 
  filter(between(fecha, as.Date("2020-01-01"), as.Date("2020-12-31")))

tuits2020 <- cbind(tuits2020, anio=2020)

tuits2019 <- tweet%>% 
  filter(between(fecha, as.Date("2019-01-01"), as.Date("2019-12-31")))

tuits2019 <- cbind(tuits2019, anio=2019)

tuits2018 <- tweet%>% 
  filter(between(fecha, as.Date("2018-01-01"), as.Date("2018-12-31")))

tuits2018 <- cbind(tuits2018, anio=2018)

tuits2017 <- tweet%>% 
  filter(between(fecha, as.Date("2017-01-01"), as.Date("2017-12-31")))

tuits2017 <- cbind(tuits2017, anio=2017)

tuits2016 <- tweet%>% 
  filter(between(fecha, as.Date("2016-01-01"), as.Date("2016-12-31")))

tuits2016 <- cbind(tuits2016, anio=2016)


yearTweet = rbind(tuits2016 , tuits2017 , tuits2018 , tuits2019 , tuits2020 , tuits2021 , tuits2022)

Estado de ánimo mediante un gráfico de caja y bigote.

Se utiliza un gráfico de caja y bigote que se filtraran por los años con la finalidad de comparar los cambios en el estado de ánimo de los usuarios mexicanos de twitter a traves de los años.

boxplot(yearTweet$indice~yearTweet$anio ,col = "red", xlab="Año", ylab="Indice", main="Estado de Ánimo twitteros")

abline(h = mean(tuits2016$indice) , col = "blue")
abline(h = mean(yearTweet$indice) , col = "green")
abline(h = mean(tuits2020$indice) , col = "purple")

Gracias a la gráfica de caja y bigote podemos analizar que a partir del año 2016 el estado de ánimo de los usuarios poco a poco fue bajando, pero apartir del año 2020 que fue cuando llegó la pandemia; este empezo a subir lentamente.

Representando los datos en la gráfica de caja y bigote destacamos que la línea azul representa el estado de ánimo máximo, la línea verde en promedio, y por último la línea morada el estado de ánimo más bajo.

Gráfica interactiva.

p <- plot_ly(x=yearTweet, y=tuits2016$indice, mode = 'lines', type="scatter", name="2016") %>%
  layout(title = 'Estado de ánimo de twitteros México' ,
         yaxis = list(zeroline = FALSE, title = 'Indice'),
         xaxis = list(zeroline = FALSE, title = 'Día del Año'), legend = list(font = list(size = 15)))
p <- add_trace(p,y=tuits2017$indice, name="2017")
p <- add_trace(p,y=tuits2018$indice, name="2018")
p <- add_trace(p,y=tuits2019$indice, name="2019")
p <- add_trace(p,y=tuits2020$indice, name="2020")
p <- add_trace(p,y=tuits2021$indice, name="2021")
p <- add_trace(p,y=tuits2022$indice, name="2022")
p

Movilidad - Muertes por Covid19

Alrededor de los últimos años el virus Sars-Covid19 dió un impacto importante en todo el mundo, llegó a México aproximadamente en Marzo del 2020, obligando a millones de personas a utilizar los protocolos de seguridad adecuados proporcionados por la Secretaría de Salud.

Se estima que en solo México han aparecido alrededor de 5.61 millones de casos por Covid y mas de 320 mil muertes, por otro lado tenemos que en todo el mundo han aparecido mas de 460 millones de casos y alrededor de 6 millones de muertes.

Importar datos

Los datos de decesos por Covid 19 se han obtenido gracias al taller de ciencia de datos aplicada a la salud pública y epidemiología.

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)

Los datos de movilidad regional en 2020; los datos fueron proporcionados de la siguiente página de Google https://www.google.com/covid19/mobility/.

datos_movilidad <- read.csv("2020_MX_Region_Mobility_Report.csv")

Datos del estado de ánimo de los usuarios en Twitter en México según la INEGI: https://www.inegi.org.mx/app/animotuitero/#/app/multiline

datos_tweets <- read.csv("datos_twitter.csv")

Definición Variables

decesos <- t(datos_decesos[datos_decesos$Country.Region=="Mexico" ,])
movilidad <- datos_movilidad
tuits <- datos_tweets

Formateo de Datos

#vector de fecha
Fecha <- seq(from = as.Date("2020-02-15"), to = as.Date("2020-12-31"), by = "day"   )

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

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

#tuits
vec1 <- as.vector(tuits$tuits_negativos)
vec2 <- vec1[1505:1825]
num1 <- as.numeric(vec2)
Tuits <- as.vector(num1)

Gráfica Descesos, Residencia y Tuits

datos1 <- data.frame(Fecha, Decesos, Movilidad, Tuits)
gcov <- ggplot(data = datos1) +
  geom_line(aes(Fecha, Tuits, colour="Tuits")) +
  geom_line(aes(Fecha, Decesos, colour="Decesos")) +
  geom_line(aes(Fecha, Movilidad, colour="Residencia")) +
  xlab("Fecha") +
  ylab("COVID19 en el país") +
  labs(colour="casos")+
  ggtitle("Casos de COVID19 en México") +
  scale_y_continuous(labels = comma)
gcov

Gráfica interactiva

ggplotly(gcov)

Gráfica Animada

ggplot(data = datos1) +
  geom_line(aes(Fecha, Decesos, colour="Decesos")) +
  geom_line(aes(Fecha, Movilidad, colour="Movilidad")) +
  geom_line(aes(Fecha, Tuits, colour="Tuits")) +
  xlab("Fecha") +
  ylab("Cantidad") +
  labs(colour="casos")+
  ggtitle("Gráfica animada datos Covid19") +
  scale_y_continuous(labels = comma) +
  transition_reveal(Fecha)

Análisis Correlación

datos_rel <- data.frame(Decesos, Movilidad, Tuits)
round(cor(x = datos_rel, method = "pearson"), 3)
##           Decesos Movilidad  Tuits
## Decesos     1.000    -0.160 -0.805
## Movilidad  -0.160     1.000  0.134
## Tuits      -0.805     0.134  1.000
ggpairs(datos_rel, lower = list(continuous ="smooth"),
        diag = list (continuos = "barDiag"), axisLabels = "none")

Matriz Correlación

corrplot(cor(dplyr::select(datos_rel, Decesos, Movilidad, Tuits)),
         method = "number", tl.col = "black")

Conclusión

Al realizar este analisis y también en base a nuestra experiencia personal en la pandemia, podemos darnos cuenta que en realidad si afectó emocionalmente a muchas personas en el país debido a las diversas expresiones de los usuarios en la red social twitter. Es importante destacar que con el surgimiento de la pandemia el indice de actividad en Twitter aumentó y también gracias a los datos proporcionados de la INEGI podemos saber el estado de ánimo de las personas que se expresban públicamente.

Al igual que este virus cambió al mundo drásticamente utilizando protocolos nuevos en la vida de cada persona implementados por la Secretaría de Salud.

Descarga este código.

xfun::embed_file("A7U1.Rmd")

Download A7U1.Rmd

Archivo que contiene los datos de la investigación.

xfun::embed_file("datos_twitter.csv")

Download datos_twitter.csv