Introduction to "R" for Language Researchers

107
2011-12-17 「対照言語学若手の会」シンポジウム@麗澤大学 40分間 上 辰 SAKAUE Akkuş Tatsuya 1 Tuesday, December 6, 11

Transcript of Introduction to "R" for Language Researchers

Page 1: Introduction to "R" for Language Researchers

2011-12-17 「対照言語学若手の会」シンポジウム@麗澤大学

40分間

阪 上 辰 也SAKAUE Akku! Tatsuya

1Tuesday, December 6, 11

Page 2: Introduction to "R" for Language Researchers

Agenda1. R 概論2. 関数と変数が命3. 外部データの読込4. あっという間に作図5. R で検定

7Tuesday, December 6, 11

Page 3: Introduction to "R" for Language Researchers

Agenda1. R 概論2. 関数と変数が命3. 外部データの読込4. あっという間に作図5. R で検定

8Tuesday, December 6, 11

Page 4: Introduction to "R" for Language Researchers

 とは何か• 統計処理を目的とするプログラミング言語• 作者:Ross Ihaka & Robert Gentleman (R & R)

• Ross Ihaka and Robert Gentleman. R: A language for data analysis and graphics. Journal of Computational and Graphical Statistics, 5(3):299-314, 1996.

• http://biostat.mc.vanderbilt.edu/twiki/pub/Main/Je!reyHorner/JCGSR.pdf

• 無償+オープンソースのソフトウェア

9Tuesday, December 6, 11

Page 5: Introduction to "R" for Language Researchers

要するに統計ソフト

10Tuesday, December 6, 11

Page 6: Introduction to "R" for Language Researchers

  の何が良いのか

•無償(IBM SPSS Statistics は約10万円で保守なし...)

•統計処理の種類が豊富•グラフィックスが美しい

11Tuesday, December 6, 11

Page 7: Introduction to "R" for Language Researchers

Excel や SPSS は...

•高価(気軽に試せない)•処理が信頼できず

• Excel のひどい話(青木先生@群馬大)

•グラフィックスが美しくない12Tuesday, December 6, 11

Page 8: Introduction to "R" for Language Researchers

  の基本操作-Install / Update / Uninstall-

14Tuesday, December 6, 11

Page 9: Introduction to "R" for Language Researchers

1. http://www.r-project.org/ にアクセス2. “download R” をクリック3. JAPAN の中から、どれか1つを選ぶ4. 使っている OS のリンクをクリック

  のインストール

15Tuesday, December 6, 11

Page 10: Introduction to "R" for Language Researchers

  のインストール

• Windows: : http://cran.md.tsukuba.ac.jp/bin/windows/base/

•「Download R 2.14.0 for Windows」をクリック

• Mac OS X: http://cran.md.tsukuba.ac.jp/bin/macosx/

•「R-2.14.0.pkg (latest version)」をクリック

16Tuesday, December 6, 11

Page 11: Introduction to "R" for Language Researchers

17Tuesday, December 6, 11

Page 12: Introduction to "R" for Language Researchers

18Tuesday, December 6, 11

Page 13: Introduction to "R" for Language Researchers

19Tuesday, December 6, 11

Page 14: Introduction to "R" for Language Researchers

20Tuesday, December 6, 11

Page 15: Introduction to "R" for Language Researchers

21Tuesday, December 6, 11

Page 16: Introduction to "R" for Language Researchers

22Tuesday, December 6, 11

Page 17: Introduction to "R" for Language Researchers

  のアップデート1. http://www.r-project.org/ にアクセス2. 自分が使っているバージョンより新しいものが出ているか確認

3. 新規にインストール用ファイルをダウンロードの上、インストール

23Tuesday, December 6, 11

Page 18: Introduction to "R" for Language Researchers

  のアップデート• 注意: 重大なセキュリティ上の問題が  ない限り,むやみに更新しない

• パッケージ(付加機能)の動作不良回避

• 補足:Windows 版は新旧の共生可• 何がどう共有されているか不明

24Tuesday, December 6, 11

Page 19: Introduction to "R" for Language Researchers

 のアンインストール• Windows

• [ Windows XP] コンパネ→プログラムの追加と削除• [ Windows 7 ] コンパネ→プログラムのアンインストール

• Mac OS X• /Applications にある    アイコンと /Library の中の

Frameworks にある R. framework を削除(CleanApp 可)

25Tuesday, December 6, 11

Page 20: Introduction to "R" for Language Researchers

  の起動• Windows

• START → Program → R → R 2.14.0

• Mac OS X• /Applications 内の R アイコンをクリック

R の「コンソール」表示を確認

26Tuesday, December 6, 11

Page 21: Introduction to "R" for Language Researchers

  の終了

• Windows も Mac OS X も1.「q()」と入力2.今は作業スペースの保存をしない3.ウィンドウが消えて、R 終了

27Tuesday, December 6, 11

Page 22: Introduction to "R" for Language Researchers

  で困ったら...

• まずは help(sth) を実行• seekR (http://seekr.jp/)

• R SEEK (http://www.rseek.org/)

• RjpWiki (http://www.okada.jp.org/RWiki/)

• R-Tips (http://cse.naro.a"rc.go.jp/takezawa/r-tips/r.html)

• R による統計処理 (http://aoki2.si.gunma-u.ac.jp/R/)

28Tuesday, December 6, 11

Page 23: Introduction to "R" for Language Researchers

  概論まとめ

•要するに統計ソフト•無償+何でも統計+美しい作図•困ったら help(sth) !!

29Tuesday, December 6, 11

Page 24: Introduction to "R" for Language Researchers

Agenda1. R 概論2. 関数と変数が命3. 外部データの読込4. あっという間に作図5. R で検定

31Tuesday, December 6, 11

Page 25: Introduction to "R" for Language Researchers

Agenda1. R 概論2. 関数と変数が命3. 外部データの読込4. あっという間に作図5. R で検定

32Tuesday, December 6, 11

Page 26: Introduction to "R" for Language Researchers

前置きが長くなりましたがどんどん実行しましょう

33Tuesday, December 6, 11

Page 27: Introduction to "R" for Language Researchers

まずは四則演算•式を入力し [Enter] を押す

• > 3+5 [Enter]

• > 10-3 [Enter]

• > 2*3 [Enter]

• > 100/20 [Enter]

• > (12 + 34 -56) * 78 / 90 [Enter]

34Tuesday, December 6, 11

Page 28: Introduction to "R" for Language Researchers

 といえば

関数が命

35Tuesday, December 6, 11

Page 29: Introduction to "R" for Language Researchers

関数とは指定した値に対して何らかの処理をして結果を返すもの

36Tuesday, December 6, 11

Page 30: Introduction to "R" for Language Researchers

何言ってんの?

http://www.flickr.com/photos/fmgbain/4382010455/“I don't know !” by fmgbain

37Tuesday, December 6, 11

Page 31: Introduction to "R" for Language Researchers

なにはともあれ実行してみましょう

38Tuesday, December 6, 11

Page 32: Introduction to "R" for Language Researchers

sqrt():平方根

•> sqrt(2)

•> sqrt(144)

•> sqrt(104976)

39Tuesday, December 6, 11

Page 33: Introduction to "R" for Language Researchers

「関数(値)」が命• には多数の関数がある•q() や help(sth) も関数•必要な関数をしつこく実行

40Tuesday, December 6, 11

Page 34: Introduction to "R" for Language Researchers

  といえば

変数も命

41Tuesday, December 6, 11

Page 35: Introduction to "R" for Language Researchers

変数とは1つ以上の値をまとめていれておく「箱」のこと

42Tuesday, December 6, 11

Page 36: Introduction to "R" for Language Researchers

統計処理などを行うには複数の値をまとめて扱う

ことが必要でそれを使い回すために

変数を使う43Tuesday, December 6, 11

Page 37: Introduction to "R" for Language Researchers

ちなみに変数に数値を入れることを

「代入」といいます44Tuesday, December 6, 11

Page 38: Introduction to "R" for Language Researchers

また何言ってんの?

http://www.flickr.com/photos/fmgbain/4382010455/“I don't know !” by fmgbain

45Tuesday, December 6, 11

Page 39: Introduction to "R" for Language Researchers

なにはともあれ実行してみましょう

46Tuesday, December 6, 11

Page 40: Introduction to "R" for Language Researchers

変数の名前は “hako”

•> hako <- c(1,2,3,4,5)•> hako

•c() 関数:concatenate/combine

•値を1つにまとめる関数47Tuesday, December 6, 11

Page 41: Introduction to "R" for Language Researchers

c()関数の “<-” は何?

hako <- c(1,2,3,4,5) の “<-” は左向きの矢印(←)

を表現

48Tuesday, December 6, 11

Page 42: Introduction to "R" for Language Researchers

コンソールで「+」が出たら...

• 入力中に誤って[Enter] を押すと,待機状態を示す「+」が出る

• [STOP] ボタンでキャンセル• [Esc] キーでキャンセル

49Tuesday, December 6, 11

Page 43: Introduction to "R" for Language Researchers

履歴機能と補完機能

•履歴:上下の矢印キー•補完:Tabキー

50Tuesday, December 6, 11

Page 44: Introduction to "R" for Language Researchers

現在、hako という名前の「変数」の中に

1から5までの5つの数字がまとめて入っている状態

51Tuesday, December 6, 11

Page 45: Introduction to "R" for Language Researchers

では使い回してみましょう

52Tuesday, December 6, 11

Page 46: Introduction to "R" for Language Researchers

以下の関数を実行

•> sqrt(hako)

•> log(hako)

53Tuesday, December 6, 11

Page 47: Introduction to "R" for Language Researchers

もし変数がなかったら何度も関数を

繰り返す羽目になるsqrt(1), sqrt(2) ... sqrt(5)log(1), log (2) ... log (5)

54Tuesday, December 6, 11

Page 48: Introduction to "R" for Language Researchers

一括処理のために変数(ベクトル)の利用は不可欠

55Tuesday, December 6, 11

Page 49: Introduction to "R" for Language Researchers

ここまでのまとめ•Rは「関数」と「変数」が命•関数を使って数値を処理

•q(), help(), sqrt(), log(), c()

•変数を使って一括処理!56Tuesday, December 6, 11

Page 50: Introduction to "R" for Language Researchers

Agenda1. R 概論2. 関数と変数が命3. 外部データの読込4. あっという間に作図5. R で検定

57Tuesday, December 6, 11

Page 51: Introduction to "R" for Language Researchers

Agenda1. R 概論2. 関数と変数が命3. 外部データの読込4. あっという間に作図5. R で検定

58Tuesday, December 6, 11

Page 52: Introduction to "R" for Language Researchers

ここはトラブル多発地域です

うまくいかない時はまず説明をお聴きください

59Tuesday, December 6, 11

Page 53: Introduction to "R" for Language Researchers

さきほど一行で表せる数値を扱いましたが

60Tuesday, December 6, 11

Page 54: Introduction to "R" for Language Researchers

実際のデータは複数行あるはず

61Tuesday, December 6, 11

Page 55: Introduction to "R" for Language Researchers

例えば...

•身長と体重•年齢と年収•覚えた単語数とTOEICスコア

62Tuesday, December 6, 11

Page 56: Introduction to "R" for Language Researchers

表にすれば...身長 体重

A 180 75B 170 65C 165 60D 175 70E 190 80

63Tuesday, December 6, 11

Page 57: Introduction to "R" for Language Researchers

おそらく...

• Excel でのデータ管理が一般的

• そのデータをそのまま活かしたい→では、やりましょう

64Tuesday, December 6, 11

Page 58: Introduction to "R" for Language Researchers

作業ディレクトリの設定

•作業ディレクトリとは...

•データを読み込む場所•データを書き出す場所

65Tuesday, December 6, 11

Page 59: Introduction to "R" for Language Researchers

作業ディレクトリの設定

• Windows:ファイル → ディレクトリの変更• 今日は “MyDocuments” に設定

• Mac OS X:環境設定 → 一般(起動)

• Linux:up to you...

66Tuesday, December 6, 11

Page 60: Introduction to "R" for Language Researchers

作業ディレクトリの設定

• コンソールからの確認・設定も可能• getwd()関数:現在の設定を確認

• > getwd()

• setwd()関数:現在の設定を変更• > setwd("/Users/sakaue/Desktop/")

67Tuesday, December 6, 11

Page 61: Introduction to "R" for Language Researchers

データの読込 その1

• read.csv() 関数

• CSV 形式のファイルを読み込む• CSV: Comma Separated Value

68Tuesday, December 6, 11

Page 62: Introduction to "R" for Language Researchers

1. demo.csv を作業ディレクトリへ移動• XLS/XLSX 形式のものは保存時に変換• CSV ファイルの文字コードは UTF-8 に

2. > test <- read.csv(“demo.csv”) で代入

3. > test [Enter] で中身を確認

データの読込 その1

69Tuesday, December 6, 11

Page 63: Introduction to "R" for Language Researchers

CSVとかダルいんですけど...

という方に

70Tuesday, December 6, 11

Page 64: Introduction to "R" for Language Researchers

データの読込 その2

• read.delim() 関数

• 表形式のデータ読み込む• delim: delimiter(区切り文字)

71Tuesday, December 6, 11

Page 65: Introduction to "R" for Language Researchers

1. demo.xls を開き,マウスで範囲指定する2. > test2 <- read.delim("clipboard") で代入

3. > test2 [Enter] で中身を確認

データの読込 その2

Mac の場合: read.delim(pipe(“pbpaste”))

72Tuesday, December 6, 11

Page 66: Introduction to "R" for Language Researchers

読み込んだら関数で処理> table(test2[,1])

• 度数分布を確認する> mean(test2[,2])

• 平均値を求める> hist(test2[,2])

• ヒストグラムを描く

1列目対象

2列目対象

2列目対象

73Tuesday, December 6, 11

Page 67: Introduction to "R" for Language Researchers

外部データの読込

• 作業ディレクトリの設定に注意• CSV 形式に変換後、read.csv()関数で読込

• 必要な行 or 列を指定して処理

74Tuesday, December 6, 11

Page 68: Introduction to "R" for Language Researchers

http://www.flickr.com/photos/rosengrant/4751386872/

CSV 形式にして読み込めば

重たいExcelファイルにおさらばですよ!

“y2.d175 | Lasershow! Relax!” by B Rosen

75Tuesday, December 6, 11

Page 69: Introduction to "R" for Language Researchers

Agenda1. R 概論2. 関数と変数が命3. 外部データの読込4. あっという間に作図5. R で検定

77Tuesday, December 6, 11

Page 70: Introduction to "R" for Language Researchers

Agenda1. R 概論2. 関数と変数が命3. 外部データの読込4. あっという間に作図5. R で検定

78Tuesday, December 6, 11

Page 71: Introduction to "R" for Language Researchers

データを集めたら数値要約だけでなくデータの視覚化も必要

79Tuesday, December 6, 11

Page 72: Introduction to "R" for Language Researchers

というわけで作図のお時間です

80Tuesday, December 6, 11

Page 73: Introduction to "R" for Language Researchers

基本的な作図手順

1. 変数に値を代入する2. 作図用の関数を使って処理する

81Tuesday, December 6, 11

Page 74: Introduction to "R" for Language Researchers

たった2段階ですExcel や SPSS と来たら... orz

82Tuesday, December 6, 11

Page 75: Introduction to "R" for Language Researchers

まずはヒストグラム

【事例】年齢のヒストグラムを

作成する

83Tuesday, December 6, 11

Page 76: Introduction to "R" for Language Researchers

まずはヒストグラム> age <- c(18, 23, 14, 19, 21, 29, 22, 21, 23, 19, 20, 20, 26, 18, 14, 6, 8, 16, 23, 20)> hist(age)

84Tuesday, December 6, 11

Page 77: Introduction to "R" for Language Researchers

次は散布図【事例】英語の試験と英作文の語数の相関を見る

85Tuesday, December 6, 11

Page 78: Introduction to "R" for Language Researchers

続いて散布図> score <- c(60, 50, 72, 43, 50, 55, 43, 50, 85, 40)> words <- c(340, 190, 465, 170, 130, 225,140, 310, 580, 120)> plot(score,words)

86Tuesday, December 6, 11

Page 79: Introduction to "R" for Language Researchers

続いて箱ひげ図【事例】

英語母語話者と英語学習者が書いた作文の語数の「幅」を

比較する87Tuesday, December 6, 11

Page 80: Introduction to "R" for Language Researchers

続いて箱ひげ図> nns <- c(350, 285, 315, 340, 210, 185, 120, 740, 425, 155)> ns <- c(365, 570, 645, 540, 645, 665, 880, 550, 410, 585)> boxplot(nns, ns, names=c("NNS", "NS"))

88Tuesday, December 6, 11

Page 81: Introduction to "R" for Language Researchers

作図手順のまとめ1. 変数に値を代入する2. 作図用の関数を使って処理する3. 形式を指定して保存

+人に伝承(twitter, FB)

89Tuesday, December 6, 11

Page 82: Introduction to "R" for Language Researchers

http://www.flickr.com/photos/rosengrant/4751386872/

手軽に美しく作図できる    を使えるようになればExcel におさらば!

“y2.d175 | Lasershow! Relax!” by B Rosen

90Tuesday, December 6, 11

Page 83: Introduction to "R" for Language Researchers

Agenda1. R 概論2. 関数と変数が命3. 外部データの読込4. あっという間に作図5. R で検定

91Tuesday, December 6, 11

Page 84: Introduction to "R" for Language Researchers

Agenda1. R 概論2. 関数と変数が命3. 外部データの読込4. あっという間に作図5. R で検定

92Tuesday, December 6, 11

Page 85: Introduction to "R" for Language Researchers

言語現象を数値データ+検定から捉えてみたい

を使う経緯

93Tuesday, December 6, 11

Page 86: Introduction to "R" for Language Researchers

t 検定

カイ二乗検定パワーアナリシス

分散分析

共分散分析

判別分析

主成分分析

クラスカル・ウォリス検定

符号検定

マクマネー検定

因子分析

94Tuesday, December 6, 11

Page 87: Introduction to "R" for Language Researchers

で「t 検定」

95Tuesday, December 6, 11

Page 88: Introduction to "R" for Language Researchers

検定の前に仮説を設ける

• 帰無仮説 H0:「差はない」「効果はない」

• 対立仮説 H1:「差がある」「効果がある」• H0が正しいという前提で,検定統計量 (t, !2, F ) を求める

• 検定統計量が極端で滅多に得られないような値となれば,帰無仮説を棄却し,対立仮説を採択する

96Tuesday, December 6, 11

Page 89: Introduction to "R" for Language Researchers

t 検定

• 2つのグループの平均値の差の検定するのに使う手法

• R では,t.test() であっさりと実行

97Tuesday, December 6, 11

Page 90: Introduction to "R" for Language Researchers

• (例)英語の好きな組と嫌いな組が受けたテストの平均値に差があるかどうか

> like <- c(6,10,6,10,7,8,7,9,10,4)> dislike <- c(3,5,6,4,4,8,4,5,4,7)> t.test(like,dislike,var.equal=TRUE)

t 検定

98Tuesday, December 6, 11

Page 91: Introduction to "R" for Language Researchers

> t.test(like,dislike,var.equal=TRUE)

Two Sample t-test

data: like and dislike t = 3.3041, df = 18, p-value = 0.003946alternative hypothesis: true difference in means is not equal to 0 # 両側検定95 percent confidence interval: # 信頼区間 0.9831754 4.4168246 sample estimates:mean of x mean of y 7.7 5.0

t 検定

99Tuesday, December 6, 11

Page 92: Introduction to "R" for Language Researchers

で「カイ二乗検定」

101Tuesday, December 6, 11

Page 93: Introduction to "R" for Language Researchers

カイ二乗検定• 独立性の検定のために使う(連関の有無)

• (例)数学が好き嫌いと統計の好き嫌いの間に有意な連関があるか

• (例)あるコーパス中の表現Aと表現Bの頻度の差

• ざっくり言えば,期待度数と観測度数のズレが偶然出ちゃったかどうかを調べる

102Tuesday, December 6, 11

Page 94: Introduction to "R" for Language Researchers

事例: 接続詞 “however” の生起位置の比較

文頭 文中 文末 合計頻度 109 347 8 493

[文頭] However, ....[文中] ..., however, ....

[文末] ..., however.

103Tuesday, December 6, 11

Page 95: Introduction to "R" for Language Researchers

> freq <- c(109,347,8)> chisq.test(freq,correct=FALSE)

Chi-squared test for given probabilities

data: freq X-squared = 391.7371, df = 2, p-value < 2.2e-16

# 手作業なら,カイ二乗分布表の自由度2のところを確認する# http://homepage2.nifty.com/nandemoarchive/toukei_kiso/t_F_chi.htm

生起位置の比較のためにカイ二乗検定を実行

104Tuesday, December 6, 11

Page 96: Introduction to "R" for Language Researchers

• 差がありそうかなさそうかを判断するために各種検定を行う• 平均値の差の検定:t 検定と分散分析• 独立性の検定  :カイ二乗検定

• 数行のコマンドであっさり検定!

• データ準備の手間は多少かかるかも...

で検定のまとめ

106Tuesday, December 6, 11

Page 97: Introduction to "R" for Language Researchers

言語現象を数値データ+検定から捉えてみよう!

を使って

107Tuesday, December 6, 11

Page 98: Introduction to "R" for Language Researchers

One more thing...

108Tuesday, December 6, 11

Page 99: Introduction to "R" for Language Researchers

Package による付加機能

109Tuesday, December 6, 11

Page 100: Introduction to "R" for Language Researchers

Packageとは?• ある処理・機能に特化したプログラム

• base(基本パッケージ)だけでも 1,000 以上• 特殊な処理を行う際は,別の package を追加• 言語処理に特化したものもある(ex. RMeCab)

110Tuesday, December 6, 11

Page 101: Introduction to "R" for Language Researchers

RMeCab を使った日本語のデータ処理

111Tuesday, December 6, 11

Page 102: Introduction to "R" for Language Researchers

RMeCabとは• 石田 基広氏が開発したパッケージ

• R から MeCab を呼び出して日本語のテキストを解析させる

• 解析結果をも R で出力してくれる素晴らしいプログラム

112Tuesday, December 6, 11

Page 103: Introduction to "R" for Language Researchers

デモ一覧•RMeCabText() : ファイル解析•RMeCabFreq() : 頻度集計•Ngram() : N-gram 解析•collocate() : 共起関係の分析

114Tuesday, December 6, 11

Page 104: Introduction to "R" for Language Researchers

言語データを効率よく処理しよう!

を使って

115Tuesday, December 6, 11

Page 105: Introduction to "R" for Language Researchers

参考文献

117Tuesday, December 6, 11

Page 106: Introduction to "R" for Language Researchers

1,785円 3,780円2,940円

参考文献(続)

119Tuesday, December 6, 11

Page 107: Introduction to "R" for Language Researchers

ご静聴ありがとうございました

twitter: @sakaue

e-mail: tsakaue<AT>hiroshima-u.ac.jp

121Tuesday, December 6, 11