nagoya.r #11 入門者講習
DESCRIPTION
Nagoya.R #11にて使用したスライドを一部改変したものです。 Ustream中継(録画)はこちらから http://www.ustream.tv/recorded/41452159TRANSCRIPT
自己紹介
•川口 勇作 (KAWAGUCHI, Yusaku)
–所属:名古屋大学大学院
–コンピュータ支援言語教育について
勉強中
–Nagoya.RのUstream中継担当
–R利用歴:まだ半年
本日のメニュー
1. Rとは何か
2. Rの基本操作
3. 関数と変数はRの命
4. 行列を作ろう
5. あっという間に作図の巻
本日のメニュー
1. Rとは何か
2. Rの基本操作
3. 関数と変数はRの命
4. 行列を作ろう
5. あっという間に作図の巻
とは何か
• 統計処理のためのプログラミング言語
• 無償+オープンソースのソフトウェア
のよい点
• 無償!(SPSSは約10万円)
• 豊富な種類の統計処理!
• 美しいグラフィックス!
うおぉぉぉぉぉぉぉ!!
AB
CD
0.0 0.2 0.4 0.6 0.8 1.0
Score
るおぉぉぉぉぉぉぉ!!
-3 -2 -1 0 1 2 3
0.0
0.2
0.4
0.6
0.8
1.0
1.2
Cohen's d
De
nsity
WRRRYYYYYYYY!! TOEIC
0.0 1.0 2.0
-0.15 0.19
-1.0 0.0
-0.04 0.07
2.0 3.0 4.0
0.37 -0.16
0.1 0.3
0.02 0.31
1.0 2.5 4.0
0.16 0.57
1.0 2.5 4.0
0.35 0.23
2.0 3.0 4.0
500
800
0.16
0.0
1.5
語長効果
-0.01 0.25 -0.14 -0.24 0.49 0.50 0.12 -0.03 -0.07 -0.24 0.21 0.05
頻度効果
-0.21 0.17 0.08 0.04 0.12 0.21 0.02 0.01 0.05 -0.01
-1.0
0.0
-0.12
-1.0
0.5 親密度効果
0.16 0.00 -0.05 0.20 0.37 0.26 0.22 0.14 0.18 0.13
心像性効果
0.22 -0.21 0.11 0.34 0.16 -0.14 0.18 0.23
-0.5
0.5
0.23
2.0
3.5 弁別力
-0.07 -0.07 0.17 -0.18 -0.05 -0.06 0.05 0.04
反応時間
0.66 -0.26 -0.27 -0.18 -0.29 0.19
600
1200
-0.23
0.1
0.3
自動化係数
0.05 -0.05 0.02 -0.06 0.19 -0.16
読む
0.35 0.15 0.13 0.26
2.0
3.5
0.44
1.0
3.0 書く
0.38 0.53 0.20 0.41
聞く
0.64 0.10
13
5
0.09
1.0
3.0 話す
0.03 0.27
文法
13
5
0.48
500 700 900
2.0
3.5
-1.0 0.0 -0.5 0.5 600 1000 2.0 3.0 4.0 1 2 3 4 5 1 2 3 4 5
語彙
のつらい点
• 文字ベースの操作
–プログラミング技術が多少必要に
• いろいろな知識が必要
–英語・統計について
ウゲーッ
本日のメニュー
1. Rとは何か
2. Rの基本操作
3. 関数と変数はRの命
4. 行列を作ろう
5. あっという間に作図の巻
本日のメニュー
1. Rとは何か
2. Rの基本操作
3. 関数と変数はRの命
4. 行列を作ろう
5. あっという間に作図の巻
まず
インストール
のインストール
1. http://www.r-project.org/にア
クセス
2. “download R” をクリック
3. Japanの中から,CRAN1つを選択
4. 使っているOS のリンクをクリック
5. バージョンを選択しダウンロード
<- 過去のバージョンのものはこちらから!
のインストール
6. ダウンロードしたファイルを
ダブルクリックで開く
7. ダイアログの指示にしたがって進
める
のアップデート
1. http://www.r-project.org/にア
クセス
2. 新しいバージョンが出ているか確
認
3. 新規にインストール用ファイルを
ダウンロードしてインストール
のアップデート
• 注意
–重大なセキュリティ上の問題がない限り,むやみに更新しない
•パッケージ(付加機能)の動作不良の回避
• Tips:Windows版は新旧共生可能
のアンインストール
• Windows
– コンパネ>プログラムの追加と削除(一般的なアプリケーションのアンインストールの手順と同じ)
• Mac OS X
– /Applications にある アイコンと/Library の中のFrameworks にある R. framework を削除
起動・終了 させましょう
• Windows
– スタート -> プログラム -> R -> お好みの
バージョンを起動
• Mac OS X
– /Application内のRアイコンをクリック
-> Rの「コンソール」が表示されるか確認してください
の起動
• WindowsもMac OS Xも
–「閉じる」ボタンでもいいんだけど…
–「q()」と入力(これが終了コマンド)
• ウィンドウが消えてR終了
–作業スペースの保存はしないでください
の終了
• まずは「help()」を実行!
– () の中に調べたい語句を入れる
• 以下のサイトも…
– seekR (http://seekr.jp/)
– R SEEK (http://www.rseek.org/)
– RjpWiki (http://www.okada.jp.org/RWiki/)
– R-Tips (http://cse.naro.affrc.go.jp/takezawa/r-tips/r.html)
– Rによる統計処理 (http://aoki2.si.gunma-u.ac.jp/R/)
で困ったときは…
まとめ
• は統計ソフト
• 無償×いろんな統計×美しい作図
• 困ったら色々調べてみる
本日のメニュー
1. Rとは何か
2. Rの基本操作
3. 関数と変数はRの命
4. 行列を作ろう
5. あっという間に作図の巻
本日のメニュー
1. Rとは何か
2. Rの基本操作
3. 関数と変数はRの命
4. 行列を作ろう
5. あっという間に作図の巻
関数・変数は
Rの命
以下
”>”から始まる式を
コンソールに
入力していってください
”>”は入力 しなくていいです
R version 3.0.1 (2013-05-16) -- "Good Sport"
Copyright (C) 2013 The R Foundation for Statistical Computing
Platform: i386-w64-mingw32/i386 (32-bit)
R は、自由なソフトウェアであり、「完全に無保証」です。 一定の条件に従えば、自由にこれを再配布することができます。 配布条件の詳細に関しては、'license()' あるいは 'licence()' と入力してください。
R は多くの貢献者による共同プロジェクトです。 詳しくは 'contributors()' と入力してください。 また、R や R のパッケージを出版物で引用する際の形式については
'citation()' と入力してください。
'demo()' と入力すればデモをみることができます。 'help()' とすればオンラインヘルプが出ます。 'help.start()' で HTML ブラウザによるヘルプがみられます。 'q()' と入力すれば R を終了します。
>|
<- ここから入力
四則演算
• 式を入力し[Enter]を押す
> 3+5 [Enter]
> 10-3 [Enter]
> 2*3 [Enter]
> 100/20 [Enter]
> (12+34-56)*78/90 [Enter]
-8.666667
累乗
• 「 ^ 」を使う
> 10^2
10の2乗
> 100^2
100の2乗
ちょっと高度に
• 次の違いは?
> 100^1/2
1001/2
> 100^(1/2)
100(1/2)
おさらい
•足し算:+
•引き算:-
•掛け算:*
•割り算:/
•累乗:^
これまでのは
単なる計算式
これから
関数 というものを使います
関数とは?
• 指定した値に対して何らかの処理をして結果を返すもの
• には多数の関数がある
• q() や help() も関数 –()の中に値を入れる
sqrt():平方根
> sqrt(2)
1.414214
> sqrt(144)
12
> sqrt(104976)
324
コンソールで「+」が出たら
• 入力中に誤って[Enter]を押すと,
待機状態を示す「+」が出る
–[STOP]ボタン ,もしくは[Esc]キーでキャンセル
> sqrt(
+
次に
変数 というものを使います
変数とは?
• 変数とは1つ以上の値をまとめ
ていれておく「箱」のこと
• ではベクトルとも呼ばれ
複数の値を1つにまとめたもの
を指す
変数とは?
• 統計処理を行うには複数の値をまとめて扱うことが必要 –それを使い回すために変数を使う
• 変数に数値を入れることを
「代入」という
変数に数値を入れる
• 変数の名前は”hako”
> hako <- c(1,2,3,4,5)
– c()関数:conbine(cf. https://twitter.com/langstat/status/193707940518170625)
値を1つにまとめる関数
• 代入したら中身を確認
> hako
“<-”って?
• > hako <- c(1,2,3,4,5)
の”<-”は
左向きの矢印(←) を表現
※「=」でも置き換え可能だが推奨されない
履歴機能と補完機能
• 履歴:上下の矢印キー
–今まで入力したものが記録されている
• 補完:[Tab]キー
–一部を入力すると入力履歴や関数から予測して補完してくれる
現在 ”hako”という名前の
変数の中に
1から5までの数字が
まとめて入っている
状態です
使い回して みましょう
以下の関数を実行
> sqrt(hako)
> log(hako)
これだけ入力するのと
どっちが楽ですか? > sqrt(1)
> sqrt(2)
> sqrt(3)
> sqrt(4)
> sqrt(5)
> log(1)
> log(2)
> log(3)
> log(4)
> log(5)
もっと 使い回して みましょう
以下の関数で実行
• 基本統計量を求める:summary()
• 度数分布表を作る:table()
• 合計する:sum()
• データの個数を求める:length()
以下の関数で実行
• 平均値を求める:mean()
• 最大値を求める:max()
• 最小値を求める:min()
• 中央値を求める:median()
• 標準偏差を求める:sd()
ここまでのまとめ
• Rは「関数」と「変数」が命
• 関数を使って数値を処理
• q(), help(), sqrt(), log(), c()
• 変数を使って一括処理!
今日は
メモを頼りに
実行できればOK
本日のメニュー
1. Rとは何か
2. Rの基本操作
3. 関数と変数はRの命
4. 行列を作ろう
5. あっという間に作図の巻
本日のメニュー
1. Rとは何か
2. Rの基本操作
3. 関数と変数はRの命
4. 行列を作ろう
5. あっという間に作図の巻
例えば…
身長 体重
A 180 75
B 170 65
C 165 60
D 175 70
E 190 80
行列とは?
• 数値が縦横に並べられたもの
–身長と体重
–勉強時間とテストの得点
–年齢と元カレ・元カノの数
1 2 3
4 5 6
7 8 9
1 2 3
4 5 6
7 8 9
1 2 3
4 5 6
7 8 9
1 2 3
4 5 6
7 8 9
1 2 3
4 5 6
7 8 9
1 2 3
4 5 6
7 8 9
1 2 3
4 5 6
7 8 9
行列を作る関数
•matrix()関数 –matrix(要素, 行の数, 列の数)
このデータで…
身長 体重
A 180 75
B 170 65
C 165 60
D 175 70
E 190 80
行列を作ってみる
> karada <- matrix(c(180, 170, 165, 175, 190, 75, 65, 60, 70, 80), 5, 2)
1. c()関数で,数値を連結
2. matrix()関数で,5行2列の行列に変換
3. “karada”という名の変数に代入
4. > karada と入力して変数の中身を確認
行列の要素を取り出す
1. 行列を作り変数に代入
2. 変数の中から見たい行や列を
指定
行列の要素を取り出す
> demo <- matrix(1:30, nrow = 5, ncol = 6)
行列の要素を取り出す
• 2行目を表示 -> demo[2,]
• 2列目を表示 -> demo[,2]
行列の要素を取り出す
• 複数行・複数列をまとめて取り
出すときはc()関数を使う
行列まとめ
• 横方向が行,縦方向が列
• matrix()関数で行列を作る
• 必要な要素を適宜取り出して値を確認
数字だけじゃなくて
文字 も入れたいんだけど
できます
データフレーム
• 文字データや数字データを一緒くたにして並べたもの
• 関数を駆使して自力で作ることも
可能
だけど…
できますけど…
• コマンドや文字をいちいち打ち込むのはしんどい!
• Excelなどの外部から楽にデータを読み込みたい!
-> できます
外部データの読み込み
• read.table()関数
• read.delim()関数
• read.csv()関数
• 1つずつ解説します
その前に…
• 作業フォルダの確認
–getwd()関数
•作業フォルダがわかったら,
「nagoyar11」フォルダの中身を
すべて作業フォルダ内に入れてください
外部データの読み込み
• read.table()関数
–データフレーム形式のテキストを読み込む
read.table("ファイル名", header=T / F , sep="¥t" / ",")
外部データの読み込み
• read.table()関数
–headerとは「見出し行」のこと
•Tならあり,Fならなし
–sepとは「区切り文字」のこと
• "¥t" ならタブ,"," ならカンマ
外部データの読み込み
• read.delim()関数
–タブで区切られたテキストを読み込む
–タブ区切りテキスト専用
–read.delim("ファイル名", header=T / F)
外部データの読み込み
• read.csv()関数
–カンマで区切られたテキストを
読み込む
–カンマ区切りテキスト専用
–read.csv("ファイル名", header=T / F)
外部データの読み込み
• ファイル選択ダイアログからの
読み込み
–“ファイル名”のところに…
file.choose()と入力
外部データの読み込み
• クリップボードからの読み込み
–“ファイル名”のところに…
•Win & Linux:"clipboard"
•Mac:pipe("pbpaste")
…と入力
演習1
• Excelからクリップボードにコピーした,見出し行のあるデータを読み込みましょう –Win & Linuxの場合:
> read.table("clipboard", header=T)
– Macの場合:
> read.table(pipe"pbpaste", header=T)
演習2
• ファイル選択ダイアログから選択
した見出し行のないタブ区切りテ
キストを読み込みましょう
> read.table(file.choose(), header=F, sep="¥t")
> read.delim(file.choose(), header=F)
演習3
• 作業フォルダ内の,見出し行のあるカンマ区切りテキストを読み込ん
で”karada2”という変数に代入してみましょう
> karada2 <- read.table(“karada.csv”, header=T, sep=“,”)
> karada2 <- read.csv("karada.csv", header=T)
せっかく代入したので
使ってみましょう
• table(karada2[,1]) –度数分布を確認する
• mean(karada2[,2]) –平均値を求める
• hist(karada2[,2]) –ヒストグラムを描く
行列の要素を取り出す
• 2行目を表示 : demo[2,]
• 2列目を表示 : demo[,2]
本日のメニュー
1. Rとは何か
2. Rの基本操作
3. 関数と変数はRの命
4. 行列を作ろう
5. あっという間に作図の巻
本日のメニュー
1. Rとは何か
2. Rの基本操作
3. 関数と変数はRの命
4. 行列を作ろう
5. あっという間に作図の巻
あっという間に作図の巻
• ヒストグラム
• 散布図
• 箱ひげ図
• さっそくやってみましょう
ヒストグラムの作図
• hist()関数
–身長の分布を確認しましょう
> height <- c(160, 160, 160, 165, 170, 170,
170, 170, 175, 175, 180, 185, 185, 185, 190)
> hist(height)
散布図の作図
• plot()関数 –TOEICスコアと英作文の語数の相関を確認しましょう
> score <- c(600, 500, 720, 430, 500, 550, 430, 500, 850, 400)
> words <- c(340, 190, 465, 170, 130, 225, 140, 310, 580, 120)
> plot(score, words)
箱ひげ図の作図
• boxplot()関数 –英作文の語数の幅を比較しましょう
> 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"))
作図まとめ
• hist()関数
• plot()関数
• boxplot()関数
• たったこれだけで美しい作図
References
天野修一(2013)「入門者講習」 Nagoya.R #10. 名古屋大学.
阪上辰也(2012)「入門者講習」 Nagoya.R #8. 名古屋大学. Retrieved from http://www.slideshare.net/sakaue/nagoyar-8
川口 勇作 [email protected]
長時間 お疲れ様でした