R
機械学習
MachineLearning
DataScience
Exploratory

安倍政権による北朝鮮ミサイル打ち上げ関与の陰謀論をデータから検証してみた

More than 1 year has passed since last update.

Pasted image at 2017_05_29 04_10 PM.png

最近よく、北朝鮮でのミサイル発射が話題になっていますよね。
その度に、ニュースや新聞で大々的に取り上げられます。

そんな中、実は安倍政権が、支持率を上げるために北朝鮮のミサイル打ち上げに関与しているのではないかという陰謀論を最近ウェブで見かけることがありました。防衛費増額や、テロ対策の法案を推し進めたい安倍政権にとっては、恐怖心を掻き立ててくれる北朝鮮のミサイル発射により、その支持率を上げられることが狙いなのではないかと言うことらしいです。そこで、検証出来るようなデータがどこかに有るかなと思い、データを探してみたところ、丁度良いデータが見つかりました。

これらのデータを使って、実際にミサイル発射のタイミングと支持率はどういう関係になっているのか、さらにはこうした陰謀論をデータをもとに検証してみたいと思います。

ツール

今回もプログラミングなしでデータサイエンスができるExploratoryを使います。

データのインポート

まずは、必要なこちらの内閣支持率推移のデータをインポートします。

Exploratoryの方にデータをインポートすると、最初にこのようなサマリー(概要)情報が表示されます。“Date”は、いつの支持率か、“Yes”は支持するという回答がいくつだったか、“No”は支持しないという回答がいくつだったか、という情報になります。“X4"はNA(欠損値)しかない空の列だということが、このサマリーからわかります。

Screen Shot 2017-05-29 at 9.57.02 AM.png

今回欲しい情報は、時系列に沿った支持率なので、以下のような簡単なデータの加工を列・ヘッダー・メニューを使って行います。

  • 日付の情報である“Date”列が文字データとして認識されているのを、日付のデータタイプに変換します。
  • 支持率、つまりYesとNoの数の合計に対するYesの比率を求めます。

それらを行うと、以下のように日付(Date)と支持率(yes_ratio)のデータの分布が簡単に見えます。データは2014年の5月1日から2017年5月25日まであるのがわかります。

Screen Shot 2017-05-29 at 10.08.28 AM.png

データの可視化

それではまず、支持率の推移を可視化してみましょう。

Vizタブに移り、Lineチャートを選びます。X軸には“date”列を選び、その集計単位をデフォルトのYear(年)からDay(日)に変えます。

そして、Y軸に“yes_ratio”を選びます。

Screen Shot 2017-05-29 at 10.43.09 AM.png

このグラフによって、支持率が細かく上下に振動しながら、全体として推移していっている事がわかるかと思います。例えば、2015年終わりに大きく上がったものの、そこから2016年初めの方にかけて大きく下がり、そこから持ち直していってる、といったことなどがひと目でわかります。

次に、もう一つのデータセット、北朝鮮のミサイル発射に関するデータをインポートします。

データをインポートすると、このようにサマリービューが現れます。
Screen Shot 2017-05-29 at 11.49.49 AM.png

このサマリービューから、ミサイルがいつ発射されたのか(Date)、どういうタイプのミサイルなのか(Missile Type)などが含まれていることがわかります

こちらのデータも簡単に可視化してみましょう。まずはどういったタイプのミサイルを発射しているのかを時系列にそって見てみましょう。Typeには、“Bar”を選択し、X Axisには“Date”、Colorに“Missile Type”を選択します。

Screen Shot 2017-05-29 at 11.54.52 AM.png

こうしてみることで、近年は、それまで主流だったSRBM(潜水艦から打ち出すタイプのミサイル)から、IRBM(中距離弾道ミサイル)や、MRBM(準中距離弾道ミサイル)が多くなってきていることがわかります。潜水艦で近づいて発射するのではなく、北朝鮮の国内から直接狙うようなミサイルを使う戦略にシフトしつつあるということでしょうか。

また、ロケットの発射場所や、飛距離などのデータも入っているので、このデータだけで分析しても面白いことが色々と見えてきそうなのですが、今回の分析では、何日にミサイルが発射されたかだけを見ることができれば良いので、必要になるDateとwith_missileの列だけを選びます。

Screen Shot 2017-05-29 at 5.11.40 PM.png
それでは、このデータと先程の支持率のデータを結合させて、ミサイルの発射日と支持率の変化を実際に比べてみましょう。

ミサイルの発射と内閣支持率に影響関係があるかを見るために、これらのデータを結合します。

内閣支持率のデータに移り、“Date”列のカラムメニューから、“Join”を選択します。

データの結合

まずは内閣支持率のデータの方に戻り、“Date”列の列・ヘッダー・メニューから、“Join”を選択します。

Screen Shot 2017-05-29 at 12.24.26 PM.png

結合したいデータフレームである"north_korea_missile_tests_database_050217"をTarget Data Frameに、"Date"列をもとに結合したいので、Current ColumnとTarget Columnには、"Date"を設定します。
Screen Shot 2017-05-29 at 12.28.15 PM.png

実行し、テーブルビューに移ってみると、with_missileという列が出来ていることが確認できるかと思います。また、少し下にスクロールしてみると、ミサイルの発射があった日には、TRUEが入っていることが確認できます。

Screen Shot 2017-05-29 at 12.40.11 PM.png

データの可視化

では、支持率の、ミサイル発射前後での変化を見たいので、先程の支持率の推移のチャートの上に、ミサイル発射のタイミングを重ねてみたいと思います。

そのように、チャートにある列の情報を加えたいときには、Y軸を追加することで可能になります。

Vizタブに移ります。そこで、Y Axisの右の + アイコンをクリックし、軸を追加します。その追加された軸に、"with_missile"を設定し、その右のグレーのボタンで、"Number of TRUE"に設定します。

“Number of TRUE”にすると、“with_missle”の列は、ミサイル発射があった日にはTRUE、無かった日にはNAが入っているので、あった日には1、無かった日は0としてカウントされます。

Screen Shot 2017-05-29 at 1.49.19 PM.png

こちらをBar(棒)として表示させると、情報が見やすくなります。

Screen Shot 2017-05-29 at 1.59.21 PM.png

すると、このように、ミサイルの発射があったところにバーが現れるようになります。

Screen Shot 2017-05-27 at 12.40.21 PM.png

これで、内閣支持率の変化と、ミサイル発射があったタイミングが同時に可視化されました。

見てみると、支持率が落ちていく頃にミサイルが発射されその後支持率が上がったパターンは、こちらで発見出来ます。

Screen Shot 2017-05-29 at 3.13.50 PM.png

逆に、ミサイルが発射されることによってその後支持率が下がっていくパターンは、こちらに現れています。

b25fb078-b245-8f9f-f410-253448ce730d.png

ただ、そもそも見てわかるように、内閣の支持率は絶えず上がったり下がったりしています。なので、その上昇や下降が本当にその直前のミサイルの発射に影響されているのか、それとも偶然なのかというのがはっきりとはわかりません。

ですので、実はここで知りたいのは統計の世界では俗に言う、外れ値(アウトライアー)です。つまり絶えず上がったり下がったりするのがある意味普通だとし、ただそうした中にも何かのパターン、もしくはトレンドが存在すると仮定します。そしてそうしたトレンドから大きく外れた値を外れ値と呼びます

そしてこの外れ値がミサイルの発射前後にあると、そこに何か関連性があるのではと推測し始めることができるのです。つまり、ミサイルの発射後に、普段は見られないような支持率の上昇があったとするとミサイルの発射は確かに政権の支持率上昇に役立っていると言えるかもしれません。逆に、普段以上の下降があったとすると、ミサイルの発射は全く役立たないどころか逆の効果があると言えるわけです。

この外れ値を探し出す方法はいろいろあるのですが、今日はProphetという過去の時系列データをもとに予測モデルを作ることが簡単にできるアルゴリズムを使って、未来を予測するのではなく、過去のトレンドを把握し、そこから外れている値を探し出してみたいと思います。つまり、期待される内閣支持率の上昇もしくは下降のトレンドもしくは傾向を把握することができれば、それぞれの上昇または下降が想定内なのかそれとも異常なのかが判断できるということになります。

Prophetによる、外れ値検知

それでは、実際にこの内閣支持率のデータに対して、時系列予測のアルゴリズムであるProphetをかけてみましょう。

左上の + アイコンから、"Run Analytics..." -> "Run Time Series Forecast"を選択します。

Screen Shot 2017-05-27 at 3.18.02 PM.png

日々のyes_ratioに対しての予測をしたいので、Date / Time Columnに"date"、Value Columnに"yes_ratio"を選択します。

Screen Shot 2017-05-29 at 4.23.03 PM.png

これを実行します。一旦、テーブルビューに戻って結果をみると、"forecasted_value"(予測された値)、"forecasted_value_high"(これよりは大きくならないだろうという予想)、"forecasted_value_low"(これ以上は小さくならないだろうという予想)といった列が作られていることがわかると思います。

Screen Shot 2017-05-29 at 1.40.24 PM.png

では、Vizタブに移り、これらの列も一緒に可視化してみましょう。Y Axisの右の + アイコンから、Y軸を追加します。そこに、forecasted_valueを設定します。

Screen Shot 2017-05-27 at 4.23.15 PM.png

さらに、“forecasted_value”(予測された値)の信頼区間、つまりたいていのケースはこの幅で収まるであろうという幅を表示してみましょう。

Screen Shot 2017-05-27 at 4.27.24 PM.png

すると、このようなチャートになるかと思います。
Screen Shot 2017-05-29 at 4.26.15 PM.png

青い線が、内閣支持率、緑の線がこの予測モデルによって導き出された支持率の予測値、さらに薄い緑の帯のようなものが信頼区間、つまりは大体この範囲に収まるだろうと思われる範囲を表しています。

これによって、ある程度予測される範囲での支持率の推移から大きくはずれて下がっている点が3箇所ほど見つけ出せるかと思います。

Screen Shot 2017-05-29 at 4.26.15 PM copy.png

注目すべきはそのうち2つは、ミサイル発射の直後に起こっているということです。そのことを考えると、ミサイル発射は、内閣支持率を上げるのではなく、逆に下げるという効果があるのではないかということがここから推測できます。

ただし、毎回ミサイル発射の度に大きく下がっているわけではないので、これだけでミサイルの発射は支持率を下げると言い切ることはできません。しかし、少なくとも、前述の陰謀論にあるような、ミサイルの発射が支持率を上げるという効果をここからは確認することができません

つまり、もし安倍内閣が合理的に考えるのであれば、少なくとも内閣の支持率を上げるためにミサイルの発射に関与するということはありえないのではないでしょうか。

まとめ

今回は、ネット上で飛び交っていた、安倍政権が北朝鮮ミサイル打ち上げに関与しているという陰謀論を、内閣支持率に対する予測分析と、ミサイル打ち上げのデータとの比較を行うことで、検証してみました。結果として、そういった陰謀論の前提であるミサイル発射が内閣支持率を高めるのに役立つということ自体がデータからは証明されないということがわかりました。

ネット上には、根拠のない情報、いわゆるフェイクニュースが飛び交うことも多いので、無批判にそういったものを信じてしまうのではなく、自分で検証してみることが大事です。こういった時代であるからこそ、自分で様々なところからデータを集めてきて自由に素早く分析ができる力、つまりデータサイエンス力というのはより一層求められるスキルと言えるでしょう。

データ分析をさらに学んでみたいという方へ

来月6月に、シリコンバレーのExploratory社によって行われるデータサイエンス・ブートキャンプが東京で行われます。本格的に上記のようなデータサイエンスの手法をプログラミングなしで学んでみたい方、そういった手法を日々のビジネスに活かしてみたい方はぜひこの機会に、参加を検討してみてはいかがでしょうか。こちらに詳しい情報がありますのでぜひご覧ください。