sapporor #3 (2014) r入門
DESCRIPTION
SappoRoR #3 (2014) @北海学園大学での「R入門」チュートリアルのスライドTRANSCRIPT
自己紹介• 氏名: 中西大輔 (@daihiko)
• 所属: 広島修道大学人文学部 (修道院とは無関係)
• 専門: 社会心理学
• 経歴: 北教大 (学部) →北大 (博士前期・後期)
• プチ学歴ロンダ組
2
統計ソフトの使用歴• 学部時代
• SPSS 6
• 大学院時代
• SAS 6 / 7
• 就職後
• SAS 8 / 9, R, HAD, (SPSS……一応持っている), JMP (何度か使った)
3
統計は苦手である• 基本的に文系脳
• 行列とかもう見たくもない
• 検定は僕にとってほとんどブラックボックスに近い
• 単なるいちユーザー
• チュートリアルには向いていない
4
なぜRか?
• フリーで (SPSSとかSASはバカ高い)
• 美しく (Excelのグラフは吐き気がする)
• CUI (GUIはクソ)
5
本音
• HADでいいじゃん。
6
Rを使うためにすること• SPSSを棄てる
• 物理的に
• Windowsを棄てる
• Windowsだとつい機能豊富なHADを使ってまうが、MacだとHADが遅いのでRを使う気持ちが増大する (p<.05, d=0.8)。
7
本音
• HADでいいじゃん。
8
Rの基本• RはRStudioとセットで使うと便利なので、最初からRとRStudio両方インストールする。
• データはExcelで入力しても良いが、csv形式にする (csvが分からない人はググれください)。
• データに日本語が入っている場合にはWindowsとMacとで対応が異なるが、日本語を使わなければよい (スーパーグローバル研究者)。
9
Rで読み込むデータ
• ふつうのcsv形式のデータ
• いわゆるコンマで区切られたデータ
• 1オブザベーション1行のデータ
• 欠損値には「NA」を入れる。
10
Rを使うときには
• Rをインストールする (当然)
• cran.r-project.org
• RStudioをインストールする (これも当然)
• www.rstudio.com
11
12
13
Script Data
FileConsole
14
RStudioの使い方
• プロジェクトを作る
• なぜプロジェクトを作った方がよいかはまた後で自分で調べておいてください (ヒントはWorking Directory)。とにかく、プロジェクトを作る。
15
プロジェクトを作る
• FileからNew Projectを選ぶ。
• 古いバージョンの場合
• Projectメニューから。
16
Working Directoryの指定• 要するに「ここにデータがあって、ここで作業するよ」というフォルダ (= directory) のこと。
• Session -> Set Working Directory -> Choose Directory
• コンソールウィンドウに「setwd(“~/Dropbox/nakanisi/2014/SappoRoR")」とか表示されたら成功。
17
ソースファイルの作成• ソースファイルとは、データのハンドリングや分析の命令を書くための手順書みたいなもの。
• File -> New File -> R Script
• とりあえず、名前を付けて保存しておく。
• File -> Save As…
• ここでは「test」という名前を付ける。18
データファイルの読み込み• データファイルはコンマ区切りのcsv形式
• 基本的に1オブザベーションにつき1行で入力
• Excelで入力した場合には
• ファイル -> 名前を付けて保存... -> フォーマットから「CSV (コンマ区切り) (.csv)」を選んで保存する。
19
サンプルデータの構造• datar.csv
• 1行目は変数名 (日本語もいけるが、文字コードの関係で面倒なので、英数字にしよう)。
• 欠損値は「NA」
• 54人分のデータ
20
データの読み込み• datar.csvをさきほど指定したWorking Directoryに移動またはコピーしよう。
• さきほど作成したソースファイルの一行目に以下の文字列を入力する。
• data<-read.csv (“datar.csv”, head=TRUE)
• (datar.csvの内容を読み込み、dataというデータフレームに入れなさいという意味)
21
こんなのが表示されたら成功 (54人分のデータで変数が10個あるという意味)
22
データのかくにん!• この「data」のあたりをダブルクリックしてみよう。
23
データのかくにん!
• 左上にExcel的にデータが表示される。これで、あんしん。
24
追加情報
• (ここにいらっしゃる方々はまさかSPSSなんて使っていないと思いますが) SPSSやExcelなどのデータファイルも読み込むことができる。foreignパッケージでググれ。
25
さあ、データをいじろう!
• まずはデータの全体像を知りたい。
• summary (data)
• dataデータフレームの全ての変数の最小値、第1四分位、中央値、平均値、第3四分位、最大値が表示される。
26
特定の変数の平均値だけ出す
• mean(data$age)
• 「data$age」とは、「dataというデータフレームのageという変数」という意味。
• なんでそんな面倒くさいことをしなきゃいけないのかと思われるかもしれないが、複数のデータフレームを扱うこともあるのだから、しかたがない。
27
男女別に年齢の平均値を出す• 汎用的な方法 (あらゆる関数で使える)
• by (data, data$sex, function(data) mean(data$age, na.rm=TRUE))
• na.rm=TRUE……欠損値は無視しろという命令。
• function(data)……おまじない。気にしない。
• 簡単な方法 (関数を選ぶ: 複数の値を返す変数は使えない)
• tapply(data$age, data$sex, mean, na.rm=TRUE)28
データの構造• データ (変数) にはいろいろな種類がある。よく使うのは、
• numeric: 数値
• integer: 整数型
• factor: 因子型 (カテゴリカルな変数)
29
データ構造を確認する• str (data)
• 全部int型になる。
• でも、sexとかcondはfactor型が正しい。
• (なんで正しい型じゃなければいけないのかと思うかもしれませんが、分散分析のときにfactor型じゃないものを独立変数にするとうまく動かないとかそういうことがあるので、とにかく問答無用でやっておく)
30
変数一覧を出力
• names (data)
データの型の変換• factor関数でカテゴリカル変数に
• data$id<-factor (data$id)
• data$cond1<-factor (data$cond1)
• data$cond2<-factor (data$cond2)
• data$sex<-factor (data$sex)
• 終わったら、「str (data)」で、かくにん!32
データの加工
• sex=1が男性、sex=2が女性。でも分かりにくい。どっちがどっちだったか分からなくなるかもしれない (ふつうはコード表作成するから忘れたりしない)。忘れる前に、以下のコードを実行しよう。
• data$sex<-factor(data$sex, labels=list("male", "female"))
33
かくにん!• 「data$sex」を実行して以下のようになっていたら成功。
34
もう一度年齢の平均値を• tapply(data$age, data$sex, mean, na.rm=TRUE)
35
条件も分かりやすくしておこう
• data$cond1<-factor (data$cond1, labels=list("inaction","action"))
• data$cond2<-factor (data$cond2, labels=list("without_confidence", "with_confidence"))
36
変数の加工• 複数の変数の合計
• data$q_all<-data$q1+data$q2+data$q3+data$q4+data$q5
• カテゴリーに分ける
• data$agecat<-ifelse (data$age>19, “older”, “younger”)
37
オブザベーションの抽出• cond1がactionのデータのみ抽出
• data2<-subset(data, data$cond1==“action")
• cond1がactionかつsexがmaleのデータのみ抽出
• data3<-subset(data, data$cond1=="action" & data$sex==“male")
• cond1がactionまたはsexがmaleのデータのみ抽出
• data4<-subset(data, data$cond1==“action" | data$sex=="male")
38
各条件に割り当てられた人数を知りたい
• このデータは、2×2の2要因配置の実験。
• 条件ごとのNが知りたい
• table (data$cond1, data$cond2)
39
ヒストグラム (簡単)• hist (data$q1)
40
ヒストグラム (発展)• par (mfrow=c(1,2))
• by (data, data$sex, function (data) hist (data$age))
41
ヒストグラム (発展)• 画面を縦に3分割する
• par (mfrow=c(1,3))
• hist (data$q1)
• hist (data$q2)
• hist (data$q3)
• 画面分割解除
• par(mfrow=c(1,1))
42
箱ひげ図• boxplot (data$q_all)
43
散布図• plot(data$q1, data$q2)
推測統計もちょっとだけ
• 相関
• t検定
• 回帰分析
• 分散分析
相関• cor.test(data$q1, data$q2)
総当たり相関 (準備)
• psychパッケージのcorr.test関数を使う (インターネット接続必要)。
• Tools -> Install Packages…
• Packagesの欄にpsychと入力しinstall
総当たり相関 (corr.test)
• library("psych")
• corrvar<-data.frame(data$q1, data$q2, data$q3, data$q4, data$q5)
• corr.test(corrvar)
t検定 (独立標本)• 性別によってq1への回答の平均値に差があるかどうか?
• var.test (data$q1~data$sex) 等分散性の検定
• t.test (data$q1~data$sex) 等分散でない (Welch)
• t.test (data$q1~data$sex, var.equal=T) 等分散
回帰分析
• lm関数を使う。~の左が従属変数、右が独立変数
• result<-lm (data$q1~data$age+data$q2)
• summary (result)
分散分析• aov関数
• result<-aov (data$q1~data$cond1*data$cond2)
• summary (result)
• ※ただし、anovakunなどを使うことを強く推奨。
本音
• HADでいいじゃん。
52
でも!• HADでは分位点回帰ができない (7/24/2014現在)。
• 任意の分位点における回帰係数を求められる、アツい回帰分析。
• でも、SASでもできるので、きっとHADでも近々できるようになるだろう。
53
Macユーザーなら• MacRを使えばかなりのことはGUIでできる。
• https://sites.google.com/site/casualmacr/
• まだWindowsを使っている方はこれを機会にMacに乗り換えるとよい。
• おしまい。
54