let2012 ワークショップ「r による教育・言語データ処理のススメ」

159
2012-08-07 LET2012@Konan Univ. による教育・言語データ処理のススメ 3 Tuesday, August 7, 12

Upload: sakaue-tatsuya

Post on 18-Feb-2017

1.841 views

Category:

Education


0 download

TRANSCRIPT

Page 1: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

2012-08-07 LET2012@Konan Univ.

による教育・言語データ処理のススメ

3Tuesday, August 7, 12

Page 2: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

Agenda1. R の基本操作2. 関数と変数が命3. 外部データの読込と作図4. R で検定5. 言語データの処理

11Tuesday, August 7, 12

Page 3: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

Agenda1. R の基本操作2. 関数と変数が命3. 外部データの読込と作図4. R で検定5. 言語データの処理

12Tuesday, August 7, 12

Page 4: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

 とは何か• 統計処理を目的とするプログラミング言語• 無償+オープンソースのソフトウェア

• 作者: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

13Tuesday, August 7, 12

Page 5: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

要するに統計ソフト

14Tuesday, August 7, 12

Page 6: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

  の何が良いのか

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

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

15Tuesday, August 7, 12

Page 7: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

 の弱点• 文字入力による操作

• プログラムを組む感覚を養成• 確実に伝わるという利点も

• 多方面の知識が必要• 英語+統計+計算機

• 参考書籍がお高め16Tuesday, August 7, 12

Page 8: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

モウダメダー

17Tuesday, August 7, 12

Page 9: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

Excel や SPSS は...

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

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

•作図結果が美しくない18Tuesday, August 7, 12

Page 10: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

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

20Tuesday, August 7, 12

Page 11: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

1. http://www.r-project.org/ にアクセス2. “download R” をクリック3. JAPAN の中から1つを選ぶ4. OS に応じたリンクをクリック

  のインストール

21Tuesday, August 7, 12

Page 12: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

  のインストール

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

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

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

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

22Tuesday, August 7, 12

Page 13: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

23Tuesday, August 7, 12

Page 14: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

24Tuesday, August 7, 12

Page 15: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

25Tuesday, August 7, 12

Page 16: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

26Tuesday, August 7, 12

Page 17: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

27Tuesday, August 7, 12

Page 18: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

28Tuesday, August 7, 12

Page 19: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

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

3. 新規にインストール用ファイルをダウンロードしてインストール

29Tuesday, August 7, 12

Page 20: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

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

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

• 新旧の共存は可能• Windows/Mac: 別名でインストール• ただし何がどう共有されているかは不明

30Tuesday, August 7, 12

Page 21: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

 のアンインストール• Windows

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

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

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

31Tuesday, August 7, 12

Page 22: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

  の起動

• Windows• START → Program → R → R 2.15.1

• Mac OS X• /Applications 内の をクリック

32Tuesday, August 7, 12

Page 23: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

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

33Tuesday, August 7, 12

Page 24: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

  の終了

•コンソールに「q()」と入力• 今は「作業スペース」は保存しない• ウィンドウが消えれば終了

34Tuesday, August 7, 12

Page 25: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

  で困ったら...

•まずは 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/

35Tuesday, August 7, 12

Page 26: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

  概論まとめ

•    は統計ソフト•無償+何でも統計+美しく作図•困ったら help(sth) !!

36Tuesday, August 7, 12

Page 27: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

Agenda1. R の基本操作2. 関数と変数が命3. 外部データの読込と作図4. R で検定5. 言語データの処理

38Tuesday, August 7, 12

Page 28: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

Agenda1. R の基本操作2. 関数と変数が命3. 外部データの読込と作図4. R で検定5. 言語データの処理

39Tuesday, August 7, 12

Page 29: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

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

40Tuesday, August 7, 12

Page 30: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

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

• > 12345 + 56789 [Enter]

• > 9753 - 1486 [Enter]

• > 3571 * 2984 [Enter]

• > 2234/5678 [Enter]

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

41Tuesday, August 7, 12

Page 31: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

いまのは単なる計算式でしたが

42Tuesday, August 7, 12

Page 32: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

 といえば

関数が命

43Tuesday, August 7, 12

Page 33: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

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

44Tuesday, August 7, 12

Page 34: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

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

46Tuesday, August 7, 12

Page 35: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

sqrt():平方根

•> sqrt(2)

•> sqrt(144)

•> sqrt(104976)

47Tuesday, August 7, 12

Page 36: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

「関数(値)」が命

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

48Tuesday, August 7, 12

Page 37: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

  といえば

変数も命

49Tuesday, August 7, 12

Page 38: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

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

50Tuesday, August 7, 12

Page 39: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

ではベクトルとも呼ばれ複数の値を1つにまとめたものを指す

51Tuesday, August 7, 12

Page 40: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

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

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

変数を使う52Tuesday, August 7, 12

Page 41: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

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

「代入」といいます53Tuesday, August 7, 12

Page 42: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

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

55Tuesday, August 7, 12

Page 43: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

変数の名前は “hako”

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

• c() 関数:combine (cf. https://twitter.com/#!/sakaue/status/193708048030760960)• 値を1つにまとめる関数• 逆に書いても(一応)OK

56Tuesday, August 7, 12

Page 44: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

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

を表現(入れ替えても動きます)

57Tuesday, August 7, 12

Page 45: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

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

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

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

58Tuesday, August 7, 12

Page 46: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

履歴機能と補完機能

•履歴: [↑][↓] の矢印キー•補完: [Tab]キー

59Tuesday, August 7, 12

Page 47: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

いま “hako” という名前の「変数」の中に

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

60Tuesday, August 7, 12

Page 48: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

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

61Tuesday, August 7, 12

Page 49: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

以下の関数を実行

•> sqrt(hako)

•> log(hako)

62Tuesday, August 7, 12

Page 50: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

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

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

63Tuesday, August 7, 12

Page 51: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

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

64Tuesday, August 7, 12

Page 52: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

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

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

•変数を使って一括処理!65Tuesday, August 7, 12

Page 53: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

覚える必要はなくメモ等を頼りに実行できれば OK

66Tuesday, August 7, 12

Page 54: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

Agenda1. R の基本操作2. 関数と変数が命3. 外部データの読込と作図4. R で検定5. 言語データの処理

67Tuesday, August 7, 12

Page 55: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

Agenda1. R の基本操作2. 関数と変数が命3. 外部データの読込と作図4. R で検定5. 言語データの処理

68Tuesday, August 7, 12

Page 56: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

Sub topics

1. 行列のおはなし2. データフレーム3. 外部データの読込

69Tuesday, August 7, 12

Page 57: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

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

70Tuesday, August 7, 12

Page 58: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

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

71Tuesday, August 7, 12

Page 59: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

例えば...

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

72Tuesday, August 7, 12

Page 60: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

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

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

73Tuesday, August 7, 12

Page 61: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

複数の行や列で表されるデータを扱うために

Rでは「行列」を使う

74Tuesday, August 7, 12

Page 62: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

行列とは

数値が縦横に並べられたもの

75Tuesday, August 7, 12

Page 63: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

1 2 3

4 5 6

7 8 9

76Tuesday, August 7, 12

Page 64: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

行77Tuesday, August 7, 12

Page 65: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

1 2 3

4 5 6

7 8 9

78Tuesday, August 7, 12

Page 66: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

1 2 3

4 5 6

7 8 9

79Tuesday, August 7, 12

Page 67: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

1 2 3

4 5 6

7 8 9

80Tuesday, August 7, 12

Page 68: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

列81Tuesday, August 7, 12

Page 69: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

1 2 3

4 5 6

7 8 9

82Tuesday, August 7, 12

Page 70: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

1 2 3

4 5 6

7 8 9

83Tuesday, August 7, 12

Page 71: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

1 2 3

4 5 6

7 8 9

84Tuesday, August 7, 12

Page 72: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

ひとまず「行列」という存在を知ってやってください

85Tuesday, August 7, 12

Page 73: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

そんな行列を扱うために

matrix() 関数を使う

86Tuesday, August 7, 12

Page 74: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

matrix() 関数

•行列を作る関数•matrix(要素, 行の数, 列の数)

•デフォでは列方向に配置

87Tuesday, August 7, 12

Page 75: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

このようなデータなら身長 体重

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

88Tuesday, August 7, 12

Page 76: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

karada <- matrix(c(180, 170, 165, 175, 190, 75, 65, 60, 70, 80), 5, 2)

行列を作ってみる

1. c() 関数で、数値を連結2. matrix() 関数で、行列に変換

• 「5行で2列」にするという指定をする3. karada という名の変数に代入

89Tuesday, August 7, 12

Page 77: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

> karada

と入力して変数の中身を確認

90Tuesday, August 7, 12

Page 78: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

行列の要素を取り出すdemo <- matrix(1:30,nrow=5,ncol=6)

http://gyazo.com/76c58d5d6c8426a44f160897cda99671.png

91Tuesday, August 7, 12

Page 79: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

行列の要素を取り出す2行目を表示 → demo[2,]2列目を表示 → demo[,2]

http://gyazo.com/6726084afd9e1cc4b03df85fe6bc0f29.png

92Tuesday, August 7, 12

Page 80: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

行列の要素を取り出す2行目と4行目を表示 → demo[c(2,4),]

2列目と4列目を表示 → demo[, c(2,4)]

93Tuesday, August 7, 12

Page 81: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

行列の要素を取り出す

http://gyazo.com/a116c0e2f1284ea7d38bf7024d92f1cc.png94Tuesday, August 7, 12

Page 82: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

行列まとめ

• 横方向が行、縦方向が列• デフォルトでの数値の並びに注意• 必要な要素を適宜取り出して値を確認

95Tuesday, August 7, 12

Page 83: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

Sub topics

1. 行列のおはなし2. データフレーム3. 外部データの読込

96Tuesday, August 7, 12

Page 84: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

データフレームとは

•いろんなデータを突っ込んだもの• いろんな=質的データ+量的データ• 突っ込む=一緒に並んでいること

97Tuesday, August 7, 12

Page 85: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

名前 血液型 身長 体重坂本 B 175 65

高橋 B 177 70

阿部 B 174 75

長野 A 179 70

松本 O 170 60

データフレームとは

98Tuesday, August 7, 12

Page 86: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

データフレームとは

• Excel の WS とほぼ同じイメージ

• 既存データの読込>自力で作る• data.frame() 関数が使える

99Tuesday, August 7, 12

Page 87: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

じゃあ実際に自力で作るかといったら...

100Tuesday, August 7, 12

Page 88: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

そこで外部データの読込を行おう

102Tuesday, August 7, 12

Page 89: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

1. 行列のおはなし2. データフレーム3. 外部データの読込

Sub topics

103Tuesday, August 7, 12

Page 90: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

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

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

104Tuesday, August 7, 12

Page 91: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

おそらく...

•Excel でデータ管理•できればそのまま活かしたい

105Tuesday, August 7, 12

Page 92: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

作業ディレクトリの設定

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

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

106Tuesday, August 7, 12

Page 93: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

作業ディレクトリの設定• Windows:ファイル → ディレクトリの変更

• “My Documents” にファイル移動

• Mac OS X:環境設定 → 一般(起動)• ホームディレクトリにファイル移動

• Linux:up to you...

107Tuesday, August 7, 12

Page 94: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

作業ディレクトリの設定

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

• > getwd()

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

108Tuesday, August 7, 12

Page 95: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

データの読込 その1

• read.csv() 関数

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

109Tuesday, August 7, 12

Page 96: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

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

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

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

データの読込 その1

110Tuesday, August 7, 12

Page 97: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

CSV 変換なんて面倒...

という方に

111Tuesday, August 7, 12

Page 98: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

データの読込 その2

• read.delim() 関数

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

112Tuesday, August 7, 12

Page 99: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

1. let2012.xls を開いてマウスで範囲指定2. > test2 <- read.delim("clipboard") で代入

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

データの読込 その2

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

113Tuesday, August 7, 12

Page 100: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

読み込んだら関数で処理

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

> mean(test2[,3])•平均値を求める

2列目対象

3列目対象

114Tuesday, August 7, 12

Page 101: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

外部データの読込

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

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

115Tuesday, August 7, 12

Page 102: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

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

117Tuesday, August 7, 12

Page 103: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

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

118Tuesday, August 7, 12

Page 104: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

基本的な作図手順

1. 変数に値を代入する2. 作図用の関数を実行

119Tuesday, August 7, 12

Page 105: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

たった2段階Excel や SPSS ではこうはいかない

120Tuesday, August 7, 12

Page 106: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

• ヒストグラム• 散布図• 棒グラフ• 折れ線グラフ• 箱ひげ図

作成できる図の種類

121Tuesday, August 7, 12

Page 107: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

• ヒストグラム• 散布図• 棒グラフ• 折れ線グラフ• 箱ひげ図

作成できる図の種類

122Tuesday, August 7, 12

Page 108: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

まずはヒストグラム

> hist(test2[,2])

123Tuesday, August 7, 12

Page 109: LET2012 ワークショップ「R による教育・言語データ処理のススメ」
Page 110: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

箱ひげ図

> boxplot(test2[,2], test2[,3], names=c("Male", "Female"), horizontal=T)

125Tuesday, August 7, 12

Page 111: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

箱ひげ図

> boxplot(test2[,2], test2[,3], names=c("Male", "Female"), horizontal=T, ylim=c(0,100))

126Tuesday, August 7, 12

Page 112: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

箱ひげ図

> boxplot(test2[,2], test2[,3], names=c("Male", "Female"), horizontal=T, ylim=c(0,100), col="blue")

127Tuesday, August 7, 12

Page 113: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

箱ひげ図

> boxplot(test2[,2], test2[,3], names=c("Male", "Female"), horizontal=T, ylim=c(0,100), col="blue", xlab="score", ylab="sex", main="BOXPLOT")

128Tuesday, August 7, 12

Page 114: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

グラフの保存方法

> pdf() # pdf デバイスを開く()

> plot(1:10) # プロット → Rplots.pdf に出力> dev.o!() # デバイスを閉じる

★慣れないうちは画面上のメニューから選ぶのが無難

129Tuesday, August 7, 12

Page 115: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

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

+人に伝承(twitter, FB)

130Tuesday, August 7, 12

Page 116: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

Agenda1. R の基本操作2. 関数と変数が命3. 外部データの読込と作図4. R で検定5. 言語データの処理

132Tuesday, August 7, 12

Page 117: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

Agenda1. R の基本操作2. 関数と変数が命3. 外部データの読込と作図4. R で検定5. 言語データの処理

133Tuesday, August 7, 12

Page 118: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

この世の様々な現象を数値データ+検定から捉えてみたい

を使う経緯

134Tuesday, August 7, 12

Page 119: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

t 検定

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

分散分析

共分散分析

判別分析

主成分分析

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

符号検定

マクマネー検定

因子分析

135Tuesday, August 7, 12

Page 120: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

で「t 検定」

136Tuesday, August 7, 12

Page 121: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

t 検定

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

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

137Tuesday, August 7, 12

Page 122: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

• (例)あるテストの平均値に男女差があるかどうか

> male <- test2[,2]> female <- test2[,3]> t.test(male, female, var.equal=TRUE)

t 検定

138Tuesday, August 7, 12

Page 123: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

> t.test(male, female,var.equal=TRUE)

Two Sample t-test

data: male and female t = -0.9232, df = 58, p-value = 0.3597alternative hypothesis: true difference in means is not equal to 0 # 両側検定95 percent confidence interval: # 信頼区間 -9.926800 3.660134 sample estimates:mean of x mean of y 62.06667 65.20000

t 検定

139Tuesday, August 7, 12

Page 124: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

で「カイ二乗検定」

141Tuesday, August 7, 12

Page 125: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

カイ二乗検定• 独立性の検定のために使う

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

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

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

142Tuesday, August 7, 12

Page 126: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

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

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

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

[文末] ..., however.

143Tuesday, August 7, 12

Page 127: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

> 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

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

144Tuesday, August 7, 12

Page 128: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

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

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

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

で検定のまとめ

145Tuesday, August 7, 12

Page 129: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

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

を使って

146Tuesday, August 7, 12

Page 130: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

Agenda1. R の基本操作2. 関数と変数が命3. 外部データの読込と作図4. R で検定5. 言語データの処理

147Tuesday, August 7, 12

Page 131: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

Agenda1. R の基本操作2. 関数と変数が命3. 外部データの読込と作図4. R で検定5. 言語データの処理

148Tuesday, August 7, 12

Page 132: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

Sub topics

1. 言語データ処理の流れ2. R による and と but の検索3. パッケージ利用によるデータ処理

149Tuesday, August 7, 12

Page 133: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

Sub topics

1. 言語データ処理の流れ2. R による and と but の検索3. パッケージ利用によるデータ処理

150Tuesday, August 7, 12

Page 134: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

言語データ処理の流れ1) データを読み込む2) データを分解する3) データを揃える4) 数値を求める5) データを保存する

151Tuesday, August 7, 12

Page 135: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

1) データを読み込む

> nns <- scan("nns_raw.txt", what="character")

Read 62959 items

152Tuesday, August 7, 12

Page 136: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

2) データを分解する> nns_list <- strsplit(nns, " ") # スペースでデータをリスト化 # 干し柿状態(?)

> nns_unlist <- unlist(nns_list) # リストされたデータをバラバラに分解

153Tuesday, August 7, 12

Page 137: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

3) データを揃える> sort_nns <- sort(nns_unlist) # データの並び替え

> uniq_nns <- unique(sort_nns) # 並び替えたデータをまとめる

154Tuesday, August 7, 12

Page 138: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

4) 数値を求める> length(nns_unlist)[1] 70220 # Token

> nns_all <- table(nns_unlist) # 単語一覧表の作成> nns_type <- length(uniq_nns)> nns_type[1] 7579 # Type

155Tuesday, August 7, 12

Page 139: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

5) データを保存する

> write.table(nns_all, file="freq.txt", sep="\t")

# freq.txt という名で列をタブ区切りにして保存

156Tuesday, August 7, 12

Page 140: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

Sub topics

1. 言語データ処理の流れ2. R による and と but の検索3. パッケージ利用によるデータ処理

157Tuesday, August 7, 12

Page 141: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

Sub topics

1. 言語データ処理の流れ2. R による and と but の検索3. パッケージ利用によるデータ処理

158Tuesday, August 7, 12

Page 142: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

R による and と but の検索

•grep 関数・length 関数• grep() : 文字列マッチング• length(): 要素数のカウント

159Tuesday, August 7, 12

Page 143: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

> grep("^And,?", nns_unlist, fixed = FALSE, value=TRUE)> grep("^But,?", nns_unlist, fixed = FALSE, value=TRUE)

# ヒットした要素を表示# 正規表現の ^ をつけておき,3文字を含む文字列(underst”and”)を除外# fixed=FALSE で拡張正規表現を利用,value=TRUE で要素表示

> length(grep("^And,?", nns_unlist, fixed = FALSE, value=TRUE))> length(grep("^But,?", nns_unlist, fixed = FALSE, value=TRUE))

# ヒット数だけを表示

R による and と but の検索

160Tuesday, August 7, 12

Page 144: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

> length(grep("^And,?", nns_unlist, fixed = FALSE, value=TRUE))

[1] 175

> length(grep("^But,?", nns_unlist, fixed = FALSE, value=TRUE))

[1] 178

> length(grep("^and,?", nns_unlist, fixed = FALSE, value=TRUE))

[1] 1479

> length(grep("^but,?", nns_unlist, fixed = FALSE, value=TRUE))

[1] 260

R による and と but の検索

161Tuesday, August 7, 12

Page 145: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

> barplot(freq, names=c("And", "and", "But", "but"), horiz=T, las=1)

R による and と but の検索

162Tuesday, August 7, 12

Page 146: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

• R で基本的な検索・分析ならば...

1) データを strsplit() + unlist() して2) grep() と length() でカウント3) barplot() などで視覚化4) chisq.test() などで検定

R による and と but の検索

163Tuesday, August 7, 12

Page 147: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

Sub topics

1. 言語データ処理の流れ2. R による and と but の検索3. パッケージ利用によるデータ処理

164Tuesday, August 7, 12

Page 148: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

Sub topics

1. 言語データ処理の流れ2. R による and と but の検索3. パッケージ利用によるデータ処理

165Tuesday, August 7, 12

Page 149: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

Packageとは?

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

166Tuesday, August 7, 12

Page 150: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

i) tm: Text Mining Package• http://tm.r-forge.r-project.org/

• http://cran.r-project.org/web/packages/tm/tm.pdf

ii) corpora• http://cogsci.uni-osnabrueck.de/~severt/SIGIL/sigil_R/

• http://cran.r-project.org/web/packages/corpora/corpora.pdf

iii) LanguageR• http://www.ualberta.ca/~baayen/software.html

• http://cran.r-project.org/web/packages/languageR/languageR.pdf

言語処理に特化した packages

167Tuesday, August 7, 12

Page 151: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

日本語データの分析を助けてくれる

RMeCab を紹介

168Tuesday, August 7, 12

Page 152: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

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

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

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

169Tuesday, August 7, 12

Page 153: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

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

170Tuesday, August 7, 12

Page 154: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

おわりに

171Tuesday, August 7, 12

Page 155: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

のススメ

172Tuesday, August 7, 12

Page 156: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

ExcelSPSS

174Tuesday, August 7, 12

Page 157: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

参考文献

176Tuesday, August 7, 12

Page 158: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

参考文献(続)

178Tuesday, August 7, 12

Page 159: LET2012 ワークショップ「R による教育・言語データ処理のススメ」

参考文献(続)

179Tuesday, August 7, 12