This article explores how ISIS followers spread information via Twitter Network, their primary social outlet
## Observations: 17,410
## Variables: 8
## $ name (chr) "GunsandCoffee", "GunsandCoffee", "GunsandCoffe...
## $ username (chr) "GunsandCoffee70", "GunsandCoffee70", "GunsandC...
## $ description (chr) "ENGLISH TRANSLATIONS: http://t.co/QLdJ0ftews",...
## $ location (chr) "", "", "", "", "", "", "", "", "", "", "", "",...
## $ followers (int) 640, 640, 640, 640, 640, 640, 640, 640, 640, 64...
## $ numberstatuses (int) 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,...
## $ time (chr) "1/6/2015 21:07", "1/6/2015 21:27", "1/6/2015 2...
## $ tweets (chr) "ENGLISH TRANSLATION: 'A MESSAGE TO THE TRUTHFU...
To understand the fanbase, let’s look at their number of tweets vs number of followers
Rami stands out with large number of follower and tweet activity.
War Breaking News, Conflict Reporter and Salahuddin Ayubi has the most tweets activity
data%>%group_by(is_retweet)%>%
summarize(n_tweet=n())%>%
head()
## Source: local data frame [2 x 2]
##
## is_retweet n_tweet
## (chr) (int)
## 1 Originaltweets 11584
## 2 Retweets 5826
It appears retweet vol is about half of original tweets.
data%>%
filter(name%in%c("Rami","War BreakingNews","Conflict Reporter","Salahuddin Ayubi"))%>%
select(date,tweets,is_retweet)%>%
arrange(date)%>%
group_by(date,is_retweet)%>%
summarize(n_tweet=n())%>%
ggplot(aes(date,n_tweet,fill=is_retweet))+
geom_bar(stat='identity',position='stack',color='white') +
theme_classic()
Activity peaked at:
* Mar 17 (when news of ISIS killing Syrian poet broke out) * Apr 05 (ISIS launched chemical weapon to attack Syrian army base)
It appears all of these only started to be active since 2016 Feb
Let’s also top handles mentioned
mention=data%>%
mutate(mention=str_extract(tweets, "@\\w+"))%>%
select(mention)%>%
filter(!is.na(mention))%>%
unnest(mention)%>%
group_by(mention)%>%
summarize(n_mention=n())%>%
arrange(desc(n_mention))
mention%>%
head(10)
## Source: local data frame [10 x 2]
##
## mention n_mention
## (chr) (int)
## 1 @RamiAlLolah 533
## 2 @Nidalgazaui 326
## 3 @WarReporter1 236
## 4 @7layers_ 108
## 5 @sparksofirhabi3 75
## 6 @MaghrebiQM 70
## 7 @DidyouknowVS 69
## 8 @Conflicts 63
## 9 @Uncle_SamCoco 61
## 10 @Pachaconsumer 47
Due to sparse twitter activity in 2015, we zoom in to 2016
user=data%>%select(username)%>%unique()
links=data %>%
select(from=username, tweets)%>%
mutate(to = str_extract_all(tweets, '(?<=@)\\w+')) %>%
filter(to!='character(0)') %>%
select(-tweets)%>%
unnest(to)%>%
mutate(flag=to%in%user$username)%>%
filter(flag==TRUE)%>%
filter(from!=to)%>%
select(-flag)%>%
group_by(from,to) %>% tally()
nodes=data.frame(id=unique( union(unique(links$from), unique(links$to))))
nodes=data%>%mutate(id=username)%>%
group_by(id)%>%tally()
nodes$size <- sqrt(nodes$n)
nodes$title <-nodes$id
links$arrows <-'to'
links$width<- (links$n)^(1/3)
visNetwork(nodes, links, main='Twitter Network')%>%
visOptions(highlightNearest = TRUE, nodesIdSelection = TRUE)