読者です 読者をやめる 読者になる 読者になる

廿TT

譬如水怙牛過窓櫺 頭角四蹄都過了 因甚麼尾巴過不得

折れ線グラフに矢印を加える――利用と誤用

Excel R ポリシー グラフ

折れ線グラフ矢印問題

このような折れ線グラフがあったとします。

f:id:abrahamcow:20150112090207p:plain

このデータはエクセルの RAND 関数で作った乱数です。

傾向を強調して分かりやすく見せたいがために、折れ線グラフに矢印を加えてプレゼンテーション、ドキュメンテーションを行うことがよくあります。

私も前職ではよくこのようなことを行っていました。
同調圧力に屈したというか、ぼくが勝手に空気を読んで先輩の指導にそのまま従ってしまった。)

f:id:abrahamcow:20150112090831p:plain

しかし、これはデータの読み取りをミスリードするものです。

この系列はさきほど申し上げたように乱数です。その上下はランダムなものです。

ランダムな、たまたま起こった上がった下がったを強調して一喜一憂させることは、さまざまな施策判断に悪影響を及ぼします。

また、背景にグラデーションやイラストを書き込むことも、データの傾向に対する印象を左右してしまいます。

f:id:abrahamcow:20150201171108p:plain

これも避けるべきです。

これは極端な例なので、「おれはこんなことしないし、そんな印象操作には惑わされない」と思うかもしれませんが、人間はなにかを伝えたいとき、けっこうこれに近いことをやってしまうものです。

f:id:abrahamcow:20150112092722j:plain
http://www.asahi.com/articles/ASGCP6WC3GCPPTIL02G.html

注意して欲しいのは、多くの場合こういった行為は「データで人を騙してやろう」という悪意からでなく、「わかりやすく伝えたい」という善意から生まれるという点です。

問題にすべきは悪気の有無ではありません。

施策判断に悪影響を及ぼす統計グラフを排除するためには、グラフ作成者が細心の注意を払う必要があるのです。

ではどうすべきか

エクセル

データの傾向を全体的に捉えるため、どうしても矢印を書き加えたい場合、近似曲線機能を使うことをおすすめします。

f:id:abrahamcow:20150112093645p:plain

この系列の上下動はランダムなものですが、近似曲線機能ではランダムな上下動を誤差項という確率変数の一種として処理します。

近似曲線機能によって当てはめた矢印は傾きが緩やかになっており、ランダムな上下動によって結果的に大きな差はでていない、という事実を把握できます。

f:id:abrahamcow:20150112093702p:plain

近似曲線の追加を選んで、

f:id:abrahamcow:20150112093710p:plain

線の色や、

f:id:abrahamcow:20150112093717p:plain

太さと矢印を調整すれば完成です。

エクセルファイルは以下に置いておきます。

http://zisatsu.web.fc2.com/monooki/excel/linechart_added_arrow.xlsx

あまり太くし過ぎると、それはそれで量を読み取りにくくなりますし、傾向を過大評価することにもつながりますので、注意してください。

ここで述べたような、細かい上下動をならして傾向を読み取る方法は「平滑化」と総称されます。

平滑化にはさまざまな方法があり、それだけで本が何冊もでています。

どのような平滑化が適しているかは場合によって異なりますが、ここでは一番単純な方法だけをお伝えしました。

R

標準

R ユーザーはわかってる人だと思うので、くわしく説明はしません。

矢印を書き込むのはこんな感じです。

x <- c(0.639708988, 0.195528789, 0.069168524, 0.388658179,
       0.491148683, 0.707420449, 0.290855716, 0.286003101,
       0.054308631, 0.585873008)

dat <- data.frame(
  time=1:10,
  x = x)

fit <-lm(x~time,dat)
pre <-predict(fit)

plot.ts(x,lwd=2,col="blue3")
arrows(1,pre[10],10,pre[10],lty=2, lwd=2, col="grey30")

f:id:abrahamcow:20150112100121p:plain

ggplot2

ggplot2 を使う場合、こんな感じです。

library(ggplot2)

p1 <- ggplot(dat,aes(x=time,y=x))+
  geom_line(colour="blue3") + 
  theme_bw()

library(grid)
p1 + geom_segment(x=1,xend=10,y=pre[1],yend=pre[10],
                  arrow=arrow(length = unit(0.5,"cm")),
                  colour="grey30", linetype=2)

f:id:abrahamcow:20150112100240p:plain

参考になりそうな文献

「統計のウソ」の観点から

『世の中には3種類の嘘がある。嘘、真っ赤な嘘、そして統計だ』(There are three kinds of lies: lies, damned lies, and statistics)(嘘、大嘘、そして統計 - Wikipedia)という言葉がありますが、世の「統計のウソ」のほとんどは「統計学」以前のデータのとり方や見せ方の問題から生まれます。

谷岡『「社会調査」のウソ』では、グラフにイラストを加えて上昇傾向に見せかける手法や、アンケートの質問紙で調査結果を左右する方法が具体的な事例を上げて説明されています。

情報デザインの観点から

意味のあるシグナルとノイズの比(S/N比)の大きいチャートを作成しよう(つまり余計な装飾ははぶこう)というモチベーションで、Tufte は「データ/インク比」という概念を冗談半分で(でも半分本気で)提案しました。

プログラマーが効果的な可視化を作成する(後編): 基本原則と学習法 - Qiita

参考になれば幸いです。

f:id:abrahamcow:20150112100706j:plain
棒グラフ - GATAG|フリーイラスト素材集