85
10分で分かる R言語入門 ver2 大城信晃 1298日土曜日

10分で分かるR言語入門ver2_0906

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: 10分で分かるR言語入門ver2_0906

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

大城信晃

12年9月8日土曜日

Page 2: 10分で分かるR言語入門ver2_0906

http://sekico.co/zaseki/55

セキココ

12年9月8日土曜日

Page 3: 10分で分かるR言語入門ver2_0906

アジェンダ

•自己紹介• Rって何• Rの使い方• Rの資料

12年9月8日土曜日

Page 4: 10分で分かるR言語入門ver2_0906

アジェンダ

•自己紹介• Rって何• Rの使い方• Rの資料

12年9月8日土曜日

Page 5: 10分で分かるR言語入門ver2_0906

自己紹介•名前:大城信晃• Twitter:doradora09•職業:Webエンジニア• R:勉強中•マイブーム:• 15分間集中法•出張用カクテル集め

12年9月8日土曜日

Page 6: 10分で分かるR言語入門ver2_0906

出張用カクテル•小型化により20本突破!•懇親会でどうぞ

12年9月8日土曜日

Page 7: 10分で分かるR言語入門ver2_0906

写真変えました!Before After

12年9月8日土曜日

Page 8: 10分で分かるR言語入門ver2_0906

写真変えました!Before After

12年9月8日土曜日

Page 9: 10分で分かるR言語入門ver2_0906

撮影者 ボブさん

twitter@bob3bob3

ありがとうございます!12年9月8日土曜日

Page 10: 10分で分かるR言語入門ver2_0906

ちなみに主催者の場合Before After

12年9月8日土曜日

Page 11: 10分で分かるR言語入門ver2_0906

こうなるBefore After

さすがボブさん!12年9月8日土曜日

Page 12: 10分で分かるR言語入門ver2_0906

では本題に

•自己紹介•Rって何• Rの使い方• Rの資料

12年9月8日土曜日

Page 13: 10分で分かるR言語入門ver2_0906

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

Wikipediaより引用

12年9月8日土曜日

Page 14: 10分で分かるR言語入門ver2_0906

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

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

12年9月8日土曜日

Page 15: 10分で分かるR言語入門ver2_0906

用途で分類

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

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

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

業務専用パッケージ

12年9月8日土曜日

Page 16: 10分で分かるR言語入門ver2_0906

特徴 大規模データ

価格 速度パッケージが豊富

△(メモリ依存)

無料 △

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

1万~ ×

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

C++ 高速開発コスト高

実装次第無料~数万 ◎

他言語との比較

12年9月8日土曜日

Page 17: 10分で分かるR言語入門ver2_0906

での使われ方

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

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

12年9月8日土曜日

Page 18: 10分で分かるR言語入門ver2_0906

こんな方におすすめ

•エクセルでは物足りない方•いろいろな統計手法を試してみたい方•プログラムも学びたい方

12年9月8日土曜日

Page 19: 10分で分かるR言語入門ver2_0906

アジェンダ

•自己紹介• Rって何•Rの使い方• Rの資料

12年9月8日土曜日

Page 21: 10分で分かるR言語入門ver2_0906

Rコンソール起動

12年9月8日土曜日

Page 22: 10分で分かるR言語入門ver2_0906

Rコンソール起動

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

12年9月8日土曜日

Page 23: 10分で分かるR言語入門ver2_0906

例:足し算引き算

3+5 = 810-7 = 3

12年9月8日土曜日

Page 24: 10分で分かるR言語入門ver2_0906

処理

解析の流れデータ

レポート12年9月8日土曜日

Page 25: 10分で分かるR言語入門ver2_0906

処理

解析の流れデータ

レポート

変数配列行列

12年9月8日土曜日

Page 26: 10分で分かるR言語入門ver2_0906

値を入れる箱> hako <- 10

> hako

[1] 10

変数

12年9月8日土曜日

Page 27: 10分で分かるR言語入門ver2_0906

値を入れる箱> hako <- 10

> hako

[1] 10

変数

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

12年9月8日土曜日

Page 28: 10分で分かるR言語入門ver2_0906

値を入れる箱> hako <- 10

> hako

[1] 10

変数

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

12年9月8日土曜日

Page 29: 10分で分かるR言語入門ver2_0906

値を入れる箱> hako <- 10

> hako

[1] 10

> hako * 2

[1] 20

変数

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

12年9月8日土曜日

Page 30: 10分で分かるR言語入門ver2_0906

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

> array

[1] 10 20 30

> array * 2

[1] 20 40 60

配列

12年9月8日土曜日

Page 31: 10分で分かるR言語入門ver2_0906

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

> array

[1] 10 20 30

> array * 2

[1] 20 40 60

3つの値を配列に格納

配列

12年9月8日土曜日

Page 32: 10分で分かるR言語入門ver2_0906

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

> array

[1] 10 20 30

> array * 2

[1] 20 40 60

値の確認

配列

12年9月8日土曜日

Page 33: 10分で分かるR言語入門ver2_0906

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

> array

[1] 10 20 30

> array * 2

[1] 20 40 60

処理はすべての値に適用される

配列

12年9月8日土曜日

Page 34: 10分で分かるR言語入門ver2_0906

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

[1] 10

> array[2]

[1] 20

> array[3]

[1] 30

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

配列

12年9月8日土曜日

Page 35: 10分で分かるR言語入門ver2_0906

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

[1] 10

> array[2]

[1] 20

> array[3]

[1] 30

配列

2個目

12年9月8日土曜日

Page 36: 10分で分かるR言語入門ver2_0906

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

[1] 10

> array[2]

[1] 20

> array[3]

[1] 30

配列

3個目

12年9月8日土曜日

Page 37: 10分で分かるR言語入門ver2_0906

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

40,50,60), 2, 3)

> array2

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

[1,] 10 30 50

[2,] 20 40 60

行列

12年9月8日土曜日

Page 38: 10分で分かるR言語入門ver2_0906

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という関数を利用して

作る

行列

12年9月8日土曜日

Page 39: 10分で分かるR言語入門ver2_0906

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列の行列

行列

12年9月8日土曜日

Page 40: 10分で分かるR言語入門ver2_0906

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

[1] 10

> array2[1,]

[1] 10 30 50

> array2[,1]

[1] 10 20

1行1列を指定

行列

12年9月8日土曜日

Page 41: 10分で分かるR言語入門ver2_0906

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

[1] 10

> array2[1,]

[1] 10 30 50

> array2[,1]

[1] 10 20

1行目全体を指定

行列

12年9月8日土曜日

Page 42: 10分で分かるR言語入門ver2_0906

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

[1] 10

> array2[1,]

[1] 10 30 50

> array2[,1]

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

行列

12年9月8日土曜日

Page 43: 10分で分かるR言語入門ver2_0906

処理

解析の流れデータ

レポート

変数配列行列

関数 行列自作関数

CSV

12年9月8日土曜日

Page 44: 10分で分かるR言語入門ver2_0906

処理の呼び出し関数

•関数は複数の処理をまとめたもの•関数名(引数) という書き方で呼び出す

12年9月8日土曜日

Page 45: 10分で分かるR言語入門ver2_0906

処理の呼び出し関数

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

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

12年9月8日土曜日

Page 46: 10分で分かるR言語入門ver2_0906

合計を求める関数

> array

[1] 10 20 30

> sum(array)

[1] 60

12年9月8日土曜日

Page 47: 10分で分かるR言語入門ver2_0906

合計を求める関数

> array

[1] 10 20 30

> sum(array)

[1] 60

先ほどの配列array

12年9月8日土曜日

Page 48: 10分で分かるR言語入門ver2_0906

合計を求める関数

> array

[1] 10 20 30

> sum(array)

[1] 60

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

12年9月8日土曜日

Page 49: 10分で分かるR言語入門ver2_0906

合計を求める関数

> array

[1] 10 20 30

> sum(array)

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

12年9月8日土曜日

Page 50: 10分で分かるR言語入門ver2_0906

合計を求める関数> array2

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

[1,] 10 30 50

[2,] 20 40 60

> sum(array2)

[1] 210

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

12年9月8日土曜日

Page 51: 10分で分かるR言語入門ver2_0906

合計を求める> array2

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

[1,] 10 30 50

[2,] 20 40 60

> sum(array2)

[1] 210

合計値が表示される

関数

12年9月8日土曜日

Page 52: 10分で分かるR言語入門ver2_0906

結果を格納関数

> ret <- sum(array2)

> ret

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

変数

12年9月8日土曜日

Page 53: 10分で分かるR言語入門ver2_0906

結果を格納関数

> ret <- sum(array2)

> ret

[1] 210 合計値の確認

変数

12年9月8日土曜日

Page 54: 10分で分かるR言語入門ver2_0906

処理

解析の流れデータ

レポート

変数配列行列

関数 行列自作関数

CSV

12年9月8日土曜日

Page 55: 10分で分かるR言語入門ver2_0906

CSV読み込み

•変数に毎回データを手入力するのは面倒• CSVファイルを読み込む関数がある•エクセル等の外部データ連携に利用

関数CSV

12年9月8日土曜日

Page 56: 10分で分かるR言語入門ver2_0906

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

> hawks

height salary

1 173 17000

2 178 14000

3 180 9000

CSV読み込み

12年9月8日土曜日

Page 57: 10分で分かるR言語入門ver2_0906

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

> hawks

height salary

1 173 17000

2 178 14000

3 180 9000

read.csv関数にCSVファイルを

渡す

CSV読み込み

12年9月8日土曜日

Page 58: 10分で分かるR言語入門ver2_0906

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

> hawks

height salary

1 173 17000

2 178 14000

3 180 9000

CSVファイルの取り込みが確認できる

12年9月8日土曜日

Page 59: 10分で分かるR言語入門ver2_0906

処理

解析の流れデータ

レポート

変数配列行列

関数 行列自作関数

CSV

12年9月8日土曜日

Page 60: 10分で分かるR言語入門ver2_0906

自分で関数を作る

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

自作関数

12年9月8日土曜日

Page 61: 10分で分かるR言語入門ver2_0906

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

> varp <- function(x) {

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

retsult

}

> varp(array)

[1] 66.66667

12年9月8日土曜日

Page 62: 10分で分かるR言語入門ver2_0906

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

> varp <- function(x) {

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

retsult

}

> varp(array)

[1] 66.66667

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

}

関数の定義

12年9月8日土曜日

Page 63: 10分で分かるR言語入門ver2_0906

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

> varp <- function(x) {

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

retsult

}

> varp(array)

[1] 66.66667

定義された処理が実行される(不偏分散の算出)

12年9月8日土曜日

Page 64: 10分で分かるR言語入門ver2_0906

処理

解析の流れデータ

レポート

変数配列行列

関数 行列

パッケージ

自作関数

作図

CSV

12年9月8日土曜日

Page 65: 10分で分かるR言語入門ver2_0906

関数をまとめたもの

•複数の関数をまとめられる•自作のパッケージも公開できる•外部のパッケージも利用可能

パッケージ

12年9月8日土曜日

Page 66: 10分で分かるR言語入門ver2_0906

外部パッケージ

•外部パッケージはCRANに集約•すべて無料でダウンロードできる

パッケージ

12年9月8日土曜日

Page 67: 10分で分かるR言語入門ver2_0906

> install.packages(“ggplot2”)

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

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

12年9月8日土曜日

Page 68: 10分で分かるR言語入門ver2_0906

> install.packages(“ggplot2”)

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

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

12年9月8日土曜日

Page 69: 10分で分かるR言語入門ver2_0906

a <- 1:10

b <- a^2

qplot(a,b)新たに

qplot関数が使える

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

12年9月8日土曜日

Page 70: 10分で分かるR言語入門ver2_0906

a <- 1:10

b <- a^2

qplot(a,b)

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

12年9月8日土曜日

Page 71: 10分で分かるR言語入門ver2_0906

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

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

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

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

・・・ ・・・ ・・・

12年9月8日土曜日

Page 72: 10分で分かるR言語入門ver2_0906

処理

一連の作業がすべて可能データ

レポート12年9月8日土曜日

Page 73: 10分で分かるR言語入門ver2_0906

アジェンダ

•自己紹介• Rって何• Rの使い方•Rの資料

12年9月8日土曜日

Page 74: 10分で分かるR言語入門ver2_0906

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

12年9月8日土曜日

Page 75: 10分で分かるR言語入門ver2_0906

seekR

http://seekr.jp/

• R言語用検索エンジン

12年9月8日土曜日

Page 76: 10分で分かるR言語入門ver2_0906

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

12年9月8日土曜日

Page 77: 10分で分かるR言語入門ver2_0906

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

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

12年9月8日土曜日

Page 78: 10分で分かるR言語入門ver2_0906

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

12年9月8日土曜日

Page 79: 10分で分かるR言語入門ver2_0906

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

12年9月8日土曜日

Page 80: 10分で分かるR言語入門ver2_0906

まとめ

•Rは無料の統計解析ソフト•パッケージが豊富•データ解析からレポートまで利用可能

12年9月8日土曜日

Page 81: 10分で分かるR言語入門ver2_0906

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

12年9月8日土曜日

Page 82: 10分で分かるR言語入門ver2_0906

質疑応答

12年9月8日土曜日

Page 83: 10分で分かるR言語入門ver2_0906

予備資料

12年9月8日土曜日

Page 84: 10分で分かるR言語入門ver2_0906

連携も可能

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

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

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

業務専用パッケージ

.C()関数

RExcel

12年9月8日土曜日

Page 85: 10分で分かるR言語入門ver2_0906

イケメンツールRStudio

12年9月8日土曜日