Twitterのツイートを分析して、どういうツイートがRTされやすいのか分析してみた

こんにちは、スケベサイエンティストのDAIです。

https://twitter.com/never_be_a_pm

ネット弁慶なので、どうにかしてネットでモテたいです。そこで、ツイッターランドでモテるスケベサイエンティストになるために、今回はツイッターのデータ分析をしてみました。

# 背景

* ツイッターのフォロワーの数は、信頼を測る尺度として最近注目されはじめています。
* フォロワーを増やすことは、個人の広告効果や、ネットワーキング効果をあげるうえで、非常に社会的に有利になります。


# 目的

* 今回は、自分のツイートを分析して、どのようなツイートをすれば、フォロワーが増えるのかを、定量的にデータ分析し、施策レベルにまで落とし込んでみたいと思います。

## 先行研究

まず、フォロワーを増やすメリットについて。

*フォロワーを増やすメリット*

> 他業種、他年齢層の知り合いがすごく増えました。さきほど「人がいい」と仰ってくださいましたが、そのおかげかツイッター経由で「会いたい」と言ってくれる人が、すごく多いんです。 http://blog.corkagency.com/howto/1481/

* また、そのフォロワーの増やし方も、インフルエンサー各位が公表しています。

*フォロワーの増やし方*

> ① フォロワーを増やすことを常に考える
② 140文字ギリギリでTweetする
③ 拡散されやすい切り口でTweetする
④ インフルエンサーに積極的に絡む
⑤ トレンドに乗る（仮想通貨）
Twitterでフォロワーを増やす方法【失敗する理由は超簡単です】
https://manablog.org/twitter-follower/

ツイッターのフォロワーを3ヶ月で3,000人ほど増やした方法
https://note.mu/etomiho/n/ne98757873a18

> ・ツイッターにおける長文はエンゲージメント率が高い
・「半分を諦める」とフォロワーは増える
・拙くてもいいから「自分の言葉で」発信すること。

あとは知り合いベースで聞いたものとしては、

* 箇条書きにしたツイートは拡散しやすい
* 断定したツイートは拡散しやすい

でした。

現在のツイッターアカウントは、13000フォロワー程度です。
https://twitter.com/never_be_a_pm

ツイートのフォロワー数に応じて、ツイートのコンテンツよりも絶対数の影響が強いかもしれないので、過去5カ月のフォロワーの推移数を描画しますが、そこまで劇的に増加しているわけではなく、伸び率は一定のように見えます。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/134704/64607ed8-e8c8-5d27-eeb7-089daade9af1.png)

Dailyのフォロワーの伸び数ですが、こちらも大きく変化はしていません。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/134704/3de92598-5c39-08f1-f9a5-b04b04fdca3d.png)


## 本研究の問い

1.  どのようなツイートは、リツイートされやすいのか
どのようなツイートをすると、リツイートがされやすいのか、ツイートのテキストデータから、分析してみたいと思います。

## 仮説

- フォロワー数獲得のためには、Impression数を上げるのと、プロフィールクリック数を上げるというアプローチが必要かと考えています。



- リツイートされやすいツイートは
   - 文字数が多いツイート
   - ページの中にURLが存在するツイート
   - 「です」「ます」が含まれる断言ツイート
   - 「おすすめ」というキーワードが入っているレコメンドツイート

## 分析方法

- Twitter Analytics上から、5カ月分のツイートを取得しました。これらをCSVで1カ月ごとに出力し、Pandasを利用して、マージします。
- Azure Jupyter Notebook上でPythonを利用して、分析しました。
- 詳しくは公開URLでnotebookを共有いたします。
- メインでは、クロス集計と相関分析を利用しました。全部記述統計の知識です。

## データ

取得したCSVのデータの中身を見ると、以下のような情報が取得できます。

```python

april_df = pd.read_csv("april.csv")
for value in april_df.columns.values:
    print (value)

ツイートID
ツイートの固定リンク
ツイート本文
時間
インプレッション
エンゲージメント
エンゲージメント率
リツイート
返信
いいね
ユーザープロフィールクリック
URLクリック数
ハッシュタグクリック
詳細クリック
固定リンクのクリック数
アプリ表示
アプリインストール
フォローしている
ツイートをメール送信
ダイアル式電話
メディアの再生数
メディアのエンゲージメント
プロモのインプレッション
プロモのエンゲージメント
プロモのエンゲージメント率
プロモのリツイート
プロモの返信
プロモのいいね
プロモのユーザープロフィールクリック
プロモのURLクリック数
プロモのハッシュタグクリック
プロモの詳細クリック
プロモの固定リンクのクリック数
プロモのアプリ表示
プロモのアプリインストール
プロモのフォローしている
プロモのツイートをメール送信
プロモのダイアル式電話
プロモのメディアの再生数
プロモのメディアのエンゲージメント

```

4月から8月のツイートのデータを、それぞれ結合します。

```python
april_df = pd.read_csv("april.csv")
may_df = pd.read_csv("may.csv")
june_df = pd.read_csv("june.csv")
jul_df = pd.read_csv("jul.csv")
august_df = pd.read_csv("august.csv")
# データの結合
combine = [april_df, may_df, june_df, jul_df,august_df]
tweets_df = pd.concat(combine).sort_values(by="時間")
```

その後ちょこっとデータを整形して、こんな感じのデータフレームにしてあげました。

> tweets_df
* created_at: 日時
* retweet: RT数
* retweet_rate: RT率 (0～100%)、RT数 / imp
* has_point:: ツイートに中点(箇条書きの点)が存在か（0=No, 1=Yes)
* has_url: URLが存在するか（0=No, 1=Yes)
* has_recommend:「おすすめ」というキーワードがツイートに含まれているか （0=No, 1=Yes)
* has_assertion: 「です、ます」などの断定の助動詞が含まれているか（0=No, 1=Yes)
* impression: インプレッション数
* nl_count: 改行コードの数
* profile_click: プロフィールクリック数
* profile_click_rate: プロフィールクリック率　(0～100%)

## 分析結果


### 1. 仮説：文字数が多いほど、RT数は伸びる →　実際に伸びる

ツイートで、最大5万RTのツイートがあり、100RTくらいまでが外れ値になっていまいそうなので、100RT以下のツイートのみを取得して、分析してみました。その結果、ツイートの文字数と、リツイート数の間に、中程度の相関性が見られました(r=.3)

![image.png](https://qiita-image-store.s3.amazonaws.com/0/134704/95f0faa4-032b-1a56-e227-59c7d54b9030.png)


### 2. 仮説：ページの中にURLが存在するツイートが存在するツイートはRT数は伸びる　→ やや伸びやすい

100RT以下のツイートのみを取得して、分析してみました。その結果、URLがないツイートの平均RT数は、3.53にたいし、あるツイートは4.84でした。少しだけ伸びやすいようです。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/134704/2790505f-b111-05a3-d742-aba7c6affe09.png)

### 3. 仮説：ツイートの表示面積が大きければ多いほど、RT数が大きい →　そんなに変わらない

広告では表示面積を上げると、クリック率が大きくなったりします。なので、面積を上げる（=改行コードを含む）とRT数が伸びると考えました。これらの改行コードの数とリツイート数を比較したところ、あまり関係性を見つけられませんでした。

### 4. 仮説：断定口調ほど、リツイートされやすい　→　断定口調のほうがやや伸びやすかった

「です、ます」など、ツイートが断定口調だと伸びやすいかもしれないと思い、リツイート数を比較してみました。その結果、「です、ます」が含まれていないツイートのリツイート数が平均3.58なのに対して、含まれているツイートが5.39リツイートでした。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/134704/a8569ee2-035b-67ae-9d23-e0a45e1729a4.png)

### 5. 仮説：「おすすめ」というキーワードが入っていると、リツイートされやすい　→　おすすめのキーワードが入っているとリツイートされやすかった

「おすすめ」というキーワードの有無によって、平均リツイート数が変わるのか比較してみました。その結果、おすすめというキーワードが入っていないツイートの平均リツイート数は、4.06に対して、おすすめというキーワードが入っているツイートは14.3と、3倍近くのリツイート数が存在しました。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/134704/72e9ad50-0d6d-7d56-9d63-71843e834836.png)

### 6. 仮説：箇条書きツイートほど、リツイートされやすい　→　かなりリツイートされやすかった

箇条書き、つまり中点（・）が存在するツイートの平均リツイート数を比較しました。その結果、箇条書きではないツイートの平均リツイート数が3.67に対し、箇条書きツイートの平均リツイート数が8.41でした。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/134704/2890e1b0-5f56-3f7d-ad07-0b7d7844eb25.png)


### 散布行列

最後に、各変数の散布行列となります。小さいので、頑張ってみてみてください。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/134704/43636dda-1d97-ec7a-1d16-39e94533b0a4.png)

![image.png](https://qiita-image-store.s3.amazonaws.com/0/134704/85ebbc06-f7cf-ecbd-cfa3-a105d65cb4cc.png)

### まとめ

ということで、リツイートされやすいツイートの特徴は、以下の通りでした。

* 文字数が多い
* ページの中にURLが存在するツイートが存在する
* 断定口調（です、ますで言い切りのツイート）
* おすすめという言葉が入っているツイート
* 箇条書きのツイート（多分まとめ系？）


ということで、こんなツイートをしてみました！伸びるかな。

<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">【認定スケベサイエンティストになるおすすめの方法】<br><br>・Web APIとスクレイピングを極める<br>・Pythonを使えるようになる<br>・めちゃくちゃスケベな妄想をする<br>・あとは性欲ドリブンで実装する<br><br>スケベサイエンティストになるなら、これです！特に最後の性欲が一番大事です。死ぬ気で頑張りましょう！</p>&mdash; Dai (@never_be_a_pm) <a href="https://twitter.com/never_be_a_pm/status/1031109533857329153?ref_src=twsrc%5Etfw">2018年8月19日</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>