Configurando el twitter token con los datos de acceso a la API:
twitter_token <- create_token(
app = appname,
consumer_key = consumer_key,
consumer_secret = consumer_secret,
access_token = access_token,
access_secret = access_secret)
Realizando la busqueda por coordenadas en un radio de 10 millas alrededor del centro de la ciudad y excluyendo retweets:
tweets_formosa <- search_tweets(n=10000,
geocode = "-26.176644,-58.184452,10mi",
include_rts = FALSE,
retryonratelimit = TRUE)
Visualizando los 10 tweets con mayor repercusion:
tweets_formosa %>%
top_n(10,retweet_count) %>%
arrange(desc(retweet_count)) %>%
select(screen_name,text,retweet_count)
## # A tibble: 10 x 3
## screen_name text retweet_count
## <chr> <chr> <int>
## 1 belensilva227 Yo no pedí nacer asi https://t.co/4kBBsaNsY7 101
## 2 LuchoMichiel… Me apague y ya no se quien soy 73
## 3 KarenJE01 Soy fiel creyente del Karma, asique vos tranqui … 55
## 4 _Guada_Roble… Tengo mucha tristeza acumulada adentro, que me d… 52
## 5 Ivanzanabria4 Me podes hacer mierda pero igual voy a ver lo bu… 47
## 6 ayma_idoyaga Una partecita de mi se apago 47
## 7 mili_ibars Necesito una persona que dé un giro a mi vida y … 46
## 8 CogornoNaza quiero estar con alguien que se tome en serio la… 37
## 9 Isisduarte35… Estoy queriendo traer estos conjuntos de pijamas… 34
## 10 paulamontiel_ Que feliz era en 2017 34
Visualizando los horarios de mayor actividad. Se aprecia un patron de uso co un pico maximo alrededor de 1:00hs, y un un pico menor alrededor de 15:00 hs.
ts_plot(tweets_formosa,"hours")+
labs(title="Uso de Twitter en la Ciudad de Formosa",
subtitle="Frecuencia de tweets por hora",
x="Hora",
y="Frecuencia",
caption="Fuente: API Twitter")
Analizando estadisticos de popularidad de usuarios. Como es comun en las redes sociales, se observa una mediana de seguidores muy por debajo del promedio, debido a la presencia de fuertes outliers:
tweets_formosa %>%
ggplot()+
geom_histogram(aes(x=followers_count))+
labs(title="Uso de Twitter en la Ciudad de Formosa",
subtitle="Histograma de Usuarios por cantidad de seguidores",
x="Cantidad de seguidores (escala logaritmica)",
y="Frecuencia",
caption="Fuente: API Twitter")+
scale_x_log10()
tweets_formosa %>%
select(followers_count) %>%
summary()
## followers_count
## Min. : 0.0
## 1st Qu.: 173.0
## Median : 408.0
## Mean : 764.9
## 3rd Qu.: 880.0
## Max. :32532.0
Obteniendo los 10 usuarios con mas seguidores:
tweets_formosa %>%
group_by(screen_name,followers_count) %>%
summarise() %>%
top_n(10,followers_count) %>%
arrange(desc(followers_count)) %>%
select(screen_name,followers_count) %>%
head()
## # A tibble: 6 x 2
## # Groups: screen_name [6]
## screen_name followers_count
## <chr> <int>
## 1 veradade_e_fe 32532
## 2 luisnaidenoff 24631
## 3 giuupino 11086
## 4 MylagrosGomez 10835
## 5 JuanMoiraghi 10552
## 6 rodricoronel8 9487
Obteniendo estadisticas de uso por dispositivo o plataforma:
tweets_formosa %>%
ggplot()+
geom_bar(aes(x=source))+
coord_flip()+
labs(title="Uso de Twitter en la Ciudad de Formosa",
subtitle="Uso segun plataforma o dispositivo",
y="frecuencia",
x="plataforma",
caption="Fuente: API Twitter")
Analisis geografico
# En primer lugar, se georeferncian solamente los tweets con coordenadas geograficas especificas (la muestra baja de 18.000 observaciones a solo 754)
tweets_formosa_geo<-lat_lng(tweets_formosa) %>%
select(-geo_coords, -coords_coords, -bbox_coords) %>%
filter(!is.na(lat)|!is.na(lng)) %>%
arrange(desc(followers_count))
# Se asigna una paleta de colores a la escala numerica de cantidad de seguidores:
paleta_formosa<-colorNumeric(palette="viridis",domain=tweets_formosa$followers_count)
#Se genera un grafico interactivo mostrando el texto del tweet al hacer click:
leaflet(tweets_formosa_geo) %>%
addProviderTiles(providers$CartoDB.Positron) %>%
addCircleMarkers(radius=~retweet_count,
popup=~text,
color=~paleta_formosa(followers_count)) %>%
addLegend(title="Followers",pal=paleta_formosa,values=~followers_count)
En el grafico muestra en escala de colores la cantidad de seguidores por usuario, y en el radio del circulo la repercusion del tweet especifico (cantidad de retweets). Sin embargo no se aprecia una correlacion entre popularidad del usuario y repercusion de sus tweets. Como el dataset geo referenciado contiene una muestra mucho menor, realizo un analisis de correlacion utilizando el dataset general:
tweets_formosa_agrupados<-tweets_formosa %>%
group_by(screen_name,followers_count) %>%
summarise(tweets=n(),retweets=sum(retweet_count),favourites=sum(favourites_count))
tweets_formosa_agrupados<-mutate(tweets_formosa_agrupados,tasa_retweet=retweets/tweets,tasa_favourites=favourites/tweets)
ggplot(tweets_formosa_agrupados) +
geom_point(aes(x=followers_count,y=tasa_retweet,color=tasa_favourites),alpha=.2)+
scale_color_viridis_c()+
labs(title="Uso de Twitter en Ciudad de Formosa",
subtitle="Analisis de correlacion popularidad - repercusion de tweets",
caption="Fuente: API Twitter",
x="Seguidores",
y="Conteo de Retweets",
color="Conteo favoritos")+
geom_smooth(aes(x=followers_count,y=tasa_retweet),method="lm")
## `geom_smooth()` using formula 'y ~ x'
tweets_formosa_lm<-lm(tasa_retweet ~ followers_count, data=tweets_formosa_agrupados)
summary(tweets_formosa_lm)
##
## Call:
## lm(formula = tasa_retweet ~ followers_count, data = tweets_formosa_agrupados)
##
## Residuals:
## Min 1Q Median 3Q Max
## -6.502 -0.338 -0.279 -0.251 46.230
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.25101134 0.03450317 7.275 0.000000000000434 ***
## followers_count 0.00020750 0.00002917 7.114 0.000000000001387 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.743 on 3201 degrees of freedom
## Multiple R-squared: 0.01556, Adjusted R-squared: 0.01526
## F-statistic: 50.61 on 1 and 3201 DF, p-value: 0.000000000001387
El estadistico R^2 bajo confirma una baja correlacion entre ambas variables.