Программист Дэвид Робинсон в очередной раз листая свою твит-ленту заметил интересный факт — когда Трамп желает удачи олимпийцам, он пишет с iPhone, а когда оскорбляет соперников — с Android. Это породило у Дэвида определённую гипотезу, которая нуждалась в проверке с помощью автоматизированного анализа данных. К счастью, он работает в Stack Overflow в качестве Data Scientist, и может себе позволить этим заняться.
Справедливости ради, стоит отметить, что эту закономерность он заметил далеко не первым, однако раньше всё основывалось лишь на догадках и поверхностном просмотре твитов. Без программистов никуда 😉
Сначала он лёгким движением руки загрузил все твиты Трампа (использя библиотеку twitteR):
library(dplyr)
library(purrr)
library(twitteR)
# You'd need to set global options with an authenticated app
setup_twitter_oauth(getOption("twitter_consumer_key"),
getOption("twitter_consumer_secret"),
getOption("twitter_access_token"),
getOption("twitter_access_token_secret"))
# We can request only 3200 tweets at a time; it will return fewer
# depending on the API
trump_tweets <- userTimeline("realDonaldTrump", n = 3200)
trump_tweets_df <- tbl_df(map_df(trump_tweets, as.data.frame))
# if you want to follow along without setting up Twitter authentication,
# just use my dataset:
load(url("http://varianceexplained.org/files/trump_tweets_df.rda"))
Затем очистил данные от незначительного количества постов с веб-интерфейса, iPad и прочих — нас же интересуют только посты с iPhone и Android, верно?
library(tidyr)
tweets <- trump_tweets_df %>%
select(id, statusSource, text, created) %>%
extract(statusSource, "source", "Twitter for (.*?)<") %>%
filter(source %in% c("iPhone", "Android"))
После этого он решил посмотреть, отличается ли время отправки постов с Android и iPhone:
library(lubridate)
library(scales)
tweets %>%
count(source, hour = hour(with_tz(created, "EST"))) %>%
mutate(percent = n / sum(n)) %>%
ggplot(aes(hour, percent, color = source)) +
geom_line() +
scale_y_continuous(labels = percent_format()) +
labs(x = "Hour of day (EST)",
y = "% of tweets",
color = "")
Выяснилось, что да, отличается — публикации с Android происходят преимущественно утром, тогда как публикации с iPhone — днём и ранним вечером:
Как ещё можно понять, что с Android и iPhone пишут разные люди? Дэвид заметил, что иногда вместо обычного ретвита сообщений, Трамп копирует текст чужого поста и помещает его в кавычки, вроде этого:
Как выяснилось, подобное форматирование можно встретить только в постах с Android:
С другой стороны, практически все публикации с прикреплёнными ссылками или изображениями отправляются с iPhone (разница в 38 раз):
После того, как точно стало понятно, что с Android и iPhone постят совершенно разные люди, Дэвид решил проанализировать настроение постов. Для этого он собрал наиболее часто встречающиеся слова в твитах аккаунта Трампа и посчитал, с какого аккаунта они чаще отправляются, используя коэффициент, формула которого:
Результаты получились достаточно предсказуемые:
На основании этого графика можно сделать несколько выводов:
- С Android не публикуются твиты с хэштегами (за исключением «ретвитов»);
- Слова вроде «присоединяйтесь», «завтра» и «19 часов» используются преимущественно с iPhone, т.е. iPhone используется для анонса мероприятий;
- Почти все грубые, эмоциональные и оценочные выражения («dumb», «crazy», «weak» и т.п.) публикуются с Android.
Полный текст исследования вы можете прочитать у Дэвида в блоге.