SlideShare a Scribd company logo
1 of 54
Download to read offline
R入門
中西大輔 (広島修道大学人文学部)
nakanisi@shudo-u.ac.jp
@daihiko
SappoRo.R #3 (2014)
7/25/2014 北海学園大学
1
自己紹介
• 氏名: 中西大輔 (@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

More Related Content

Similar to SappoRoR #3 (2014) R入門

Pythonによるソーシャルデータ分析―わたしはこうやって修士号を取得しました―
Pythonによるソーシャルデータ分析―わたしはこうやって修士号を取得しました―Pythonによるソーシャルデータ分析―わたしはこうやって修士号を取得しました―
Pythonによるソーシャルデータ分析―わたしはこうやって修士号を取得しました―
Hisao Soyama
 
統計処理環境Rで学ぶ 言語研究のための統計入門
統計処理環境Rで学ぶ言語研究のための統計入門統計処理環境Rで学ぶ言語研究のための統計入門
統計処理環境Rで学ぶ 言語研究のための統計入門
corpusling
 
状態空間モデルの考え方・使い方 - TokyoR #38
状態空間モデルの考え方・使い方 - TokyoR #38状態空間モデルの考え方・使い方 - TokyoR #38
状態空間モデルの考え方・使い方 - TokyoR #38
horihorio
 

Similar to SappoRoR #3 (2014) R入門 (14)

Rブートキャンプ
RブートキャンプRブートキャンプ
Rブートキャンプ
 
順序データでもベイズモデリング
順序データでもベイズモデリング順序データでもベイズモデリング
順序データでもベイズモデリング
 
Pythonによるソーシャルデータ分析―わたしはこうやって修士号を取得しました―
Pythonによるソーシャルデータ分析―わたしはこうやって修士号を取得しました―Pythonによるソーシャルデータ分析―わたしはこうやって修士号を取得しました―
Pythonによるソーシャルデータ分析―わたしはこうやって修士号を取得しました―
 
SapporoR#6 初心者セッションスライド
SapporoR#6 初心者セッションスライドSapporoR#6 初心者セッションスライド
SapporoR#6 初心者セッションスライド
 
Yamadai.R チュートリアルセッション
Yamadai.R チュートリアルセッションYamadai.R チュートリアルセッション
Yamadai.R チュートリアルセッション
 
統計処理環境Rで学ぶ 言語研究のための統計入門
統計処理環境Rで学ぶ言語研究のための統計入門統計処理環境Rで学ぶ言語研究のための統計入門
統計処理環境Rで学ぶ 言語研究のための統計入門
 
みんな何使ってるの(Japan.R 2015 LT)
みんな何使ってるの(Japan.R 2015 LT)みんな何使ってるの(Japan.R 2015 LT)
みんな何使ってるの(Japan.R 2015 LT)
 
HiroshimaR6_Introduction
HiroshimaR6_IntroductionHiroshimaR6_Introduction
HiroshimaR6_Introduction
 
StanとRでベイズ統計モデリング読書会 導入編(1章~3章)
StanとRでベイズ統計モデリング読書会 導入編(1章~3章)StanとRでベイズ統計モデリング読書会 導入編(1章~3章)
StanとRでベイズ統計モデリング読書会 導入編(1章~3章)
 
分析のガイドライン
分析のガイドライン分析のガイドライン
分析のガイドライン
 
Kandai R 入門者講習
Kandai R 入門者講習Kandai R 入門者講習
Kandai R 入門者講習
 
HiroshimaR5_Intro
HiroshimaR5_IntroHiroshimaR5_Intro
HiroshimaR5_Intro
 
状態空間モデルの考え方・使い方 - TokyoR #38
状態空間モデルの考え方・使い方 - TokyoR #38状態空間モデルの考え方・使い方 - TokyoR #38
状態空間モデルの考え方・使い方 - TokyoR #38
 
Rでダイエット
RでダイエットRでダイエット
Rでダイエット
 

SappoRoR #3 (2014) R入門