SapporoR#6
初心者セッション
清水裕士
関西学院大学
自己紹介
• 清水裕士
– 所属:関西学院大学
• ※「かんせいがくいん」 と読む
– お仕事:社会心理学
– 趣味:Stan・統計ソフトウェア開発
• Web
– Twitter:@simizu706
– ブログ:http://norimune.net
HiroshimaR#3
本セッションの目的
主催者(@uranoken)さんに
Rを使わせること
「本当の」初心者セッション
• Rを初めて使う人のため
– Rにはたくさんの可能性があるが・・・
• 最初から可能性はあえて狭めて解説
• パッケージは使わずに説明
– Rstudioを使う前提で説明
• Rを「統計ソフト」として使いたい人のため
– 即戦力としてのR
• 統計ソフトとしての機能以外はあえて説明しない
– それ以外の活用方法についてはLTをお楽しみに
Rとは
• いろんなことができるソフト
– 統計解析(一番得意)
• データの可視化(得意)
• データの分析(得意)
• データのハンドリング(だいぶ便利になった)
– プログラム開発環境(それほど得意ではない)
– 文書作成(機能が増えつつある)
• 今日は統計解析の機能のみに注目
– だって,統計解析したいんでしょ?
なぜRなのか
• Rでできない統計分析はないから
– 今や,多くの分野でRユーザーが増えている
– パッケージ(機能拡張)も8000を超える
– 査読で求められる分析がRでしかできないということも稀にある
• Rがマジョリティになってきたから
– S○SSやS○Sは下火
– 共同研究者がRを使ってるなんてこともよくあること
• 無償だから
– 研究環境が変わっても,分析環境は同じ状態を維持できる
– といっても,上の理由から仮に有償でも使うべき
Rの特徴
• S○SSなどのソフトとの違い
– ポチポチとマウスでボタンを押すタイプではなく,
– 命令を文章で書くタイプ
• STA○AやS○Sなどのソフトとの違い
– プロシージャで分析法が分かれてるのではなく,
– すべて関数で計算する
Rの特徴
• 短所
– スペルミスすると動かない
• 小文字と大文字の区別もある
– 日本語に対応してくれない場合がある
• 長所
– 一度書いたコードは使いまわせる
• ポチポチと押し続けなくていい
– 分析の手順が記録される
• 昔にやった分析を簡単に再現できる
Rstudio
• Rを便利に使えるようにするインターフェース
– Rはそのままだと若干使いづらい
– それを便利に使えるようにしてくれるソフト
• 無償,自由
– Rと同様,無償で使える
Rstudio
• 必須ではないが必須だと思ってもらっていい
– 素のRをあえて使うのは「ただ面倒なだけ」
– 便利なのですぐ使おう
• この会に参加しているみなさんはすでにイン
ストール済みのはずだが・・・
– まだの人は「Rstudio」で検索してインストールして
ください
– Rstudio前提で話をしていきます
Rstudioの便利機能
• 一部GUI搭載
– データの読み込みなどはGUIで可能
– パッケージのインストールも簡単
• コード補完機能
– コードを予測したり,引数リストを出してくれたり
• 超便利
• 関数や変数の管理も簡単
– 新しく作った変数やデータセットをリストにしてくれる
Rstudioの画面
コードを書くところ
結果・出力が出るところ
変数や関数の管理
履歴の確認ができる
ファイルの管理
パッケージの管理
図表の出力
Rstudioを起動しよう!
まずはプロジェクトを作る
• プロジェクトとは
– Rで分析するときの環境の単位
– SPSSでいうと,savファイルみたいなもの
• 研究(データ)ごとにプロジェクトを分ける
– 一つのプロジェクトにいろんなデータや分析コード
をいれておくと,管理がしづらい
– 最初は,「R練習用」プロジェクトとかを作っておい
てもいいかも
FileからNewProject
New Directory
Empty Project
Directoryの名前を決める
ディレクトリ
• フォルダのこと
– フォルダにプロジェクト用のファイルを保存
• パス
– フォルダの住所のこと
– WindowsならC:¥Users¥・・・ みたいなやつ
• パスに日本語が入らないフォルダを作る
– Rさんは外国製なので日本語よくわからない
– Windowsユーザーで,ユーザー名が日本語の場合
は,Cドライブ直下においておけば大丈夫
プロジェクトを作ったら・・・
• Rスクリプトを開こう
ででーん
スクリプトファイルを保存
• File→Save As…
– 名前をつけて保存
• 拡張子は.R
これで準備OK!
• 家でRを分析するときは・・・
– このプロセスをもう一度やってください
– プロジェクト作るの忘れると,あとで絶対に混乱す
るので,必ず自分でもう一度やること!
• 別のPCでも環境を作るときもプロジェクト作成
– あまりやらないから忘れがち
– まずは環境づくりから
Rを触ってみる
Rを使ってみる
• 計算をしてみよう
– エディタに計算式を書く
• マウスカーソルを5+8のすぐ右においておくこと
– 右の「Run」ボタンを押す
できたー!
四則演算
• 複数行を走らせる
Rstudioの基本的な使いかた
• エディタにコードを書く
– 書き方はいまから勉強します
– Tabキーを打つと,コードの補完機能を使える
• コードを「Run」で実行する
– Ctrl+EnterでもOK
• 複数行を一度に走らせたい場合は走らせたい行をドラッグ
してCtrl+Enter
– するとRにコードが送られて,Rが処理
– 結果をコンソールに出力
変数を使う
• 変数
– いろんな数字や文字列が入る箱
• 変数に数字を代入してみる
– 代入は”<-” を使う(不等号の”<“とマイナスの”-”)
• 代入した変数の中身を呼び出す
変数を使う
• 変数も四則演算
• 変数の計算結果を別の変数に格納
• 変数同士の計算ももちろん可能
関数を使う
• 平方根の関数sqrt()を使う
• 変数にももちろん使える
• 足し算の関数sum()も使ってみる
Rで統計解析(の予備知識)
Rって電卓なの?
• いやいや,統計ソフトです
– わかります,まだ統計ソフト感ないですよね
• というわけで,データセットを使いたい
– サンプルデータがRの中にあるので,それを使っ
て統計分析をしていきましょう
データセットといえば・・・
• こんな感じ?
S○SSでは・・・
• 一つのファイルにデータセットは1つ
– そのデータセットに変数を追加していくイメージ
• Rでは・・・
– データセットも「大きな変数」と考える
– このあたりのイメージが結構違うので注意
irisデータ
• あやめのデータ
– 3種類のあやめの花弁や萼片の長さ,幅につい
てのデータ
• irisで呼び出せる
– Rに最初から入ってる
– head(iris)と書いてみよう
head(iris)
• 最初の6個のデータだけを表示する関数
– このように,5つの変数で構成されている
– データの数は150
データセットを使うこなすには・・・
• Rの「変数」についての知識が必要
– 変数の型と構造
– 今回は型は説明を省く
• 変数の構造にもいくつか種類がある
– 変数は1つの数字だけが入るわけではない
• SPSSでは標本の大きさ分だけの数があつまって一つ
の変数を形成する
– Rにおける変数の構造の種類を説明
変数の構造の種類
• ベクトル: vector
– 数値が複数並んだもの
• 数値が一つだけでもベクトル扱い
• 行列: matrix
– ベクトルが多次元になったもの
• 行と列で要素を指定する
• リスト: list
– 複数の変数が集まったもの これも変数だけど
• データフレーム: data.frame
– 複数のベクトルが集まったもの
– Rにおけるデータセットとは,このデータフレームのこと
変数の構造をチェック
• is.vector()でベクトルかどうかがわかる
– ベクトルらしい
• is.matrix()で行列かどうかがわかる
– 行列じゃないらしい
ベクトル
• 一番よく使う
– 普通の統計ソフトにおける「変数」がこれ
• 複数の参加者が回答した値の集合
• 複数の数値をまとめてベクトルにしたい場合
– c()を使う
行列
• 行列演算をしたい場合に使うが・・・
– 単なる統計ソフトとして使うなら出番は少ない
• 複数の数値を行列にしたい場合
– matrix()を使う 最初にベクトルを入れて,
そのあと行,列の数を指
定する
リスト
• よく出てくる
– 複数のベクトルや行列などをまとめたもの
– 主に,分析結果がリスト形式で出力される
• 複数のベクトルや行列をリストにしたい場合
– list()を使う リスト”l”には,
ベクトル”v”と行列”m”
という構造が違う変数
が含まれている
データフレーム
• データセットとして使う
– 要素数が等しい複数のベクトルをまとめたもの
– 分析するデータはこの構造で扱う
• 複数の変数をデータフレームにしたい場合
– data.frame()を使う
ベクトルが縦に並ぶ
ここで隣の窓を見てみると
• これまで作った変数の一覧がすぐ確認できる
irisはデータフレーム
• 確認してみよう
• データフレーム=複数の変数(ベクトル)
– 変数を指定して取り出したい場合
– $マークを使う
Rstudioなら$と打ったら自動的
に中の変数がリスト表示される
$以外にも様々な指定方法がある
• 1列目を選択
• 2列目から4列目を選択
• 5列目だけ省く
subset()を使う方法
• 絶対に覚えたいRの関数その1
データフレーム 変数名
Rで統計分析
新しいデータフレームに移動
• 分析データセットは別に作る(オススメ)
– ローデータと分析用データは分けておく
– 処理でミスっても,最初からやり直せる
• datにirisを代入
要約統計量の計算
• 変数の全体的な要約をしたい
– summary()を使う
要約統計量の計算
• 変数の平均値が知りたい
– mean()を使う
• 変数の標準偏差が知りたい
– sd()を使う
注意!
• データに欠損値がある場合
– NAが返ってくる
– 「NA」はRの欠損値を意味する文字列
• 常に”na.rm=TRUE”を入れることをオススメ
複数の変数の平均値を計算したい
• apply()を使う
– 絶対に覚えたいRの関数その2
– ベクトルを引数にして,一つの数値を返す関数を
複数のベクトルに適用する関数
• mean(),sd(),sum()など,ベクトルを入れて,一つの値が
返ってくる関数で使える
データフレーム 関数名
2番めの引数は,行に適用したい場合
は1,列に適用したい場合は2を入力
する
群ごとの平均値を計算したい
• tapply()を使う
平均値を計算
したい変数
変数は1つだけ
群分けしたい
変数
関数名
図表を描きたい
• ヒストグラム
– hist()を使う
• 箱ひげ図
– boxplot()を使う
図表を描きたい
• 群分けして棒グラフ
– tapply()とbarplot()を使う
• 各変数を棒グラフ
– apply()とbarplot()を使う
図表を描きたい
• 散布図
– plot()を使う
• 散布図を群ごとに描く
– plot() を使う
もっと気の利いた図表を!
http://www.slideshare.net/nocchi_airport/ggplot2-kazutan-rver2
新しい変数を作る
• 任意の名前の変数に代入する
– データフレーム名のあとに変数名を付ける
関数を使って変数を作る
• 複数の変数の平均を,新しい変数にする
一部のサブジェクトだけ取り出す
• 条件文を使う方法
– []に条件文を書いて,フィルターにする
==は等号を意味する
一部のサブジェクトだけ取り出す
• 再びsubset()が登場
– 種がバージニカのデータを全部取り出したい
Speciesが“virginica”のデータの
みを取り出している
データセットの扱い
データセットの出力
• write.csv()を使う
– row.names=FALSEは必須ではないが,今回はこう
しておく
• あとで読み込み直すときに問題が生じない
データセットを保存するファイル名
拡張子は”.csv”じゃないと上手くいかない
ちゃんと出力されてる
• ででーん
フォルダから開いてみる
csvファイルとは
• comma-separated values
– カンマ区切りのテキストデータ
– 書式などの余分な情報がないので軽く,汎用的
に使えるファイル形式
• Rを使うときはcsvファイルを使いこなそう!
– データはcsvファイルで保存
– Rにcsvファイルを読みこませる
csvファイルの作成方法
• Windowsの場合(しか知らない)
– Excelにデータを入れる
• シートは1つだけ使う
– 名前をつけて保存
• ファイルの種類を選択
– 「csv(カンマ区切り)(*.csv)」 を選択
– 下のウィンドウが出てきたらOK
csv(カンマ区切り)を選択
データセットの読み込み
• read.csv()を使う
– 絶対に覚えたいRの関数その3
データセットの読み込み
• 欠損値をNAに変換するには・・・
– たとえば欠損値がピリオド”.”の場合
– こうすると,ピリオド”.”がNAに変換されてデータ
セットを読み込むができる
RstudioのGUIからも可能
• Tools→Import Dataset→From Text File
RstudioのGUIからも可能
• csvファイルを選ぶ
RstudioのGUIからも可能
RstudioのGUIからも可能
• ででーん
もっとRで統計分析
対応のない平均値の差の検定
• t.test()を使う
デフォルトでWelchの検定
対応のある平均値の差の検定
• 同様にt.test()を使う
相関係数
• cor()を使う
• 検定はcor.test()を使う
回帰分析
• lm()を使う
– モデルは
• 目的変数~説明変数1+説明変数2+・・・
– チルダ”~”で結ぶ
• 多くの線形モデルの関数で共通の書き方
• 分析結果をresultに格納
– resultはリスト型になっている
モデルを指定 データフレーム
分析結果の見方
• summary()を使う
summary()
• 要約するための関数
– データフレームを引数にすると要約統計量
• 分析関数の出力リストを引数にすると・・・
– 分析結果の要約が出力される
– 多くの分析用関数の出力は,summary()で結果を
知ることができる
出力の中身を確認する
• str()を使う
– リストの構造を知ることができる
回帰係数だけ取り出す
• coefficientsを取り出す
回帰直線を散布図に引く
• plot()とablin()を使う
散布図は引数の順番が説明変数
が最初,目的変数が後なので注意
クラスタ分析
• 階層クラスタ
– hclust()を使う
クラスタ分析
• 非階層クラスタ
– kmeans()を使う
クロス表の分析
• クロス表を作る
– table()を使う
独立性の検定
• χ2乗検定
– chisq.test()を使う
もっともっとRで統計分析
パッケージ
• Rの機能拡張
– ユーザーが作った関数のセットのこと
• 世界中のいろんな人がパッケージを作ってる
• 8000以上のパッケージが君を待っている!
• インターネットからダウンロードできる
– install.packages()を使う
RstudioのGUIからも
• PackagesタブのIstallをクリック!
RstudioのGUIからも
パッケージを使うには
• library()を使う
オススメのパッケージ
• ggplot2
– 綺麗なグラフを描くことができる
オススメのパッケージ
• dplyr
– データハンドリングを飛躍的に便利にする
– フィルタ,並び替え,グループ別処理などなど
• pforeach
– とても簡単に繰り返し処理を並列化してくれる
• rstan
– MCMC(*´Д`)ハァハァ
分析別パッケージ
• 心理統計
– psychパッケージ
• 一般化線形混合モデル
– lme4パッケージ
• ベイズ推定
– rstan
Rでわからないことがあったら
Webで調べよう
• 最近はググラビリティも高くなってきた
– 「R グラフ 描き方」とかで検索する
• R-Tipsも便利
– http://cse.naro.affrc.go.jp/takezawa/r-tips/r.html
• Rに関するブログ記事も豊富
– ぞうさん通信(http://blog.kz-md.net)
• R関連の記事をまとめてくれている
ぞうさん通信
人に聞いてみよう
• Twitterで次の呪文を唱えると答えが返ってくる
よくある質問
Rではどんな分析ができるの?
• 全部
• 膨大な量のパッケージ
• なによりrstanがある
• なかったら自分で書けばいい
Rでコピペばっかだと意味ない?
• そんなことはない
– 最初は誰でもコピペだった
– 英語の勉強も最初は音読・復唱するのと同じ
• 自分の分析に合わせてちょっとずついじる
– するとだんだんわかってくる
コードがあってるか不安
• 複数のソフトで確認しよう
– SP○Sを捨てる必要はない
• 触りたくないなら無理にとは言わない
– むしろ,同じ分析をいろんなソフトで実行してみて,同
じか,違ったら何が違ったのかを考える
– 分析で思考停止してはいけない
• 全部Rでやる,というのもよくない
– Rが使えるようになればいいだけであって,なんでも
かんでもRでやる必要はない
最後に
• Rを勧めるのは無償だからではない
– Rを使えないとこれから仕事できないから
– WordやExcelと同じようにRを覚える必要がある
• 分析がさき,ツールはあと
– S○SSじゃその分析できないから・・はただの怠慢
– 最適な分析があるなら,やればいい
– Rはあらゆる分析手法に開かれている
Enjoy!
清水裕士
関西学院大学
Web: http://norimune.net
Twitter:@simizu706

SapporoR#6 初心者セッションスライド