第三回Japan.R入門セッション『はじめての「R」』補足 #rstatsj #JapanR

『はじめての「R」』やってきました!

第三回Japan.Rで入門セッションを担当させていただきました。

Japan.R当日の様子は@bob3bob3さんがまとめてくれています。

で,入門セッションはというと,


こんな幕開けでしたが,最終的には30〜40人ぐらいのかたに来ていただいて無難に終えることができ,胸をなで下ろして午後の部を楽しんでいたのですが。

おや,slideshareにアップロードしたスライドに異変が…。



見たことのない数字が!

怖い!

そして現時点で約13000views,ついにはこんなメールまで届いてしまいました。
f:id:phosphor_m:20121203180213p:plain

こんなにたくさんの人に見ていただけるなんて予想だにしておらず,作者冥利に尽きるのですが,全く実感が湧かないというのが正直なところです。Rの入門資料はいまやウェブにごろごろ転がっている中で,私のものが特別優れているということはないので,ここ最近でどれほどデータ解析需要が盛り上がったのかということがうかがえますね。

「つまずかないR入門」

以下駄文です。本題のスライド補足はもう少し下にありますので,お急ぎの方は飛ばしてください。

さて,内容についてなのですが,中にも書いているとおり,Rを使う上で重要な部分をかなり省略しています。なぜならば,「つまずかないR入門」を方針としたからです。これは,一度成功体験をしてもらい,「Rって思ってたより難しくないな」と感じてもらうことが大事だという考えに基づいています。

いままでにRの入門講習を何度もやっているのですが,終わったあとの感想で必ず出てくるのは,「やっぱりRって難しいけどがんばります!」というものです。これは,難しい部分をどんなに噛み砕いて説明しても,必ず出てくる感想でした。

そこで考えたのが,「そもそも入門講習のやり方が根本的に間違っているのではないか」ということでした。これまでは,Rの使う上で必要になる必要最小限の内容をできるだけ分かりやすく伝えよう,と考えてやってきました。しかし,にもかかわらず「難しい」という感想が出るということは,必要最小限であっても,そもそも1時間や2時間でそれら全てを教えることは不可能なのではないか,と。

なので,この資料を読んで,いざRを使ってみよう,と思っても,十中八九つまずくと思います。そもそも必要最小限にも達していない内容なのです。しかし,入門講習で最初の一歩からつまずくのと,一度成功体験をしてからつまずくのとでは,モチベーションの維持に大きく違いがあると考えています。入門講習でいきなりつまずいてしまえば,「Rは難しい」というイメージが定着してしまいますし,帰ってから自分でやりなおそうという気はなかなか起きないでしょう。

さて,講習会後の感想を聞いたり読んだりしたかぎりでは,この試みはなかなか成功しているのではないかと思います。しかし,不十分な内容の講習会を行って投げっぱなしでは,ちょっと無責任かな,という気もしてきました。また,講習会中に口頭で入れた補足は,ウェブでスライドだけ読んでいただいた方には伝わらないというのも気になります。ということで,スライドに足りない内容をここで少し補足しようと思います。

スライドの補足

データの読み込み

概要はこちらの資料で。

関数を使ったデータの読み込み

今回はRStudioのGUIを使ってCSVを読み込みましたが,当然Rにはデータを読み込むための関数が用意されています。CSVを読み込むread.csv,タブ区切りテキストを読み込むreade.delim,より柔軟にテキストファイルを読み込めるreade.tableが代表的です。
R-Source
パッケージを使えばExcelのファイルを直接読み込むこともできますが,メリットはほとんどありません。csvに変換して読み込むか,下のスライドで紹介されているクリップボードからの読み込みを使いましょう(105ページ以降です)*1。特に後者はとても便利な機能です。

作業ディレクトリ

データを読み込む前に,作業ディレクトリ*2を設定しておきましょう。作業ディレクトリを設定すると,そのディレクトリにあるファイルを読み書きすることが出来るようになります。作業ディレクトリの設定には,setwd関数を使うか,GUIで設定します。
R-Source
RStudioでは,メニューバーからSession>Set Working Directory>Choose Directoryで設定できます。

パス

パスについては,上のスライドを見てください。setwdで作業ディレクトリを設定する場合や,作業ディレクトリの中にないファイルを読み書きするためには,パスを使って場所を指定する必要があります。スライドにない注意点として,Windowsでは円マーク(¥)がバックスラッシュの代わりになります(というか同一のものになっています)。Macではoption+¥でバックスラッシュを入力できます。どちらにしろややこしいので,パスの区切りにはスラッシュを使うことをおすすめします。

文字コード

文字コードについても,上のスライドを見てください。基本的には,文字コードの変換はテキストエディタで行うことをおすすめします。テキストエディタでは文字コードの変換でエラーになることはほとんどありませんが(特定の文字が化けることはありますがその程度です),Rでは間違えるとエラーになってしまい,混乱してしまいがちです。
やむをえずread.csv等で文字コードを指定して読み込む場合は,fileEncodingオプションを使います(foreignパッケージのread.spssのみreencodeというオプションですが,使い方は同じです)。注意点として,Shift_JISのファイルを読み込むときは,Shift_JISではなくCP932を指定します*3。実例を書くと,read.csv("サンプル.csv", fileEncoding="CP932")となります。

尺度の水準

統計学における変数には,尺度の水準というものがあります。簡単な例を挙げると,あるクラスの身体計測の結果データがあったとします。そこには,性別,身長,体重といった変数があります。ここで,身長や体重のクラス平均を求めることはできます。しかし,性別のクラス平均というものを求めることはできるでしょうか?当然できませんね。性別のような変数をカテゴリ変数(または質的変数)と呼びます。このような考え方を厳密に進めた結果として,統計学では変数を下のリンク先にあるような4つのタイプに分類し,それを尺度の水準と定義しました。
データの水準
この尺度の水準は,Rを使う上でも密接に関わってきます。R上では,名義尺度をfactorクラス,順序尺度をorderedクラス,間隔尺度と比例尺度をnumericクラスで表現しており,厳密な使い分けが必要になっています。クラスについての説明は,続きを読んでください。

クラス

今回の講習会ではRにおけるクラスの概念を完全に省略しました。しかしこれを避けていては絶対にRを使えるようにはなりません。簡単な説明は下の資料の6ページに,もう少し詳しい説明は7ページ以降にあります。エラー頻出地帯でもあるので,気合いを入れて学習してください。

あとがき

ここまでで,やっと必要最小限にたどり着いたといえるでしょう。ここからは,自分がどのようにRを使うかを考え,自分にとって必要なものを学んでいく,という段階になります。自分なりの使い方を身につけ,楽しいRライフを送ってください!

*1:これは@sakaueさんが去年のJapan.Rで行った入門セッションの資料で,非常に分かりやすく良質ですので,ファイル読み込みだけでなくぜひ全部読んでください。

*2:「ディレクトリ」は,「フォルダ」とだいたい同じ意味です。

*3:正確にいうと,Shift_JISということになっているファイルや文字コード設定は,実際には多くの場合CP932という似て非なる文字コードが使われています。テキストエディタなどはそのあたりをあいまいに扱っていますが,R等のプログラミング言語では扱いを誤るとエラーの原因になります。