Tutorial of ggplot2 by Hadley Wickham at ISM

大学共同利用機関法人 情報・システム研究機構 統計数理研究所(The Institute of Statistical Mathematics)で開催された R のグラフィックパッケージggplot2 の作者本人によるチュートリアルに参加。

Speaker

Program

25 November (Thu) 10:30 – 17:00

10:30-12:00 Tutorial of ggplot2 (1) by Hadley Wickham
12:00-13:00 Lunch
13:00-14:00 Tutorial of ggplot2 (2) by Hadley Wickham
14:10-15:10 Prospects and Challenges for CRAN – with a glance on 64-bit Windows binaries by Uwe Ligges
15:10-15:30 Break
15:30-16:30 Tutorial of ggplot2 (3) by Hadley Wickham
16:30-17:00 Discussion

Abstract

This tutorial is mainly based on my book: “ggplot2: Elegant Graphics for Data Analysis” Springer, 2009.

(1) Introduction to ggplot2: How to create scatterplots, and how to add extra variables with aesthetics (like colour, shape and size) or
facetting. Data: fuel economy of US cars.
(2) Graphics for large data: Histograms and bar charts for displaying distributional summaries. Boxplots. Other techniques for overcoming overplotting when drawing catterplots of large datasets. Data: prices and characteristics of 50,000 diamonds.
(3) Data manipulation and transformation: Group-wise summaries and transformations to add extra information to your plots. How to visualise time series. Data: trends in US baby names over the last 120 years.
——————————
寸評

ggplot2 でプロットする際にベースとなる ggplot 関数は使わず、 R デフォルトの plot  関数に挙動をあわせた、ggplot 関数へのラッパーである qplot(quick plot の略) 関数を利用。

最後のQAのなかで、標準のプロット関数とことなり、 ggplot2 は powerful で complex なグラフが描けるといっていたが、そのようなグラフ描画必要な “grammar of graphics” の話は極力せず、ggplot2 パッケージを利用して標準的な描画ができることが目標に設定されていた(と思う)。

各セクションは、データをナイーブにプロットし
– グラフの何が問題なのか?
– どうすればグラフを改善できるのか?
というのを、ブレインストームしつつ、少しずつ改善しながら visualize や ggplot2 を学んでいく。
(日本人は誰も周りのひととブレインストームしてなかったけど、、、質問もでなかったし、、、)

姑息ながらも10日くらい前から ggplot2 を勉強した自分にはぴったりの難易度だった。

スライドや例は非常によく考えられており、何回ものワークショップを経て、現在の姿になったものと思われる。

カッコいい Hadley Wickham 氏も、首から下はウエストラインが気になるメタボおやじだということも分かった。

また、ニュージーランド英語の訛りは強くなかったので、リスニングがだめなオイラでもある程度は聞き取れた。

——————————

以下、落書き。

Introduction

データ分析は

  • Visualise
  • Transform
  • Model

の3つがある。このうち今回のチュートリアルでは Visualize とTransform を扱い、特に、Visualise を重点的に扱う。
Plotting basics

  • scatter plot
  • aesthetics
  • facetting

1880 年からのアメリカの新生児の名前データをもとに ggplot の hello world を学ぶ。
TIP:1880 年は Top 100 が全体の95%だったのが現在は 60% でしかない。

最近は英単語を逆方向に綴った次の名前が流行っている。
Nevaeh(heaven の逆)

あたらしい言語学習の難易度

自然言語
– 文法複雑
– 数万の語彙は必要

プログラミング言語
-文法単純
-語彙はRだとたかだか数千しかない

便利なコマンド群

str

プログラミング(デバッグ)目的。string ではなく structure のこと.
“rarely used, but useful” by Hadley
Compactly display the internal structure of an R object, a diagnostic function and an alternative to summary

summary

統計目的。a generic function used to produce result summaries of the results of various model fitting functions.

?

help

head

Returns the first or last parts of a vector, matrix, table, data frame or function.

Spelling
ggplot2 は英米両方のスペルに対応
例)
– color/colour
– summarize/summarise

作者の Hadley Wickham さんは Common Wealth なニュージーランド出身であることをうかがわせる

qplot(quick plot) の使い方

データフレームは explicitly specify すること。

faceting

large data sets

diamonds データセットを利用した大きなデータセット(といっても5万程度)の扱い方。

bar chart と histogram のすみわけ

  • categorical:bar chart
  • continuous:histogram

resolution {ggplot2} function

Compute the “resolution” of a data vector, ie. what is the smallest non-zero

プロットエリアを制限
プロットエリアを限定(特定エリアにズームイン)するには次の2つの方法がある

両者の違いは、エリア内に収まる点のみをプロット対象とするかしないか。

例)次の3つのプロットで spike の処理の違いに着目

qplot(table, data = diamonds, binwidth = 0.1)
qplot(table, data = diamonds, binwidth = 0.1) + xlim(50, 70) + ylim(0, 50)
qplot(table, data = diamonds, binwidth = 0.1) + coord_cartesian(xlim=c(50, 70), ylim=c(0, 50))

facet_wrap のパネル間の比較

facet_wrap を利用すると、左上のパネルと右下のパネルの比較が難しい。facet_wrap で各パネル間で比較しやすくするにはdensity plot を使うとよい。

qplot(price, data = diamonds, binwidth = 500) + facet_wrap(~ cut)
qplot(price, ..density.., data = diamonds, binwidth = 500, geom = "freqpoly", colour = cut)

read.csv の圧縮ファイル読み込み

read.csv では圧縮ファイルを引数に指定して読み込むことが可能。
– read.table {utils}
– connections {base}
をみると、圧縮形式は

  • gzip
  • bzip2
  • xz(as of R 2.10.0)

に対応している、と書かれている。

overplotting の回避方法

同じ位置にプロットが重なっていることを視覚化するには、次のものを利用。

  • transparency で
  • facet でプロットを分割
  • jitter で位置をずらす

プロットオブジェクトの「+」記号演算の意味

必ずしも同じクラスのオブジェクトをプラスしているわけではない。
裏でマジックが働いている

Data manipulation

ggplot に渡すデータフレームの作成方法のはなし。

split – apply – combine のフローによるデータ処理を実現するには次の2通りがある。

  • 標準 R で split, split, summarize, transform などを使ってデータ処理
  • Hadley Wickham が開発した ddply{pylr} を使って apply 系の一括データ処理

pylr パッケージは未体験だったし、僕自身、 R のデータフレームの操作になれていないこともあり、このセクションが一番勉強になった。

Where to next?

R/ggplot2、ビジュアライズをどうやって学んでいくか。

2点ほど面白い話しがあった

(1)ggplot2 著者の Hadley Wickham は標準Rではデータを扱いにくいから pylr パッケージを開発した。
対極的に、Phil Spector は標準Rでゴリゴリとデータ操作する方法を書籍 “Data Manipulation with R” にまとめている。(自分とは “opposite style” )

(2)ggplot2 本は日本語に翻訳中。

Advertisements
Tagged with: , , , , ,
Posted in R, report

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Archives
  • RT @__apf__: How to write a research paper: a guide for software engineers & practitioners. docs.google.com/presentation/d… /cc @inwyrd 6 months ago
  • RT @HayatoChiba: 昔、自然と対話しながら数学に打ち込んだら何かを悟れるのではと思いたち、専門書1つだけ持ってパワースポットで名高い奈良の山奥に1週間籠ったことがある。しかし泊まった民宿にドカベンが全巻揃っていたため、水島新司と対話しただけで1週間過ぎた。 それ… 6 months ago
  • RT @googlecloud: Ever wonder what underwater fiber optic internet cables look like? Look no further than this deep dive w/ @NatAndLo: https… 6 months ago
  • @ijin UTC+01:00 な時間帯で生活しています、、、 1 year ago
  • RT @mattcutts: Google's world-class Site Reliability Engineering team wrote a new book: amazon.com/Site-Reliabili… It's about managing produc… 1 year ago
%d bloggers like this: