library(ggmap)
library(rtweet)
library(tidyverse)
library(lubridate)
library(leaflet)
library(osmdata)
library(sf)
options(scipen=999)

Comienzo utilizando un dataset con 503.968 tweets.

tweets_cordoba_20200515<-read_twitter_csv("tweets_cordoba.csv",unflatten = TRUE)

tweets_cordoba_20200515$created_at<-ymd_hms(tweets_cordoba_20200515$created_at)

summary(tweets_cordoba_20200515$created_at)
##                  Min.               1st Qu.                Median 
## "2020-05-10 05:17:09" "2020-05-11 16:16:45" "2020-05-12 22:37:14" 
##                  Mean               3rd Qu.                  Max. 
## "2020-05-12 21:43:12" "2020-05-14 03:11:10" "2020-05-15 12:35:55"
dim(tweets_cordoba_20200515)
## [1] 503968     90

Analizo la distribucion de los datos en los dias de la semana:

ggplot(tweets_cordoba_20200515)+
  geom_bar(aes(x=as.factor(wday(created_at,label=TRUE,abbr = FALSE))))+
  labs(title="Uso de Twitter en Ciudad de Cordoba",
       subtitle="Cantidad de tweets por dia de la semana",
       x="Dia",
       y="Cantidad de Tweets",
       caption="Fuente: API Twitter")

La muestra no llega a ser uniforme para un analisis sobre los dias de la semana, ya que no se alcanza a abarcarla completamente.

Obtengo palabras claves para analizar su uso segun el horario del dia:

tweets_cuarentena<-tweets_cordoba_20200515 %>% 
  filter(grepl("cuarentena",text))
  
tweets_coronavirus<-tweets_cordoba_20200515 %>% 
  filter(grepl("coronavirus",text))

tweets_gobierno<-tweets_cordoba_20200515 %>% 
  filter(grepl("gobierno",text))

tweets_combinados<-mutate(tweets_cuarentena,palabra="cuarentena") %>% 
  bind_rows(mutate(tweets_coronavirus,palabra="coronavirus")) %>% 
  bind_rows(mutate(tweets_gobierno,palabra="gobierno"))

ggplot()+
  geom_bar(data=tweets_combinados,aes(x=as.factor(hour(created_at)),fill=palabra))+
  labs(title="Uso de Twitter en Ciudad de Cordoba",
       subtitle="Analisis de palabras clave segun horario",
       x="Hora del dia",
       y="Cantidad de Tweets",
       fill="Palabra Clave",
       caption="Fuente: API Twitter")


MAPA DE DENSIDAD

tweets_cordoba_geo<-lat_lng(tweets_cordoba_20200515) %>% 
  select(-geo_coords, -coords_coords, -bbox_coords) %>% 
  filter(!is.na(lat)|!is.na(lng)) %>% 
  filter(lat<=0,lng<=0)

bbox<-make_bbox(tweets_cordoba_geo$lng,tweets_cordoba_geo$lat)

cordoba<-get_stamenmap(bbox=bbox,maptype = "toner-lite",zoom=11)

ggmap(cordoba)+
  geom_bin2d(data=tweets_cordoba_geo, 
             aes(x=lng,y=lat),
             bins=100)+
  scale_fill_viridis_c(trans="log")+
  labs(title="Uso de Twitter en Ciudad de Cordoba",
       subtitle="Densidad de tweets",
       x="longitud",
       y="latitud",
       fill="Conteo",
       caption="Fuentes: Datos de API Twitter. 
       Mapa: D. Kahle and H. Wickham. ggmap: Spatial Visualization with ggplot2.
       The R Journal, 5(1), 144-161. URL
       http://journal.r-project.org/archive/2013-1/kahle-wickham.pdf")

Los resultados no son buenos por la existencia de fuertes outliers (excesiva concentracion en pocos puntos). Al intentar efectuar mapa de densidad por curvas de nivel confirmo el problema:

ggmap(cordoba)+
  geom_density2d(data=tweets_cordoba_geo,aes(x=lng,y=lat,color=stat(level)))+
  scale_colour_viridis_c()+
  labs(caption="Fuentes: Datos de API Twitter. 
       Mapa: D. Kahle and H. Wickham. ggmap: Spatial Visualization with ggplot2.
       The R Journal, 5(1), 144-161. URL
       http://journal.r-project.org/archive/2013-1/kahle-wickham.pdf")
## Warning: Computation failed in `stat_density2d()`:
## bandwidths must be strictly positive

Los mapas de densidad funcionan correctamente con datos mas uniformes geograficamente, como el dataset de establecimientos edcucativos:

# Obtengo datos de establecimientos educativos:

bbox_poly<-getbb("Córdoba, Municipio de Córdoba, Pedanía Capital, Departamento Capital, Córdoba, X5000, Argentina", format_out = "sf_polygon")


cordoba_esteduc<-st_read("ign_establecimientoseduc.geojson") %>% 
  st_transform(crs=4326) %>% 
  st_intersection(bbox_poly)
## Reading layer `ign_establecimientoseduc' from data source `/Users/santiago/Google Drive/DRIVE MEU/- CIENCIA DE DATOS 2/ign_establecimientoseduc.geojson' using driver `GeoJSON'
## Simple feature collection with 47369 features and 8 fields
## geometry type:  POINT
## dimension:      XY
## bbox:           xmin: -72.8872 ymin: -63.3977 xmax: -53.6384 ymax: -21.8764
## CRS:            4326
#Utilizo la primer palabra del nombre para clasificar por tipo de establecimiento:

cordoba_esteduc$tipo<-as.factor(word(cordoba_esteduc$gna,1))
levels(cordoba_esteduc$tipo)
## [1] "Centro"        "Colegio"       "Conservatorio" "Escuela"      
## [5] "Instituto"     "Jardín"
#Creo columnas lng y lat en base a geometry:

cordoba_esteduc_coord<-cordoba_esteduc %>% 
  mutate(lng=unlist(map(cordoba_esteduc$geometry,1)),
         lat=unlist(map(cordoba_esteduc$geometry,2)))
                              
#Genero mapa de densidad bin2d:

ggmap(cordoba)+
  geom_bin2d(data=cordoba_esteduc_coord, 
             aes(x=lng,y=lat),
             bins=40)+
  scale_fill_viridis_c(trans="log")+
  labs(title="Establecimientos educativos en Ciudad de Cordoba",
       subtitle="Densidad de establecimientos",
       x="longitud",
       y="latitud",
       fill="Establecimientos",
       caption="Fuente: Instituto Geografico Nacional
       Mapa: D. Kahle and H. Wickham. ggmap: Spatial Visualization with ggplot2.
       The R Journal, 5(1), 144-161. URL
       http://journal.r-project.org/archive/2013-1/kahle-wickham.pdf")

Si bien el resultado no es el mejor, permite observar un patron.

#Mapa de densidad density2d:

ggmap(cordoba)+
  geom_density2d(data=cordoba_esteduc_coord,aes(x=lng,y=lat,color=stat(level)))+
  scale_colour_viridis_c()+
  facet_wrap(~tipo)+
  labs(title="Establecimientos educativos en Ciudad de Cordoba",
       subtitle="Densidad de establecimientos",
       x="longitud",
       y="latitud",
       fill="Establecimientos",
       caption="Fuente: Instituto Geografico Nacional
       Mapa: D. Kahle and H. Wickham. ggmap: Spatial Visualization with ggplot2.
       The R Journal, 5(1), 144-161. URL
       http://journal.r-project.org/archive/2013-1/kahle-wickham.pdf")

El restulado falla al tener poca densidad de datos en colegios y convservatorio.