10分で分かるr言語入門ver2.2 13 0223

90
10分で分かる R言語入門 ver2.2 大城信晃 2013/02/23 TokyoR#29 13223日土曜日

Upload: nobuaki-oshiro

Post on 19-Jun-2015

1.900 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: 10分で分かるr言語入門ver2.2 13 0223

10分で分かるR言語入門 ver2.2

大城信晃2013/02/23 TokyoR#29

13年2月23日土曜日

Page 2: 10分で分かるr言語入門ver2.2 13 0223

開催情報ATND http://atnd.org/events/36417

セキココhttp://sekico.co/zaseki/96

13年2月23日土曜日

Page 3: 10分で分かるr言語入門ver2.2 13 0223

アジェンダ

•自己紹介とお知らせ• Rって何• Rの使い方• Rの資料

13年2月23日土曜日

Page 4: 10分で分かるr言語入門ver2.2 13 0223

アジェンダ

•自己紹介とお知らせ• Rって何• Rの使い方• Rの資料

13年2月23日土曜日

Page 5: 10分で分かるr言語入門ver2.2 13 0223

自己紹介• 名前:大城信晃• Twitter:doradora09• 職業:Webエンジニア• R:勉強中• マイブーム:• カクテル作り• カメラが気になる

13年2月23日土曜日

Page 6: 10分で分かるr言語入門ver2.2 13 0223

自己紹介• 名前:大城信晃• Twitter:doradora09• 職業:Webエンジニア• R:勉強中• マイブーム:• カクテル作り -> 冬場はお休み• カメラが気になる

13年2月23日土曜日

Page 7: 10分で分かるr言語入門ver2.2 13 0223

自己紹介• 名前:大城信晃• Twitter:doradora09• 職業:Webエンジニア• R:勉強中• マイブーム:• カクテル作り -> 冬場はお休み• カメラが気になる -> 買いました!

13年2月23日土曜日

Page 8: 10分で分かるr言語入門ver2.2 13 0223

カメラ買いました!

•Panasonic GF3(手前)• PENTAX-Kr (奥)

13年2月23日土曜日

Page 9: 10分で分かるr言語入門ver2.2 13 0223

風景、夜景

13年2月23日土曜日

Page 10: 10分で分かるr言語入門ver2.2 13 0223

料理、お酒

13年2月23日土曜日

Page 11: 10分で分かるr言語入門ver2.2 13 0223

プリキュアにハマるおっさん達

13年2月23日土曜日

Page 12: 10分で分かるr言語入門ver2.2 13 0223

13年2月23日土曜日

Page 13: 10分で分かるr言語入門ver2.2 13 0223

自己紹介• 名前:大城信晃• Twitter:doradora09• 職業:Webエンジニア• R:勉強中• マイブーム:• カクテル作り -> 冬場はお休み• カメラが気になる -> 買いました!• 軽登山 <- New!!

13年2月23日土曜日

Page 14: 10分で分かるr言語入門ver2.2 13 0223

では本題に

•自己紹介とお知らせ•Rって何• Rの使い方• Rの資料

13年2月23日土曜日

Page 15: 10分で分かるr言語入門ver2.2 13 0223

R言語(アールげんご)は、オープンソースでフリーソフトウェアの統計解析向けプログラミング言語、及びその開発実行環境である。

Wikipediaより引用

13年2月23日土曜日

Page 16: 10分で分かるr言語入門ver2.2 13 0223

オープンソース 個人が開発に参加できるフリーソフトウェア タダで使える統計解析向け 関連パッケージが豊富

プログラミング言語 ロジックが記述可能開発実行環境 Rコンソール

13年2月23日土曜日

Page 17: 10分で分かるr言語入門ver2.2 13 0223

こんな方におすすめ

•色々な統計手法を試してみたい方•エクセルでは物足りない方

13年2月23日土曜日

Page 18: 10分で分かるr言語入門ver2.2 13 0223

での使われ方

•プロトタイプをRで作って検証• PythonやC++で実装

GoogleとFacebookではRをどうやって使っているのか? http://pracmper.blogspot.jp/2010/01/googlefacebookr.html

13年2月23日土曜日

Page 19: 10分で分かるr言語入門ver2.2 13 0223

用途で分類

プロトタイピング実務利用

プログラミング言語寄り

直感的な操作(GUI)

業務専用パッケージ

13年2月23日土曜日

Page 20: 10分で分かるr言語入門ver2.2 13 0223

用途で分類

プロトタイピング実務利用

プログラミング言語寄り

直感的な操作(GUI)

業務専用パッケージ

モデル検証/実装

統計に特化

13年2月23日土曜日

Page 21: 10分で分かるr言語入門ver2.2 13 0223

特徴 価格 大規模データ 速度パッケージが豊富 無料 △

(メモリ依存)△

エクセル 直感的 1万~ ×(約100万行)

×

SAS 大規模データ処理 数十万~ ○ ○

C++ 高速開発コスト高

無料~数万

実装次第 ◎

他言語との比較

13年2月23日土曜日

Page 22: 10分で分かるr言語入門ver2.2 13 0223

アジェンダ

•自己紹介とお知らせ• Rって何•Rの使い方• Rの資料

13年2月23日土曜日

Page 24: 10分で分かるr言語入門ver2.2 13 0223

Rコンソール起動

13年2月23日土曜日

Page 25: 10分で分かるr言語入門ver2.2 13 0223

Rコンソール起動

ココに処理を記述していく

13年2月23日土曜日

Page 26: 10分で分かるr言語入門ver2.2 13 0223

処理の記述

3+5 = 810-7 = 3

13年2月23日土曜日

Page 27: 10分で分かるr言語入門ver2.2 13 0223

処理

解析の流れで説明データ

レポート13年2月23日土曜日

Page 28: 10分で分かるr言語入門ver2.2 13 0223

処理

解析の流れデータ

レポート

変数配列行列

13年2月23日土曜日

Page 29: 10分で分かるr言語入門ver2.2 13 0223

値を入れる箱> hako <- 10

> hako

[1] 10

変数

13年2月23日土曜日

Page 30: 10分で分かるr言語入門ver2.2 13 0223

値を入れる箱> hako <- 10

> hako

[1] 10

変数

変数に値を入れる左矢印のイメージ

13年2月23日土曜日

Page 31: 10分で分かるr言語入門ver2.2 13 0223

値を入れる箱> hako <- 10

> hako

[1] 10

変数

変数名を打つと中の値が出る

13年2月23日土曜日

Page 32: 10分で分かるr言語入門ver2.2 13 0223

値を入れる箱> hako <- 10

> hako

[1] 10

> hako * 2

[1] 20

変数

変数に対して処理(かけ算)

13年2月23日土曜日

Page 33: 10分で分かるr言語入門ver2.2 13 0223

複数の値をまとめる> array <- c(10,20,30)

> array

[1] 10 20 30

> array * 2

[1] 20 40 60

配列

13年2月23日土曜日

Page 34: 10分で分かるr言語入門ver2.2 13 0223

複数の値をまとめる> array <- c(10,20,30)

> array

[1] 10 20 30

> array * 2

[1] 20 40 60

3つの値を配列に格納

配列

13年2月23日土曜日

Page 35: 10分で分かるr言語入門ver2.2 13 0223

複数の値をまとめる> array <- c(10,20,30)

> array

[1] 10 20 30

> array * 2

[1] 20 40 60

値の確認

配列

13年2月23日土曜日

Page 36: 10分で分かるr言語入門ver2.2 13 0223

複数の値をまとめる> array <- c(10,20,30)

> array

[1] 10 20 30

> array * 2

[1] 20 40 60

処理は配列全体に適用される

配列

13年2月23日土曜日

Page 37: 10分で分かるr言語入門ver2.2 13 0223

複数の値をまとめる> array[1]

[1] 10

> array[2]

[1] 20

> array[3]

[1] 30

配列[番号]で1個ずつ値を取り出せる

配列

13年2月23日土曜日

Page 38: 10分で分かるr言語入門ver2.2 13 0223

複数の値をまとめる> array[1]

[1] 10

> array[2]

[1] 20

> array[3]

[1] 30

配列

2個目

13年2月23日土曜日

Page 39: 10分で分かるr言語入門ver2.2 13 0223

複数の値をまとめる> array[1]

[1] 10

> array[2]

[1] 20

> array[3]

[1] 30

配列

3個目

13年2月23日土曜日

Page 40: 10分で分かるr言語入門ver2.2 13 0223

2次元の配列> array2 <- matrix(c(10,20,30,  

40,50,60), 2, 3)

> array2

[,1] [,2] [,3]

[1,] 10 30 50

[2,] 20 40 60

行列

13年2月23日土曜日

Page 41: 10分で分かるr言語入門ver2.2 13 0223

2次元の配列> array2 <- matrix(c(10,20,30,  

40,50,60), 2, 3)

> array2

[,1] [,2] [,3]

[1,] 10 30 50

[2,] 20 40 60

matrixという関数を利用して

作る

行列

13年2月23日土曜日

Page 42: 10分で分かるr言語入門ver2.2 13 0223

2次元の配列> array2 <- matrix(c(10,20,30,  

40,50,60), 2, 3)

> array2

[,1] [,2] [,3]

[1,] 10 30 50

[2,] 20 40 60

2行3列の行列

行列

13年2月23日土曜日

Page 43: 10分で分かるr言語入門ver2.2 13 0223

各要素の指定> array2[1,1]

[1] 10

> array2[1,]

[1] 10 30 50

> array2[,1]

[1] 10 20

1行1列を指定

行列

13年2月23日土曜日

Page 44: 10分で分かるr言語入門ver2.2 13 0223

各要素の指定> array2[1,1]

[1] 10

> array2[1,]

[1] 10 30 50

> array2[,1]

[1] 10 20

1行目全体を指定

行列

13年2月23日土曜日

Page 45: 10分で分かるr言語入門ver2.2 13 0223

各要素の指定> array2[1,1]

[1] 10

> array2[1,]

[1] 10 30 50

> array2[,1]

[1] 10 20 1列目全体を指定

行列

13年2月23日土曜日

Page 46: 10分で分かるr言語入門ver2.2 13 0223

処理

解析の流れデータ

レポート

変数配列行列

関数 行列自作関数

CSV

13年2月23日土曜日

Page 47: 10分で分かるr言語入門ver2.2 13 0223

処理の呼び出し関数

•関数は複数の処理をまとめたもの•関数名(引数) という書き方で呼び出す•様々な計算が手軽に実行できる

13年2月23日土曜日

Page 48: 10分で分かるr言語入門ver2.2 13 0223

処理の呼び出し関数

目的 関数名と書式 使い方データの結合 C(データ) C(“C”,”B”,”B”)合計 sum(データ) sum(10,20,30)

個数を求める length(データ) length(array)平均 mean(データ) mean(array)標準偏差 sd(データ) sd(array)・・・ ・・・ ・・・

13年2月23日土曜日

Page 49: 10分で分かるr言語入門ver2.2 13 0223

合計を求める関数

> array

[1] 10 20 30

> sum(array)

[1] 60

13年2月23日土曜日

Page 50: 10分で分かるr言語入門ver2.2 13 0223

合計を求める関数

> array

[1] 10 20 30

> sum(array)

[1] 60

先ほどの配列array

13年2月23日土曜日

Page 51: 10分で分かるr言語入門ver2.2 13 0223

合計を求める関数

> array

[1] 10 20 30

> sum(array)

[1] 60

関数名(引数)で処理呼び出し

13年2月23日土曜日

Page 52: 10分で分かるr言語入門ver2.2 13 0223

合計を求める関数

> array

[1] 10 20 30

> sum(array)

[1] 60 処理結果が出力される

13年2月23日土曜日

Page 53: 10分で分かるr言語入門ver2.2 13 0223

合計を求める関数> array2

[,1] [,2] [,3]

[1,] 10 30 50

[2,] 20 40 60

> sum(array2)

[1] 210

先ほどの行列を渡した場合

13年2月23日土曜日

Page 54: 10分で分かるr言語入門ver2.2 13 0223

合計を求める> array2

[,1] [,2] [,3]

[1,] 10 30 50

[2,] 20 40 60

> sum(array2)

[1] 210

合計値が表示される

関数

13年2月23日土曜日

Page 55: 10分で分かるr言語入門ver2.2 13 0223

結果を格納関数

> ret <- sum(array2)

> ret

[1] 210 処理結果を変数に格納

変数

13年2月23日土曜日

Page 56: 10分で分かるr言語入門ver2.2 13 0223

結果を格納関数

> ret <- sum(array2)

> ret

[1] 210 合計値の確認

変数

13年2月23日土曜日

Page 57: 10分で分かるr言語入門ver2.2 13 0223

処理

解析の流れデータ

レポート

変数配列行列

関数 行列自作関数

CSV

13年2月23日土曜日

Page 58: 10分で分かるr言語入門ver2.2 13 0223

CSV読み込み

•変数に毎回データを手入力するのは面倒• CSV形式(カンマ区切り)ファイルを読み込む関数がある

• CSV形式であればエクセル等と相互にデータをやりとり出来る

関数CSV

13年2月23日土曜日

Page 59: 10分で分かるr言語入門ver2.2 13 0223

関数CSV> hawks <- read.csv("hawks.csv")

> hawks

height salary

1 173 17000

2 178 14000

3 180 9000

CSV読み込み

13年2月23日土曜日

Page 60: 10分で分かるr言語入門ver2.2 13 0223

関数CSV> hawks <- read.csv("hawks.csv")

> hawks

height salary

1 173 17000

2 178 14000

3 180 9000

read.csv関数にhawks.csvというCSVファイルを

渡して変数に代入

CSV読み込み

13年2月23日土曜日

Page 61: 10分で分かるr言語入門ver2.2 13 0223

CSV読み込み関数CSV> hawks <- read.csv("hawks.csv")

> hawks

height salary

1 173 17000

2 178 14000

3 180 9000

CSVファイルの変数への読み込みが確認できる

13年2月23日土曜日

Page 62: 10分で分かるr言語入門ver2.2 13 0223

処理

解析の流れデータ

レポート

変数配列行列

関数 行列自作関数

CSV

13年2月23日土曜日

Page 63: 10分で分かるr言語入門ver2.2 13 0223

自分で関数を作る

•関数は自分で定義することも可能•繰り返し使う処理は自作関数にする

自作関数

13年2月23日土曜日

Page 64: 10分で分かるr言語入門ver2.2 13 0223

自分で関数を作る自作関数

> varp <- function(x) {

retsult <- var(x) * (length(x) - 1) / length(x)

retsult

}

> varp(array)

[1] 66.66667

13年2月23日土曜日

Page 65: 10分で分かるr言語入門ver2.2 13 0223

自分で関数を作る自作関数

> varp <- function(x) {

retsult <- var(x) * (length(x) - 1) / length(x)

retsult

}

> varp(array)

[1] 66.66667

関数名 <- function (引数) { 処理

}

関数の定義

13年2月23日土曜日

Page 66: 10分で分かるr言語入門ver2.2 13 0223

自分で関数を作る自作関数

> varp <- function(x) {

retsult <- var(x) * (length(x) - 1) / length(x)

retsult

}

> varp(array)

[1] 66.66667

関数名 <- function (引数) { 処理

}

関数名

13年2月23日土曜日

Page 67: 10分で分かるr言語入門ver2.2 13 0223

自分で関数を作る自作関数

> varp <- function(x) {

retsult <- var(x) * (length(x) - 1) / length(x)

retsult

}

> varp(array)

[1] 66.66667

関数名 <- function (引数) { 処理

}

引数(変数を渡す)

13年2月23日土曜日

Page 68: 10分で分かるr言語入門ver2.2 13 0223

自分で関数を作る自作関数

> varp <- function(x) {

retsult <- var(x) * (length(x) - 1) / length(x)

retsult

}

> varp(array)

[1] 66.66667

関数名 <- function (引数) { 処理

}

処理をまとめる

13年2月23日土曜日

Page 69: 10分で分かるr言語入門ver2.2 13 0223

自分で関数を作る自作関数

> varp <- function(x) {

retsult <- var(x) * (length(x) - 1) / length(x)

retsult

}

> varp(array)

[1] 66.66667

関数にまとめられた処理が実行される(標本分散の算出)

13年2月23日土曜日

Page 70: 10分で分かるr言語入門ver2.2 13 0223

処理

解析の流れデータ

レポート

変数配列行列

関数 行列

パッケージ

自作関数

作図

CSV

13年2月23日土曜日

Page 71: 10分で分かるr言語入門ver2.2 13 0223

関数をまとめたもの

•複数の関数をまとめたもの•様々なパッケージがCRANというシステムにて無料公開されている

•自作のパッケージも公開できる

パッケージ

13年2月23日土曜日

Page 72: 10分で分かるr言語入門ver2.2 13 0223

> install.packages(“ggplot2”)

> library("ggplot2") CRANからパッケージダウンロード&インストール

外部パッケージパッケージ作図

13年2月23日土曜日

Page 73: 10分で分かるr言語入門ver2.2 13 0223

> install.packages(“ggplot2”)

> library("ggplot2") パッケージをロード

外部パッケージパッケージ作図

13年2月23日土曜日

Page 74: 10分で分かるr言語入門ver2.2 13 0223

a <- 1:10

b <- a^2

qplot(a,b)

新たにqplot関数が使えるようになった

外部パッケージパッケージ作図

13年2月23日土曜日

Page 75: 10分で分かるr言語入門ver2.2 13 0223

a <- 1:10

b <- a^2

qplot(a,b)

qplot実行結果パッケージ作図

13年2月23日土曜日

Page 76: 10分で分かるr言語入門ver2.2 13 0223

その他作図関数パッケージ作図

•標準の関数でも作図可能目的 関数名と書式 使い方

ヒストグラム hist(データ) hist(array)

散布図 plot(x, y) plot(a,b)

・・・ ・・・ ・・・

13年2月23日土曜日

Page 77: 10分で分かるr言語入門ver2.2 13 0223

処理

一連の作業が実施可能データ

レポート13年2月23日土曜日

Page 78: 10分で分かるr言語入門ver2.2 13 0223

アジェンダ

•自己紹介とお知らせ• Rって何• Rの使い方•Rの資料

13年2月23日土曜日

Page 79: 10分で分かるr言語入門ver2.2 13 0223

CRAN Task Viws•Rには2000以上パッケージがある•用途別におすすめパッケージを紹介http://cran.r-project.org/web/views/

13年2月23日土曜日

Page 80: 10分で分かるr言語入門ver2.2 13 0223

seekR

http://seekr.jp/

• R言語用検索エンジン

13年2月23日土曜日

Page 81: 10分で分かるr言語入門ver2.2 13 0223

RjpWiki• R言語のWikihttp://www.okada.jp.org/RWiki/

13年2月23日土曜日

Page 82: 10分で分かるr言語入門ver2.2 13 0223

Rコミュニティ発表資料http://lab.sakaue.info/wiki.cgi/JapanR2010?page=FrontPage「勉強会発表内容一覧」のリンクから

• Tokyo.R, Nagoya.R, Tukuba.Rのアーカイブ

13年2月23日土曜日

Page 83: 10分で分かるr言語入門ver2.2 13 0223

RとSQLの対応付け•SQLが分かる人は一読の価値有りhttp://d.hatena.ne.jp/a_bicky/20110529/1306667230

13年2月23日土曜日

Page 84: 10分で分かるr言語入門ver2.2 13 0223

R-Chart• Rでの作図のサンプルが多数あるhttp://www.r-chart.com/

13年2月23日土曜日

Page 85: 10分で分かるr言語入門ver2.2 13 0223

まとめ

•Rは無料の統計解析ソフトでパッケージが豊富

•データ解析からレポートまで利用可能•Web上の資料も充実してます

13年2月23日土曜日

Page 86: 10分で分かるr言語入門ver2.2 13 0223

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

13年2月23日土曜日

Page 87: 10分で分かるr言語入門ver2.2 13 0223

質疑応答

13年2月23日土曜日

Page 88: 10分で分かるr言語入門ver2.2 13 0223

予備資料

13年2月23日土曜日

Page 89: 10分で分かるr言語入門ver2.2 13 0223

連携も可能

プロトタイピング実務利用

プログラミング言語寄り(カスタマイズ可能)

直感的な操作(用途は限定)

業務専用パッケージ

.C()関数

RExcel

13年2月23日土曜日

Page 90: 10分で分かるr言語入門ver2.2 13 0223

イケメンツールRStudio

13年2月23日土曜日