Introduction to "R" for Language Researchers

Post on 16-May-2015

529 Views

Category:

Technology

2 Downloads

Preview:

Click to see full reader

Transcript

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

40分間

阪 上 辰 也SAKAUE Akku! Tatsuya

1Tuesday, December 6, 11

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

7Tuesday, December 6, 11

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

8Tuesday, December 6, 11

 とは何か• 統計処理を目的とするプログラミング言語• 作者: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

要するに統計ソフト

10Tuesday, December 6, 11

  の何が良いのか

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

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

11Tuesday, December 6, 11

Excel や SPSS は...

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

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

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

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

14Tuesday, December 6, 11

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

  のインストール

15Tuesday, December 6, 11

  のインストール

• 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

17Tuesday, December 6, 11

18Tuesday, December 6, 11

19Tuesday, December 6, 11

20Tuesday, December 6, 11

21Tuesday, December 6, 11

22Tuesday, December 6, 11

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

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

23Tuesday, December 6, 11

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

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

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

24Tuesday, December 6, 11

 のアンインストール• Windows

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

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

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

25Tuesday, December 6, 11

  の起動• Windows

• START → Program → R → R 2.14.0

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

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

26Tuesday, December 6, 11

  の終了

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

27Tuesday, December 6, 11

  で困ったら...

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

  概論まとめ

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

29Tuesday, December 6, 11

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

31Tuesday, December 6, 11

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

32Tuesday, December 6, 11

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

33Tuesday, December 6, 11

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

• > 3+5 [Enter]

• > 10-3 [Enter]

• > 2*3 [Enter]

• > 100/20 [Enter]

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

34Tuesday, December 6, 11

 といえば

関数が命

35Tuesday, December 6, 11

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

36Tuesday, December 6, 11

何言ってんの?

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

37Tuesday, December 6, 11

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

38Tuesday, December 6, 11

sqrt():平方根

•> sqrt(2)

•> sqrt(144)

•> sqrt(104976)

39Tuesday, December 6, 11

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

40Tuesday, December 6, 11

  といえば

変数も命

41Tuesday, December 6, 11

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

42Tuesday, December 6, 11

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

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

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

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

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

また何言ってんの?

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

45Tuesday, December 6, 11

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

46Tuesday, December 6, 11

変数の名前は “hako”

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

•c() 関数:concatenate/combine

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

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

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

を表現

48Tuesday, December 6, 11

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

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

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

49Tuesday, December 6, 11

履歴機能と補完機能

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

50Tuesday, December 6, 11

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

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

51Tuesday, December 6, 11

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

52Tuesday, December 6, 11

以下の関数を実行

•> sqrt(hako)

•> log(hako)

53Tuesday, December 6, 11

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

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

54Tuesday, December 6, 11

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

55Tuesday, December 6, 11

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

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

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

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

57Tuesday, December 6, 11

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

58Tuesday, December 6, 11

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

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

59Tuesday, December 6, 11

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

60Tuesday, December 6, 11

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

61Tuesday, December 6, 11

例えば...

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

62Tuesday, December 6, 11

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

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

63Tuesday, December 6, 11

おそらく...

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

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

64Tuesday, December 6, 11

作業ディレクトリの設定

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

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

65Tuesday, December 6, 11

作業ディレクトリの設定

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

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

• Linux:up to you...

66Tuesday, December 6, 11

作業ディレクトリの設定

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

• > getwd()

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

67Tuesday, December 6, 11

データの読込 その1

• read.csv() 関数

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

68Tuesday, December 6, 11

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

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

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

データの読込 その1

69Tuesday, December 6, 11

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

という方に

70Tuesday, December 6, 11

データの読込 その2

• read.delim() 関数

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

71Tuesday, December 6, 11

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

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

データの読込 その2

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

72Tuesday, December 6, 11

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

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

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

• ヒストグラムを描く

1列目対象

2列目対象

2列目対象

73Tuesday, December 6, 11

外部データの読込

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

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

74Tuesday, December 6, 11

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

CSV 形式にして読み込めば

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

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

75Tuesday, December 6, 11

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

77Tuesday, December 6, 11

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

78Tuesday, December 6, 11

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

79Tuesday, December 6, 11

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

80Tuesday, December 6, 11

基本的な作図手順

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

81Tuesday, December 6, 11

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

82Tuesday, December 6, 11

まずはヒストグラム

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

作成する

83Tuesday, December 6, 11

まずはヒストグラム> 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

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

85Tuesday, December 6, 11

続いて散布図> 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

続いて箱ひげ図【事例】

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

比較する87Tuesday, December 6, 11

続いて箱ひげ図> 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

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

+人に伝承(twitter, FB)

89Tuesday, December 6, 11

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

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

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

90Tuesday, December 6, 11

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

91Tuesday, December 6, 11

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

92Tuesday, December 6, 11

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

を使う経緯

93Tuesday, December 6, 11

t 検定

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

分散分析

共分散分析

判別分析

主成分分析

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

符号検定

マクマネー検定

因子分析

94Tuesday, December 6, 11

で「t 検定」

95Tuesday, December 6, 11

検定の前に仮説を設ける

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

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

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

96Tuesday, December 6, 11

t 検定

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

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

97Tuesday, December 6, 11

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

> 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

> 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

で「カイ二乗検定」

101Tuesday, December 6, 11

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

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

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

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

102Tuesday, December 6, 11

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

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

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

[文末] ..., however.

103Tuesday, December 6, 11

> 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

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

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

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

で検定のまとめ

106Tuesday, December 6, 11

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

を使って

107Tuesday, December 6, 11

One more thing...

108Tuesday, December 6, 11

Package による付加機能

109Tuesday, December 6, 11

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

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

110Tuesday, December 6, 11

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

111Tuesday, December 6, 11

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

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

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

112Tuesday, December 6, 11

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

114Tuesday, December 6, 11

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

を使って

115Tuesday, December 6, 11

参考文献

117Tuesday, December 6, 11

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

参考文献(続)

119Tuesday, December 6, 11

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

twitter: @sakaue

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

121Tuesday, December 6, 11

top related