2017年で最も「たーのしー!」かった日は?
今年も残すところわずかですね。
今年も多くのアニメが放送されましたが、2017年最も話題を集めたのは「けものフレンズ」ではないでしょうか?
kemono-friends.jp
本作で特徴的なセリフの1つに「たーのしー!」があります。
そこでけものフレンズに関するツイートから2017年で最も「たーのしー!」かった日を求めてみたいと思います*1。
1.Twitter APIキー・トークンの取得
ツイートを取得するにはTwitter APIキーとトークンを取得する必要があります。APIキー・トークン・ツイート取得までは下記の記事を参考にさせて頂きました。
www.randpy.tokyo
#使用するライブラリをダウンロード library(rtweet) library(dplyr) library(ggplot2) library(tidyverse) library(scales) #APPNAME, CONSUMERKEY, CONSUMERSECRETは前もって取得しておきます APPNAME <- "xxxxxxxxxx" CONSUMERKEY <- "xxxxxxxxxx" CONSUMERSECRET <- "xxxxxxxxxx" #トークンを取得 twitter_token <- create_token( app <- APPNAME, consumer_key <- CONSUMERKEY, consumer_secret <- CONSUMERSECRET)
これでツイート取得する準備は整いました。当初はsearch_tweets関数でハッシュタグ「#けものフレンズ」を含むツイートを全て取得しようと思っていたのですが、helpのdescriptionによると
ONLY RETURNS DATA FROM THE PAST 6-9 DAYS.
とのことで最高で6-9日までしか遡れないようです。*2
そこで、公式アカウント(@kemo_anime)のツイートを取得し、そのリツイートやいいねの数を見ることにします。
2.ツイート取得・前処理
#get_timeline関数を使用 #user:ユーザー名 #n:取得したいツイート数 #home:ユーザーのツイートを取得する場合はF #token:token_createで取得したオブジェクト tl <- get_timeline(user = "kemo_anime", n = 3200, home = F, token = twitter_token) dim(tl) [1] 2575 42
2575ツイートを取得できました*3。42変数の中にツイート日、文章、いいねの数などが含まれています。
アカウント名からてっきりアニメ専用アカウントかと思っていましたが、ツイート日が格納された変数(created_at)を見ると最初のツイートは2015年2月(アプリ時代?)でした。
以下解析のために前処理としてデータを整形します。
#リツイートを除外 tl <- tl[tl$is_retweet == F, ] #APIで取得するとグリニッジ標準時なので日本時間に変更 tl$created_at <- as.POSIXlt(tl$created_at, tz = "Japan") #アニメの影響を見たいので期間を2017年1月1日以降に tl <- tl[tl$created_at > "2017-01-01 02:00:00", ] #日ごとにまとめる tl$day <- as.POSIXct(substring(tl$created_at, 1, 10)) tw_per_day <- table(tl$day) %>% as.data.frame()
3.ツイート解析
下図は公式アカウントの1日あたりツイート数のヒストグラムです。
この1年で公式アカウントからは570ツイートあり、1日あたりのツイート数は1〜9件ということが分かります*4。
#合計ツイート数を算出 sum(tw_per_day$Freq) [1] 570 #1日あたりツイート数の概要 summary(tw_per_day$Freq) Min. 1st Qu. Median Mean 3rd Qu. Max. 1.000 1.000 2.000 2.317 3.000 9.000 #ヒストグラムのプロット ggplot(tw_per_day, aes(x = Freq)) + ggtitle("けものフレンズ公式アカウント ツイート数/日") + theme(plot.title = element_text(family = "HiraginoSans-W3", hjust = 0.5), axis.title = element_text(family = "HiraginoSans-W3", size = 10)) + geom_histogram(bins = 9, binwidth = 1) + scale_x_continuous(breaks = 1:9, labels = 1:9) + xlab("ツイート数/日") + ylab("頻度")
いいね数とリツイート数をプロットしてみます。
day_df <- data.frame(day = rev(unique(tl$day)), favorite_count = tapply(tl$favorite_count, tl$day, sum), retweet_count = tapply(tl$retweet_count, tl$day, sum)) #ggplot用に整形 day_plot <- tidyr::gather(day_df, key = "group", value = "value", c("favorite_count", "retweet_count")) #プロット ggplot(data = day_plot, aes(x = day, y = value, colour = group)) + ggtitle("けものフレンズ公式アカウント いいね数・リツイート数") + theme(plot.title = element_text(family = "HiraginoSans-W3", hjust = 0.5), axis.title = element_blank(), axis.text.x = element_text(family = "HiraginoSans-W3", size = 8), legend.text = element_text(family = "HiraginoSans-W3")) + geom_line() + scale_x_datetime(breaks = as.POSIXct(paste("2017-", 1:12, "-01", sep = "")), labels = paste(1:12, "月", sep = "")) + scale_y_continuous(labels = comma) + scale_colour_discrete(name = element_blank(), labels = c("いいね", "リツイート")) #いいねとリツイートの相関係数を算出 cor(day_df$favorite_count, day_df$retweet_count) %>% round(digits = 2) [1] 0.93
いいね数とリツート数は強い相関があること(相関係数:0.93)、どちらも日によって数に大きな差があることが分かります。
多少荒っぽいかもしれませんが、以降は単純のためにいいね・リツイート数の合計したものを基準にします。
#いいねとリツイートを合算 day_df$fav_rt <- day_df$favorite_count + day_df$retweet_count #プロット ggplot(data = day_df, aes(x = day, y = fav_rt, group = 1)) + ggtitle("けものフレンズ公式アカウント いいね+リツイート数") + theme(plot.title = element_text(family = "HiraginoSans-W3", hjust = 0.5), axis.title = element_blank(), axis.text.x = element_text(family = "HiraginoSans-W3", size = 8), legend.text = element_text(family = "HiraginoSans-W3")) + geom_line() + scale_x_datetime(breaks = as.POSIXct(paste("2017-", 1:12, "-01", sep = "")), labels = paste(1:12, "月", sep = "")) + scale_y_continuous(labels = comma) #いいね+リツート数の多い日トップ5を算出 day_df$Freq <- tw_per_day$Freq head(day_df[order(day_df$fav_rt, decreasing = T), -1], 5) favorite_count retweet_count fav_rt Freq 2017-03-29 65440 61601 127041 4 2017-12-25 76554 49895 126449 3 2017-07-21 45296 53329 98625 3 2017-04-24 33692 48750 82442 2 2017-04-27 36986 42759 79745 4
僅差ではありますが最も「いいね+リツイート数」が多いのは3月29日でした。ただし、3月29日のツイート数は4、2位の12月25日のツイート数は3ですので、1ツイートあたりの平均では12月25日がトップになります。
トップ5のうち放送期間中(1〜3月)のツイートが1件しかないのも興味深いです。
それでは、3月29日や12月25日にどのようなツイートがされたのか見ていきます。
tl$fav_ret <- tl$favorite_count + tl$retweet_count #いいね+リツイート数の多いツイートトップ5を表示 tweets <- data.frame(tl[, c("favorite_count", "retweet_count", "fav_ret", "text")], row.names = as.character(tl$created_at)) head(tweets[order(tweets$fav_ret, decreasing = T), -4], 5) favorite_count retweet_count fav_ret 2017-12-25 00:00:21 68438 45488 113926 2017-07-21 15:01:22 42581 51385 93966 2017-04-07 17:00:24 30064 44505 74569 2017-04-24 10:05:39 26132 38002 64134 2017-03-29 02:18:57 35350 25957 61307
ツイート単位で最もいいね+リツイート数が大きいのは12月25日の「ようこそジャパリパーク」のクリスマスver.を告知するツイートです。
3月29日のツイートは最終回直後のものですね。
Merry Christmas!
— けものフレンズ@公式アカウント (@kemo_anime) December 24, 2017
ジャパリパークより愛を込めて#けものフレンズ pic.twitter.com/hlGdaz8j6f
けものフレンズ# 最終回ご視聴ありがとうございました。最後までたくさんの方に楽しんで頂けた事に、製作に関わった全てのスタッフ一同、厚く感謝を申し上げます。今後も長く愛される作品となれますよう、創意工夫を尽くし努力して参ります。これからも「けものフレンズ」をよろしくお願い致します。
— けものフレンズ@公式アカウント (@kemo_anime) March 28, 2017