3/14に開催された農業気象学会の若手の会でRの勉強会が開催されるという話を大学の先生から伝え聞いたので、話を聞きに大阪府立大まで行ってきました。
Rは何というか裏から穴掘って内部へ入ってる感じがあるので入門というとちょっと今更感がなきにしもあらずですが、自分が入門するというより他の人を入門させるにはどうしたらいいのかという点が知りたくて参加しました。
資料などについて
現時点(3/14)では若手の会のトップページに資料やスクリプトへのリンクがあります。トップなのでそのうち変わるかもしれません。
三中信宏さんの資料は
平田竜一さんの資料は
にありますがいつまであるのかはよく分かりません。
以下、OSのメモです。
「Rが拓く新しい統計的データ解析への道」(三中信宏氏 (農業環境技術研究所/東京大学) )
データを手に入れたら
統計=計算ではない。
まずはデータの内容を見る必要がある。
データがあるなら、データをまず見なければならない。
→視覚化の必要性
グラフを作る→データの特徴を見抜く→どう解析するか?
Rの起動
Rguiを起動
Rコマンダーの起動
> library(Rcmdr)
テストデータのロード
データ>パッケージ内のデータ>アタッチされたパッケージからデータセットを読み込む>irisを指定
(irisデータセットの説明)
「データセットを表示」で中身を表示
箱ひげ図の作成
グラフ>箱ひげ図>Petal.Length
層別でSpeciesを選択
「OK」で描画
(箱ひげ図の説明)
ドットチャートの作成
(Species毎のヒストグラム作成)
箱ひげ図やドットチャートで視覚化することでデータの分布の中央などが見えてくる。
多変量で見てみる(散布図行列)
グラフ>散布図行列>
変数を全部選択
散布図行列を描く事で変量間の関係が見えてくる。
条件付き散布図
説明変数:Petal.Length
目的変数:Petal.Width
条件:Species
グループ:Species
種別に散布図を描画する。
3Dグラフの作成(3次元散布図)
グラフ>3次元散布図
「線形最小自乗」は無い方が見やすいのでとりあえずチェックしない。
なぜRコマンダー?
まずデータの中身を見るためのツールとして使いやすい。
RStudioの使い方
RStudioの概要
Rでプログラミングをする際の補助ツール
説明
左ウィンドウはRが起動しているので直接入力もできる。
質疑応答
- Q. たくさんのデータについて定型の作業を繰り返すのはR Commanderでは面倒そうだが…
- A. R Commanderを使わずプログラムを書けば効率的に処理できる。
- Q2. bashなどシェルからの呼び出しも可能ということか。
- A2. 可能
所感
グラフが出てきたりする度に周囲の人が「おおー」と言っているのが印象的でした。Excel批判も効果的にキマっていたと思います。
自分が他人に説明しようとすると割と細かいところから積み上げるように順々にやってしまいがちなんですが、それよりも最初にプロットとか視覚的なものを見せて興味を引きつけるのは大切だなと感じました。
思い出してみれば自分も最初はRコマンダーばかり使っていました。
RStudioは出力や変数の状態が確認しやすくて良いと思いました。ESSから乗り換えることはないと思いますが、他人への説明用に使い方を一通り把握しておきたいところです。
「Rを用いた気象データ解析の基礎 〜Excelより便利でC言語より気軽な大量データ処理のためのフリーソフトウェアの紹介〜 (平田竜一氏 (国立環境研究所))
イントロ
RはCとExcelの中間くらいの感じ。
今日は農業気象学の解析に使ってみる例を紹介したい。
内容:メリット/デメリットの紹介、複雑な解析の例、処理とグラフ作成の実演。
Excelについて
プログラミング言語(Cなど)について
- デメリット
- 敷居の高さ
- グラフ作成が手軽で無い
- 大半の関数は自作しなければいけない
- デバッグ
- メリット
- 柔軟性が高い
- 計測機器の制御に使える
- 複雑な処理ができる、早い
- 超巨大データも扱える
- 本、Webにリソース豊富
- SEになるなら有利
Rについて
- メリット
- データの処理、計算、グラフ作成まで全てできる
- 巨大ファイルや複数ファイルが扱える
- 処理の自動化
- きれいなグラフ
- 関数が充実している
- デバッグはCよりマシ
- 本、Webのリソースが豊富
- クロスプラットフォーム
- シェルと親和性が高い
- フリー
- ベクトル化した計算なら早い
- デメリット
Rでこんなことができる
1年間のフラックスデータから昼間のデータだけを抜き出して毎日のグラフを描ける。
複雑なモデル式への当てはめが容易である。
演習(R Consoleを使って)
- 四則演算
- 関数(sin)と定数(pi)
- 制御構文
変数の使い方
- 代入操作
a <- c(1, 2, 3) ## パックマン? a b <- c(4, 5, 6) a + b c <- a + b
関数の使い方
mean(a) sum(a)
グラフの描き方
plot(a, b)
plot()はグラフを描く関数。aの部分がx軸、bの部分がy軸。
d <- seq(0, 2*pi, length = 20) d plot(d, sin(d)) plot(d, sin(d), type="l") ## 線グラフも指定できる
seq()は等差級数ベクトルを作成する関数。
解析の実例
生データから簡単な計算をして1週間ごとのグラフを描く。
5分値データを30分データに直してグラフを描く。
所感
昔大学とかで初心者向けに勉強会を開いたときのことを思い出すような内容でした。
「Rの使い方の初歩」を教えようとするとどうしても四則演算と代入と関数の使い方程度で終わってしまうし、「Rでできるすごいこと」を教えようとすると内容を説明しきれないスクリプトを動かすことになるし、やっぱりこの辺のバランスの取り方は難しいなという印象です。
ただ、周りの人の興味を惹きつけている様子はうかがえました。「こんなに簡単に動かせるんだ」と「こんなに複雑なこともできるんだ」をうまくアピールした結果であるように思います。
ただ、今後、たとえば「第2回」と言うことになった場合、話をどのように進めるのだろうか、ということは気になります。たとえば、関数定義の方法はどの段階で説明するのか、スコープや環境のような理解しにくい概念をどのように解説するのか、Rは全部関数だし、というかむしろLISPだし、とりあえず悟りをひらくまではLISPを勉強しなければならない、等々。本当に興味を持った人は勝手に自分で勉強していくのでしょうが、やっぱりEx○elを駆逐したいなぁと思わずにはいられない訳で…
また、「たまにバグもある」とか「繰り返し処理が遅い」とかは自分もたまに言ってしまうんですが、何も知らない人は割とその辺不安に思ってしまうようなので黙ってた方がいいのかなーとも思いました。バグはあるとしてもExcelより遙かにまし、繰り返し処理は遅いと言ってもVBAより遙かにまし、等々の補足が有効かなと思います。