En primer lugar cargamos las librerias con las que trabajamos habitualmente, asimismo incorporamos lubridate, ya que la utilizaremos para la presente tarea.
library(tidyverse)
## ── Attaching packages ─────────────────────────────────────── tidyverse 1.3.0 ──
## ✓ ggplot2 3.3.0 ✓ purrr 0.3.3
## ✓ tibble 2.1.3 ✓ dplyr 0.8.5
## ✓ tidyr 1.0.2 ✓ stringr 1.4.0
## ✓ readr 1.3.1 ✓ forcats 0.5.0
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## x dplyr::filter() masks stats::filter()
## x dplyr::lag() masks stats::lag()
library(sf)
## Linking to GEOS 3.7.2, GDAL 2.4.2, PROJ 5.2.0
library(osmdata)
## Data (c) OpenStreetMap contributors, ODbL 1.0. https://www.openstreetmap.org/copyright
library(leaflet)
library(rtweet)
##
## Attaching package: 'rtweet'
## The following object is masked from 'package:purrr':
##
## flatten
library(ggmap)
## Google's Terms of Service: https://cloud.google.com/maps-platform/terms/.
## Please cite ggmap if you use it! See citation("ggmap") for details.
library(data.table)
##
## Attaching package: 'data.table'
## The following objects are masked from 'package:dplyr':
##
## between, first, last
## The following object is masked from 'package:purrr':
##
## transpose
library(lubridate)
##
## Attaching package: 'lubridate'
## The following objects are masked from 'package:data.table':
##
## hour, isoweek, mday, minute, month, quarter, second, wday, week,
## yday, year
## The following objects are masked from 'package:dplyr':
##
## intersect, setdiff, union
## The following objects are masked from 'package:base':
##
## date, intersect, setdiff, union
Continuamos cargando los datos del Area Metropolitana de Buenos Aires y seleccionamos una muestra del dataset, ya que el mismo contiene una gran cantidad de datos y será muy complejo trabajar con todos ellos.
tweets_rmba <- fread("tweets_rmba.csv",
encoding = "UTF-8",
header=TRUE,
sep=",",
showProgress=TRUE,
data.table=FALSE)
Seleccionamos una muestra del 5%:
tweets_rmba <- sample_frac(tweets_rmba, 0.05)
Observamos los datos georeferenciados:
nrow(tweets_rmba)
## [1] 43187
Graficamos como soliciataba la TAREA 3
MAPAS ESTÁTICOS:
Primero delimitamos el área con el que vamos a trabajar, utilizando el comando make_bbox():
bbox_Twiter <- make_bbox(lon = tweets_rmba$X, lat = tweets_rmba$Y)
bbox_Twiter
## left bottom right top
## -59.37511 -35.33271 -57.72259 -33.90165
Con estas coordenadas descargaremos nuestro mapa de Stamen Design:
mapa_base <- get_stamenmap(bbox_Twiter, zoom = 9)
## Source : http://tile.stamen.com/terrain/9/171/307.png
## Source : http://tile.stamen.com/terrain/9/172/307.png
## Source : http://tile.stamen.com/terrain/9/173/307.png
## Source : http://tile.stamen.com/terrain/9/171/308.png
## Source : http://tile.stamen.com/terrain/9/172/308.png
## Source : http://tile.stamen.com/terrain/9/173/308.png
## Source : http://tile.stamen.com/terrain/9/171/309.png
## Source : http://tile.stamen.com/terrain/9/172/309.png
## Source : http://tile.stamen.com/terrain/9/173/309.png
ggmap(mapa_base)
Graficamos incorporando capas de datos que muestren la posición de los tweets y su cantidad de seguidores:
mapa_final_tweets<-get_stamenmap(bbox_Twiter,maptype="toner-lite",zoom = 9)
## Source : http://tile.stamen.com/toner-lite/9/171/307.png
## Source : http://tile.stamen.com/toner-lite/9/172/307.png
## Source : http://tile.stamen.com/toner-lite/9/173/307.png
## Source : http://tile.stamen.com/toner-lite/9/171/308.png
## Source : http://tile.stamen.com/toner-lite/9/172/308.png
## Source : http://tile.stamen.com/toner-lite/9/173/308.png
## Source : http://tile.stamen.com/toner-lite/9/171/309.png
## Source : http://tile.stamen.com/toner-lite/9/172/309.png
## Source : http://tile.stamen.com/toner-lite/9/173/309.png
options(scipen=20)
ggmap(mapa_final_tweets)+
geom_jitter(data=tweets_rmba,aes(x=X,y=Y,color=user_followers),size=0.2, alpha=.2)+
scale_color_distiller(palette="Spectral")+
labs(title="Tweets en la Region Metropolitana de Bs As",
subtitle="Tweets segun cantidad de seguidores",
caption="Fuente: Información de Twitter",
color="Seguidores",
x = "longitud",
y = "latitud")
MAPAS INTERACTIVOS:
Trabajaremos con leaflet(), incorporando capas de datos que muestren la posición de los tweets, con su texto y la canidad de seguidores de cada usurario lo lograremos selecionado una paleta de color. Lo lograremos selecionado una paleta de color.
En primer lugar transformamos el mapa en proyeccion mercator:
paleta <- colorNumeric(palette = "plasma", domain = tweets_rmba$user_followers)
mapa_final_tweets_interactivo <- tweets_rmba %>%
filter(!is.na(Y), !is.na(X)) %>%
st_as_sf(coords = c("X", "Y"), crs = 4326)
paleta<-colorNumeric(palette="plasma",domain=mapa_final_tweets_interactivo$user_followers)
leaflet(mapa_final_tweets_interactivo) %>%
addTiles() %>%
addCircleMarkers(popup = ~text,
color = ~paleta(user_followers)) %>%
addLegend(title = "Followers", pal = paleta, values = ~user_followers)
En el mapa se observa la posición de cada usuario de twitter y al hacer click en cada uno de ellos se puede ver en el pop-up, la leyenda con su texto. La cantidad de seguidores la distinguimos por la escala de colores. Se distingue sobre todo el mismo color violeta/azulado, pero más concentrado donde hay una mayor cantidad de usuarios y más translúcido donde hay menos usuarios.
Paso I: analizamos con summary() y head() el contenido del dataset de los Tweets Área Metropolitana de Buenos Aires:
summary(tweets_rmba)
## X Y id
## Min. :-59.30 Min. :-35.27 Min. : 918249704504000000
## 1st Qu.:-58.52 1st Qu.:-34.65 1st Qu.: 933756065952000000
## Median :-58.41 Median :-34.61 Median : 952914715416000000
## Mean :-58.45 Mean :-34.62 Mean : 954811265468000000
## 3rd Qu.:-58.37 3rd Qu.:-34.58 3rd Qu.: 975191205599000064
## Max. :-57.80 Max. :-33.97 Max. :1002599460850000000
##
## in_reply_to_status_id in_reply_to_user_id text
## Min. : 892538601548000000 Min. : 33423 Length:43187
## 1st Qu.: 927624353382000000 1st Qu.: 424770778 Class :character
## Median : 944060691124000000 Median : 1180083066 Mode :character
## Mean : 949643011696000000 Mean : 72338096751400000
## 3rd Qu.: 969043613126000000 3rd Qu.: 1180083066
## Max. :1002382263550000000 Max. :980763090340999936
## NA's :41564 NA's :41179
## created lang source user_name
## Length:43187 Length:43187 Length:43187 Length:43187
## Class :character Class :character Class :character Class :character
## Mode :character Mode :character Mode :character Mode :character
##
##
##
##
## user_id user_created user_description
## Min. : 1059 Length:43187 Length:43187
## 1st Qu.: 176122101 Class :character Class :character
## Median : 489016475 Mode :character Mode :character
## Mean : 52556510044400000
## 3rd Qu.: 1385132350
## Max. :1001282035250000000
##
## user_location user_followers user_followed
## Length:43187 Min. : 0 Min. : 0
## Class :character 1st Qu.: 197 1st Qu.: 85
## Mode :character Median : 496 Median : 1219
## Mean : 8448 Mean : 5600
## 3rd Qu.: 1400 3rd Qu.: 6018
## Max. :2437140 Max. :541611
##
head(tweets_rmba)
## X Y id in_reply_to_status_id
## 1 -58.37350 -34.60850 928577980846169984 NA
## 2 -58.54917 -34.53528 983849672317047040 NA
## 3 -58.38170 -34.60330 933295606692332032 NA
## 4 -58.45000 -34.55000 927220234523741952 NA
## 5 -58.37992 -34.59693 992792253612674944 NA
## 6 -58.38251 -34.59043 985664431932748032 NA
## in_reply_to_user_id
## 1 NA
## 2 NA
## 3 NA
## 4 NA
## 5 NA
## 6 NA
## text
## 1 #MeSobra acaba de convertirse en TT ocupando la 3ª posición en Argentina. Más en https://t.co/Zdrt4tAWye #trndnl https://t.co/QynP2XpBMO
## 2 Temperatura: 27,8°C S.Térmica 27,8°C PR 14,1°C-Viento: 5,0 km/h NNE Ráfagas 13,3 km/h-Presion: 1008,5 hPa-Lluvia:0,0 mm-Humedad:43%
## 3 #GucciGang \U0001f3a9 en Villa Urquiza https://t.co/Q2i6SluXYp
## 4 #QuienNoMeConoceDiríaQueFueDestetadaAntesDeTiempo \U0001f605 en Núñez,… https://t.co/JAL8fPHkuv
## 5 9° Edicion de ""Expo Bridal & My Sweet 15"" \nPasada de isabelquiintana… https://t.co/V0mrf2gXlp
## 6 Este estava bom. em Four Seasons Hotel Buenos Aires https://t.co/mH4kAtdMtA
## created lang source user_name
## 1 2017/11/09 11:00:17+00 es Es Tendencia en Argentina trendinaliaAR
## 2 2018/04/10 23:30:15+00 es Sandaysoft Cumulus climaballester
## 3 2017/11/22 11:26:27+00 es Instagram mativerge
## 4 2017/11/05 17:05:05+00 und Instagram aracelycasella
## 5 2018/05/05 15:44:53+00 es Instagram RAULMARTOREL
## 6 2018/04/15 23:41:27+00 pt Instagram antonioredes
## user_id user_created
## 1 1180083066 2013/02/14 19:23:34+00
## 2 479175319 2012/01/31 02:59:24+00
## 3 415753646 2011/11/18 19:26:50+00
## 4 2869677967 2014/10/21 22:50:15+00
## 5 88510673 2009/11/08 21:12:10+00
## 6 1626841080 2013/07/28 02:52:03+00
## user_description
## 1 Información sobre los Temas del Momento de la geografía argentina #TrendingTopics — #trndnl
## 2 Soy observador meteorológico. E.M.A de V. Ballester. Zona Norte GBA reportes automáticos cada 30min. Visiten mi blog de fotos y aviación https://t.co/YyHWLAzWha
## 3 Productor Integral de Televisión. CARP. Bonheur et Succès.
## 4
## 5 RAULMARTOREL@GMAIL.COM \U0001f454\U0001f320\U0001f3b6 \U0001f3a9 ITALO-ARGENTINO \nACTOR MODELO AUTOR DIRECTOR COREOGRAFO CREADOR 1°ER BALLET INFANTIL TV. COMPARSA SAMBALEGUAY @raulmartorel
## 6 Trabalho com redes de proteção para janelas , sacadas, varandas, gatos, idosos,estruturas , \nFone: (11) 98391.0505 tim / 5524.7412 / 99318.2400 claro
## user_location user_followers user_followed
## 1 Argentina 60938 11
## 2 Ciudad del Libertador General 4305 23543
## 3 Buenos Aires, Argentina. 128 327
## 4 16 8
## 5 C.A.B.A. BS.AS. RCA. ARGENTINA 4560 5156
## 6 São Paulo - Zona Sul 173 312
Verificamos que contiene coordenadas “x” e “y”, asi como fecha y hora de los tweets cargados. Las fechas van desde enero de 2007 hasta mayo 2018. Tambien observamos que la clase de dato de columna de la fecha, llamada created es un character.
Convertimos el campo fecha del dataset de tweets_rmba, nombrado como “created”, con el comando ymd_hms():
tweets_rmba <- tweets_rmba %>%
mutate(created = ymd_hms(created))
head(tweets_rmba)
## X Y id in_reply_to_status_id
## 1 -58.37350 -34.60850 928577980846169984 NA
## 2 -58.54917 -34.53528 983849672317047040 NA
## 3 -58.38170 -34.60330 933295606692332032 NA
## 4 -58.45000 -34.55000 927220234523741952 NA
## 5 -58.37992 -34.59693 992792253612674944 NA
## 6 -58.38251 -34.59043 985664431932748032 NA
## in_reply_to_user_id
## 1 NA
## 2 NA
## 3 NA
## 4 NA
## 5 NA
## 6 NA
## text
## 1 #MeSobra acaba de convertirse en TT ocupando la 3ª posición en Argentina. Más en https://t.co/Zdrt4tAWye #trndnl https://t.co/QynP2XpBMO
## 2 Temperatura: 27,8°C S.Térmica 27,8°C PR 14,1°C-Viento: 5,0 km/h NNE Ráfagas 13,3 km/h-Presion: 1008,5 hPa-Lluvia:0,0 mm-Humedad:43%
## 3 #GucciGang \U0001f3a9 en Villa Urquiza https://t.co/Q2i6SluXYp
## 4 #QuienNoMeConoceDiríaQueFueDestetadaAntesDeTiempo \U0001f605 en Núñez,… https://t.co/JAL8fPHkuv
## 5 9° Edicion de ""Expo Bridal & My Sweet 15"" \nPasada de isabelquiintana… https://t.co/V0mrf2gXlp
## 6 Este estava bom. em Four Seasons Hotel Buenos Aires https://t.co/mH4kAtdMtA
## created lang source user_name user_id
## 1 2017-11-09 11:00:17 es Es Tendencia en Argentina trendinaliaAR 1180083066
## 2 2018-04-10 23:30:15 es Sandaysoft Cumulus climaballester 479175319
## 3 2017-11-22 11:26:27 es Instagram mativerge 415753646
## 4 2017-11-05 17:05:05 und Instagram aracelycasella 2869677967
## 5 2018-05-05 15:44:53 es Instagram RAULMARTOREL 88510673
## 6 2018-04-15 23:41:27 pt Instagram antonioredes 1626841080
## user_created
## 1 2013/02/14 19:23:34+00
## 2 2012/01/31 02:59:24+00
## 3 2011/11/18 19:26:50+00
## 4 2014/10/21 22:50:15+00
## 5 2009/11/08 21:12:10+00
## 6 2013/07/28 02:52:03+00
## user_description
## 1 Información sobre los Temas del Momento de la geografía argentina #TrendingTopics — #trndnl
## 2 Soy observador meteorológico. E.M.A de V. Ballester. Zona Norte GBA reportes automáticos cada 30min. Visiten mi blog de fotos y aviación https://t.co/YyHWLAzWha
## 3 Productor Integral de Televisión. CARP. Bonheur et Succès.
## 4
## 5 RAULMARTOREL@GMAIL.COM \U0001f454\U0001f320\U0001f3b6 \U0001f3a9 ITALO-ARGENTINO \nACTOR MODELO AUTOR DIRECTOR COREOGRAFO CREADOR 1°ER BALLET INFANTIL TV. COMPARSA SAMBALEGUAY @raulmartorel
## 6 Trabalho com redes de proteção para janelas , sacadas, varandas, gatos, idosos,estruturas , \nFone: (11) 98391.0505 tim / 5524.7412 / 99318.2400 claro
## user_location user_followers user_followed
## 1 Argentina 60938 11
## 2 Ciudad del Libertador General 4305 23543
## 3 Buenos Aires, Argentina. 128 327
## 4 16 8
## 5 C.A.B.A. BS.AS. RCA. ARGENTINA 4560 5156
## 6 São Paulo - Zona Sul 173 312
Paso II: Analizamos la temporalidad de los tweets. Primero comparamos el uso de twitter en la RMBA entre Octubre de 2017 y Mayo 2018:
options(scipen = 20)
ggplot(tweets_rmba) +
geom_bar(aes(x = year(created))) +
labs(title = "Cantidad de tweets anualmente",
subtitle = "Region Metropolitana de Buenos Aires ",
caption="Fuente: Información de Twitter")
Como el dataset solo incluye datos de algunos meses de 2017 y algunos meses de 2018 los analizamos independientemente:
2017:
tweets_rmba %>%
filter(year(created) == 2017) %>%
ggplot() +
geom_bar(aes(x = month(created, label = TRUE ))) +
labs(title = "Cantidad de tweets por mes",
subtitle = "Region Metropolitana de Buenos Aires, Octubre a Diciembre 2017",
caption="Fuente: Información de Twitter")
2018:
tweets_rmba %>%
filter(year(created) == 2018) %>%
ggplot() +
geom_bar(aes(x = month(created, label = TRUE))) +
labs(title = "Cantidad de tweets por mes",
subtitle = "Region Metropolitana de Buenos Aires, enero a mayo 2018",
caption="Fuente: Información de Twitter")
Seleccionamos el año 2017 que en promedio tiene mayor cantidad de tweets, aunque tenga solo datos de 3 meses, y analizamos que días de la semana hay mayor cantidad de tweets.
tweets_rmba %>%
filter(year(created) == 2017) %>% ggplot() +
geom_bar(aes(x = wday(created, label = TRUE))) +
labs(title = "Distribucion de tweets semanalmente",
subtitle = "Region Metropolitana de Buenos Aires, Octubre a Diciembre 2017",
caption="Fuente: Información de Twitter")
Observamos que la cantidad de tweets tiene un claro aumento el fin de semana, sobre todo el domingo, luego comienza una curva descendente hasta mediados de la semana que comienza a incrementarse nuevamente.
Analizamos la distribución espacial de los datos, de que lugares provienen la mayor cantidad de tweets, en el año 2017:
tweets_rmba %>%
filter(year(created) == 2017) %>%
count(user_location) %>% top_n(5) %>%
arrange(desc(n))
## Selecting by n
## # A tibble: 5 x 2
## user_location n
## <chr> <int>
## 1 "" 3143
## 2 "Argentina" 2751
## 3 "Buenos Aires, Argentina" 2164
## 4 "Ciudad Autónoma de Buenos Aire" 761
## 5 "Buenos Aires" 694
Observamos que es complejo de analizar, ya que probablemente existan datos que surjan de los mismos lugares, aunque parecieran que se manifestaran de lugares distintos, como por ejemlpo: Buenos Aires, Argentina y Buenos Aires.
De todos modos guardamos la seleccion de datos, utilizando el comando pull():
ubicacion_frecuente <- tweets_rmba %>%
filter(year(created) == 2017) %>%
count(user_location) %>% top_n(5) %>%
pull(user_location)
## Selecting by n
Realizamos la misma operación con el origen de los tweet, no la localizacion sino el source:
tweets_rmba %>%
filter(year(created) == 2017) %>%
count(source) %>%
top_n(5) %>%
arrange(desc(n))
## Selecting by n
## # A tibble: 5 x 2
## source n
## <chr> <int>
## 1 Instagram 14396
## 2 Es Tendencia en Argentina 1492
## 3 Twitter for Android 878
## 4 Foursquare 647
## 5 Sandaysoft Cumulus 535
Podemos observar que la mayoría de los tweets tienen su origen en Instagram.
head(tweets_rmba)
## X Y id in_reply_to_status_id
## 1 -58.37350 -34.60850 928577980846169984 NA
## 2 -58.54917 -34.53528 983849672317047040 NA
## 3 -58.38170 -34.60330 933295606692332032 NA
## 4 -58.45000 -34.55000 927220234523741952 NA
## 5 -58.37992 -34.59693 992792253612674944 NA
## 6 -58.38251 -34.59043 985664431932748032 NA
## in_reply_to_user_id
## 1 NA
## 2 NA
## 3 NA
## 4 NA
## 5 NA
## 6 NA
## text
## 1 #MeSobra acaba de convertirse en TT ocupando la 3ª posición en Argentina. Más en https://t.co/Zdrt4tAWye #trndnl https://t.co/QynP2XpBMO
## 2 Temperatura: 27,8°C S.Térmica 27,8°C PR 14,1°C-Viento: 5,0 km/h NNE Ráfagas 13,3 km/h-Presion: 1008,5 hPa-Lluvia:0,0 mm-Humedad:43%
## 3 #GucciGang \U0001f3a9 en Villa Urquiza https://t.co/Q2i6SluXYp
## 4 #QuienNoMeConoceDiríaQueFueDestetadaAntesDeTiempo \U0001f605 en Núñez,… https://t.co/JAL8fPHkuv
## 5 9° Edicion de ""Expo Bridal & My Sweet 15"" \nPasada de isabelquiintana… https://t.co/V0mrf2gXlp
## 6 Este estava bom. em Four Seasons Hotel Buenos Aires https://t.co/mH4kAtdMtA
## created lang source user_name user_id
## 1 2017-11-09 11:00:17 es Es Tendencia en Argentina trendinaliaAR 1180083066
## 2 2018-04-10 23:30:15 es Sandaysoft Cumulus climaballester 479175319
## 3 2017-11-22 11:26:27 es Instagram mativerge 415753646
## 4 2017-11-05 17:05:05 und Instagram aracelycasella 2869677967
## 5 2018-05-05 15:44:53 es Instagram RAULMARTOREL 88510673
## 6 2018-04-15 23:41:27 pt Instagram antonioredes 1626841080
## user_created
## 1 2013/02/14 19:23:34+00
## 2 2012/01/31 02:59:24+00
## 3 2011/11/18 19:26:50+00
## 4 2014/10/21 22:50:15+00
## 5 2009/11/08 21:12:10+00
## 6 2013/07/28 02:52:03+00
## user_description
## 1 Información sobre los Temas del Momento de la geografía argentina #TrendingTopics — #trndnl
## 2 Soy observador meteorológico. E.M.A de V. Ballester. Zona Norte GBA reportes automáticos cada 30min. Visiten mi blog de fotos y aviación https://t.co/YyHWLAzWha
## 3 Productor Integral de Televisión. CARP. Bonheur et Succès.
## 4
## 5 RAULMARTOREL@GMAIL.COM \U0001f454\U0001f320\U0001f3b6 \U0001f3a9 ITALO-ARGENTINO \nACTOR MODELO AUTOR DIRECTOR COREOGRAFO CREADOR 1°ER BALLET INFANTIL TV. COMPARSA SAMBALEGUAY @raulmartorel
## 6 Trabalho com redes de proteção para janelas , sacadas, varandas, gatos, idosos,estruturas , \nFone: (11) 98391.0505 tim / 5524.7412 / 99318.2400 claro
## user_location user_followers user_followed
## 1 Argentina 60938 11
## 2 Ciudad del Libertador General 4305 23543
## 3 Buenos Aires, Argentina. 128 327
## 4 16 8
## 5 C.A.B.A. BS.AS. RCA. ARGENTINA 4560 5156
## 6 São Paulo - Zona Sul 173 312
Guardamos esta nueva seleccion para luego graficarla mediante un grafico de barras apilado, utilizando el coomando pull():
Origen_frecuente <- tweets_rmba %>%
filter(year(created) == 2017) %>%
count(source) %>%
top_n(5) %>%
pull(source)
## Selecting by n
tweets_rmba %>%
filter(year(created) == 2017 , source %in% Origen_frecuente ) %>%
ggplot() + geom_bar(aes(x = month(created, label = TRUE), fill = source)) +
labs(title = "Distribucion de tweets de acuerdo a su origen",
subtitle = "Region Metropolitana de Buenos Aires, 2017",
caption = "Fuente: Información de Twitter")
Ahora graficamos mediante un grafico de lineas, haciendo el conteo por su origen y por dias de la semana
conteo <- tweets_rmba %>%
filter(year(created) == 2017, source %in% Origen_frecuente) %>%
count(source, diasemana = wday(created, label = TRUE))
ggplot(conteo) +
geom_line(aes(x = diasemana, y = n, group = source, color = source)) +
labs(title = "Distribucion de tweets a lo largo de la semana, de acuerdo a su origen",
subtitle = "Region Metropolitana de Buenos Aires, octubre a diciembre 2017",
caption = "Fuente: Información de Twitter",
x = "días semana",
y = "cantindad tweets")
Claramente el fin de semana se genera el mayor porcentaje de tweets de la semana, siendo su origen principal Instagram.
Paso III: Distribución espacial de los tweets
Paso III-A: En primer lugar debemos visualizar nuestro mapa base:
tweets_rmba <- tweets_rmba %>%
filter(Y <0, X <0)
bbox <- c(min(tweets_rmba$X, na.rm = TRUE), min(tweets_rmba$Y, na.rm = TRUE), max(tweets_rmba$X, na.rm = TRUE), max(tweets_rmba$Y, na.rm = TRUE))
RMBA <- get_stamenmap(bbox = bbox, maptype = "toner-lite")
## Source : http://tile.stamen.com/toner-lite/10/343/614.png
## Source : http://tile.stamen.com/toner-lite/10/344/614.png
## Source : http://tile.stamen.com/toner-lite/10/345/614.png
## Source : http://tile.stamen.com/toner-lite/10/346/614.png
## Source : http://tile.stamen.com/toner-lite/10/347/614.png
## Source : http://tile.stamen.com/toner-lite/10/343/615.png
## Source : http://tile.stamen.com/toner-lite/10/344/615.png
## Source : http://tile.stamen.com/toner-lite/10/345/615.png
## Source : http://tile.stamen.com/toner-lite/10/346/615.png
## Source : http://tile.stamen.com/toner-lite/10/347/615.png
## Source : http://tile.stamen.com/toner-lite/10/343/616.png
## Source : http://tile.stamen.com/toner-lite/10/344/616.png
## Source : http://tile.stamen.com/toner-lite/10/345/616.png
## Source : http://tile.stamen.com/toner-lite/10/346/616.png
## Source : http://tile.stamen.com/toner-lite/10/347/616.png
## Source : http://tile.stamen.com/toner-lite/10/343/617.png
## Source : http://tile.stamen.com/toner-lite/10/344/617.png
## Source : http://tile.stamen.com/toner-lite/10/345/617.png
## Source : http://tile.stamen.com/toner-lite/10/346/617.png
## Source : http://tile.stamen.com/toner-lite/10/347/617.png
## Source : http://tile.stamen.com/toner-lite/10/343/618.png
## Source : http://tile.stamen.com/toner-lite/10/344/618.png
## Source : http://tile.stamen.com/toner-lite/10/345/618.png
## Source : http://tile.stamen.com/toner-lite/10/346/618.png
## Source : http://tile.stamen.com/toner-lite/10/347/618.png
## Source : http://tile.stamen.com/toner-lite/10/343/619.png
## Source : http://tile.stamen.com/toner-lite/10/344/619.png
## Source : http://tile.stamen.com/toner-lite/10/345/619.png
## Source : http://tile.stamen.com/toner-lite/10/346/619.png
## Source : http://tile.stamen.com/toner-lite/10/347/619.png
ggmap(RMBA)
Ahora graficamos sobre este un mapa de densidad que muestra donde estan concentradas, dentro de la RMBA, la mayor cantidad de observaciones, tweets:
ggmap(RMBA) +
geom_bin2d(data = tweets_rmba, aes(x = X, y = Y), bins = 100) + scale_fill_viridis_c() +
labs(title = "Concentracion de tweets",
subtitle = "Region Metropolitana de Buenos Aires",
caption = "Fuente: Información de Twitter",
x = "longitud",
y = "latitud")
## Warning: Removed 1 rows containing missing values (geom_tile).
Se observa a en la mayor cantidad de superficie de toda la Región del Área Metropolitana de Buenos Aires una densidad uniforme de tweets, siendo más dispersa su concentración a medida que nos alejamos de la Ciudad de Buenos Aires o de la Ciudad de La Plata. Asimismo, si se observa con más detenimiento se puede ver que en en Área Central de la Ciudad de Buenos Aires, aumenta la densidad de los tweets, esto se puede deducir por la mayor concentración de actividades y servicios brindados.
Paso III-B: Ahora realizamos un gráfico facetado, que mostrará la concentracion de las observaciones de acuerdo a su origen:
ggmap(RMBA) +
geom_density2d(data = filter(tweets_rmba, source %in% Origen_frecuente), aes(x = X, y = Y, color = stat(level))) +
scale_color_viridis_c() +
facet_wrap(~source, nrow = 1) +
labs (title = "Concentracion de tweets en relacion a su origen",
subtitle = "Region Metropolitana de Buenos Aires",
caption = "Fuente: Información de Twitter",
x = "longitud",
y = "latitud")
## Warning: Computation failed in `stat_density2d()`:
## bandwidths must be strictly positive
Analizamos la densidad de tweets como se distribuyen según su origen y observamos que Instagram tiene una mayor concentración manifestada por las líneas topográficas más juntas y con colores que se alejan del violeta. Foursquare y Sandaysoft Cumulus poseen una concentración de líneas topográficas pero poca cantidad en la superficie del mapa, su aparición es puntual. Por otra parte Android toma una gran cantidad del mapa a través de sus líneas topográficas, pero con poca cantidad de densidad.
Paso IV: Realizamos un facetado por día, comprando dos de los origenes de los diferentes de tweets Instagram, que contiene mayor porcentaje de orígenes de Tweets y Android, en representación de los restantes orígenes de Tweets:
tweets_rmba <- tweets_rmba %>%
mutate(dia_semana = wday(created, label = TRUE))
ggmap(RMBA) +
geom_point(data = filter(tweets_rmba, source %in% c("Instagram", "Twitter for Android")), aes(x = X, y = Y, color = source), alpha = .1, size = .2) +
facet_wrap(~dia_semana, nrow = 2) +
labs(title = "Comparacion de tweets segun su origen",
subtitle = "Por día, en RMBA",
caption = "Fuente: Información de Twitter",
x = "longitud",
y = "latitud")
Utilizamos alpha .1 para poder observar el contraste entre los tweets con orígen de Instagram y Android, es nostable como se destacan los tweets de la primera fuente y la segunda fuente queda practicamente imperceptible. Asimismo, al emplear alpha .1 nos permite identificar la concentración de tweets e intentar disntinguir la distribución de los mismos, aunque no sea tan claro como en el gráfico de líneas, del Paso II. Con esfuerzo distinguimos, una mayor mancha, mayor concentración de tweets los días domingo, sábdado y lunes y una menor concentración de tweets los días martes, miércoles, jueves y viernes.
Ahora intentamos hacer un facetado por hora, los dias dias del fin de semana para ver en que momentos se generan la mayor cantidad de tweets o si es indistinto. Comenzamos utilizando el comando mutate(), para separar la columna de la hora de la de la fecha, generando solo la hora base, sin minutos ni segundos:
tweets_rmba <- tweets_rmba %>%
mutate(hora_base = hour(ymd_hms(created)))
Realizamos un head() para verificar que se haya generado la columna de la hora correctamente:
head(tweets_rmba)
## X Y id in_reply_to_status_id
## 1 -58.37350 -34.60850 928577980846169984 NA
## 2 -58.54917 -34.53528 983849672317047040 NA
## 3 -58.38170 -34.60330 933295606692332032 NA
## 4 -58.45000 -34.55000 927220234523741952 NA
## 5 -58.37992 -34.59693 992792253612674944 NA
## 6 -58.38251 -34.59043 985664431932748032 NA
## in_reply_to_user_id
## 1 NA
## 2 NA
## 3 NA
## 4 NA
## 5 NA
## 6 NA
## text
## 1 #MeSobra acaba de convertirse en TT ocupando la 3ª posición en Argentina. Más en https://t.co/Zdrt4tAWye #trndnl https://t.co/QynP2XpBMO
## 2 Temperatura: 27,8°C S.Térmica 27,8°C PR 14,1°C-Viento: 5,0 km/h NNE Ráfagas 13,3 km/h-Presion: 1008,5 hPa-Lluvia:0,0 mm-Humedad:43%
## 3 #GucciGang \U0001f3a9 en Villa Urquiza https://t.co/Q2i6SluXYp
## 4 #QuienNoMeConoceDiríaQueFueDestetadaAntesDeTiempo \U0001f605 en Núñez,… https://t.co/JAL8fPHkuv
## 5 9° Edicion de ""Expo Bridal & My Sweet 15"" \nPasada de isabelquiintana… https://t.co/V0mrf2gXlp
## 6 Este estava bom. em Four Seasons Hotel Buenos Aires https://t.co/mH4kAtdMtA
## created lang source user_name user_id
## 1 2017-11-09 11:00:17 es Es Tendencia en Argentina trendinaliaAR 1180083066
## 2 2018-04-10 23:30:15 es Sandaysoft Cumulus climaballester 479175319
## 3 2017-11-22 11:26:27 es Instagram mativerge 415753646
## 4 2017-11-05 17:05:05 und Instagram aracelycasella 2869677967
## 5 2018-05-05 15:44:53 es Instagram RAULMARTOREL 88510673
## 6 2018-04-15 23:41:27 pt Instagram antonioredes 1626841080
## user_created
## 1 2013/02/14 19:23:34+00
## 2 2012/01/31 02:59:24+00
## 3 2011/11/18 19:26:50+00
## 4 2014/10/21 22:50:15+00
## 5 2009/11/08 21:12:10+00
## 6 2013/07/28 02:52:03+00
## user_description
## 1 Información sobre los Temas del Momento de la geografía argentina #TrendingTopics — #trndnl
## 2 Soy observador meteorológico. E.M.A de V. Ballester. Zona Norte GBA reportes automáticos cada 30min. Visiten mi blog de fotos y aviación https://t.co/YyHWLAzWha
## 3 Productor Integral de Televisión. CARP. Bonheur et Succès.
## 4
## 5 RAULMARTOREL@GMAIL.COM \U0001f454\U0001f320\U0001f3b6 \U0001f3a9 ITALO-ARGENTINO \nACTOR MODELO AUTOR DIRECTOR COREOGRAFO CREADOR 1°ER BALLET INFANTIL TV. COMPARSA SAMBALEGUAY @raulmartorel
## 6 Trabalho com redes de proteção para janelas , sacadas, varandas, gatos, idosos,estruturas , \nFone: (11) 98391.0505 tim / 5524.7412 / 99318.2400 claro
## user_location user_followers user_followed dia_semana
## 1 Argentina 60938 11 Thu
## 2 Ciudad del Libertador General 4305 23543 Tue
## 3 Buenos Aires, Argentina. 128 327 Wed
## 4 16 8 Sun
## 5 C.A.B.A. BS.AS. RCA. ARGENTINA 4560 5156 Sat
## 6 São Paulo - Zona Sul 173 312 Sun
## hora_base
## 1 11
## 2 23
## 3 11
## 4 17
## 5 15
## 6 23
Podemos graficar:
ggmap(RMBA) +
geom_density2d(data = filter(tweets_rmba, source == "Instagram", !(wday(created) %in% 6:1) ), aes(x = X, y = Y, color = stat(level))) +
scale_color_viridis_c() +
facet_wrap(~hora_base, nrow = 3) +
labs(title = "Generacion de tweets desde Instagram",
subtitle = "Según hora del día, durante el fin de semana en RMBA",
caption = "Fuente: Información de Twitter",
x = "longitud",
y = "latitud")
Se observa como a la largo del día varía la concentración de tweets, existiendo un máximo de concentracion de los mismos a las 6:00, 10:00, 12:00 y 13:00 horas pero con poca dispersión, mientras que a las 8:00 y 9:00 horas éstos alcanzan su máxima dispersión. Luego a lo largo del resto del día se observa una distribución relativamente estándar.