Анализ данных выявил, что Трамп-с-iPhone добрее, чем Трамп-на-Android

Программист Дэвид Робинсон в очередной раз листая свою твит-ленту заметил интересный факт — когда Трамп желает удачи олимпийцам, он пишет с iPhone, а когда оскорбляет соперников — с Android. Это породило у Дэвида определённую гипотезу, которая нуждалась в проверке с помощью автоматизированного анализа данных. К счастью, он работает в Stack Overflow в качестве Data Scientist, и может себе позволить этим заняться.

Твиты с Android и iPhone имеют совершенно разную направленность

Твиты с Android и iPhone имеют совершенно разную направленность

Справедливости ради, стоит отметить, что эту закономерность он заметил далеко не первым, однако раньше всё основывалось лишь на догадках и поверхностном просмотре твитов. Без программистов никуда 😉

Сначала он лёгким движением руки загрузил все твиты Трампа (использя библиотеку 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 постят совершенно разные люди, Дэвид решил проанализировать настроение постов. Для этого он собрал наиболее часто встречающиеся слова в твитах аккаунта Трампа и посчитал, с какого аккаунта они чаще отправляются, используя коэффициент, формула которого:

formula

Результаты получились достаточно предсказуемые:

graph4

На основании этого графика можно сделать несколько выводов:

  • С Android не публикуются твиты с хэштегами (за исключением “ретвитов”);
  • Слова вроде “присоединяйтесь”, “завтра” и “19 часов” используются преимущественно с iPhone, т.е. iPhone используется для анонса мероприятий;
  • Почти все грубые, эмоциональные и оценочные выражения (“dumb”, “crazy”, “weak” и т.п.) публикуются с Android.

Полный текст исследования вы можете прочитать у Дэвида в блоге.