データ・サイエンティストは可視化の夢を見るか?

Does Data Scientist Dream of Visualization?

濃密なレッスン

今日和。
Johns Hopkins University の MOOCs “Executive Data Science” を受講しています。
第 3 コース “Managing Data Analysis” を受講中です。
“Exploratory Data Analysis” というレッスンを受けたのですが、けっこう濃密でたいへん勉強になりました。
まあ、コースも中盤なので、そういった意味ではほどよい難易度になってきていてイイ感じです。


例題として R で『ケース・スタディー』を行うんですが、此処で取り扱う米国各州のオゾン濃度データ(2014 版(毎時))が 2GB 超もある巨大データなんですね。それを読み込んでくるんですが、データの仕様が例題の解説時点より整形・変更されていたりして、そこについて修正を加えながら初歩的な手法で学習していくのが非常にためになりました。

f:id:renpoo:20161007121328p:plain

例題で立てた問いは

Do counties in the eastern United States have higher ozone levels than counties in the western United States?
米国東部の郡は西部の郡にくらべて高いオゾン濃度か?

といったモノです。
でも、上記箱ひげ図を見ると外れ値に相当しそうな地域が 3 カ所あることが分かりますね。
Puerto Rico, North Dakota, Hawaii です。

Summary を見てみると最大値が 0.213 ppm と米国環境基準(オゾン: 0.075)を上回っていることが分かります。

summary(ozone$Sample.Measurement)

Min. 1st Qu. Median Mean 3rd Qu. Max.

  • 0.00500 0.01900 0.03000 0.03026 0.04100 0.21300


でも四分位点コマンドで観察してみると 90% においても 0.05 ppm です。全体の平均とたいして差がありません。
つまり、North Dakota で記録されている最大値は外れ値である可能性が強いことが分かります。

quantile(ozone$Sample.Measurement, seq(0, 1, 0.1))

0% -0.005
10% 0.009
20% 0.016
30% 0.022
40% 0.026
50% 0.03
60% 0.034
70% 0.039
80% 0.043
90% 0.05
100% 0.213


では、ということで東西に分けて集計をしてみた結果のグラフが以下の通りです。

f:id:renpoo:20161007122610p:plain


このグラフが妥当かどうか検討したいと思います。

group_by(ozone, region) %>% summarize(mean = mean(Sample.Measurement, na.rm = TRUE), median = median(Sample.Measurement, na.rm = TRUE))

region mean median
east 0.02873899 0.029
west 0.03298274 0.034

でも、例外的な 3 地域が入ってますよね。そこでこれを取り除いたものと比較してみます。

filter(ozone, State.Name != "Puerto Rico" & State.Name != "North Dakota" & State.Name != "Hawaii") %>% group_by(region) %>% summarize(mean = mean(Sample.Measurement, na.rm = TRUE), median = median(Sample.Measurement, na.rm = TRUE))

region mean median
east 0.02880691 0.029
west 0.03310076 0.034

つまり、例外 3 州を取り除いてみても平均や中間値にさしたる変動はありません。
やはり、上記 3 州ははほんとうに例外だったようです。


成る程、東部より西部のほうがオゾン濃度が高いことが分かりました。
最初に立てた問いとは逆の結果ですが、具体的な問いを立てていたのできっちりと正誤を判定した上で修正された結論を得ることができました。
レッスンの内容はちゃんと step by step で要点を押さえているのですが、有料の MOOCs ですので、此処にいちいちの内容をすべて転記することは避けさせていただきます。ただ、それでは寂しいので、今回のレッスンの手順を箇条書きにしてまとめておきます。

  1. Formulate your question
  2. Read in your data
  3. Check the packaging
  4. Look at the top and the bottom of your data
  5. Check your "n"s
  6. Validate with at least one external data source
  7. Make a plot
  8. Try the easy solution first
  9. Follow up


でも、これはおもしろいですよ。
ほんとうに勉強になります。