105
10分で分かる R言語入門 ver2.5 大城信晃 2013/11/09 TokyoR#35 13119日土曜日

10分で分かるr言語入門ver2.5

Embed Size (px)

DESCRIPTION

第35回R勉強会@東京(#TokyoR) ATND: http://atnd.org/events/45114

Citation preview

Page 1: 10分で分かるr言語入門ver2.5

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

大城信晃2013/11/09 TokyoR#35

13年11月9日土曜日

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

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

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

13年11月9日土曜日

Page 3: 10分で分かるr言語入門ver2.5

お知らせ

Rユーザー会 (11/29 - 30 @統数研)http://prcs.ism.ac.jp/useRjp/

Japan.R (12/7 @ヤフー) http://atnd.org/events/44682

13年11月9日土曜日

Page 4: 10分で分かるr言語入門ver2.5

本セッションの役割

• R初心者のために基礎を説明

•本勉強会の以降の他セッションの前提知識を得てもらう

13年11月9日土曜日

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

アジェンダ

•自己紹介• Rって何

• Rの使い方

• Rの資料

13年11月9日土曜日

Page 6: 10分で分かるr言語入門ver2.5

自己紹介• 名前:大城信晃

• Twitter:doradora09

• 職業:データマイニングエンジニア

• R:勉強中。いつか業務で使いたい

• マイブーム:

• カクテル作り

• カメラ

13年11月9日土曜日

Page 7: 10分で分かるr言語入門ver2.5

これまで/現在の仕事•ショッピング関連

•商品/製品DB 保守開発

•データ分析関連

•行動ターゲティング

•データを使って顧客像を探る

13年11月9日土曜日

Page 8: 10分で分かるr言語入門ver2.5

TokyoRでは

•第1回から主に運営側で参加

•初心者セッション

•最近は懇親会でピザ注文したりお酒作ったりしてます

13年11月9日土曜日

Page 9: 10分で分かるr言語入門ver2.5

お菓子もどうぞ!

13年11月9日土曜日

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

本日のお酒

13年11月9日土曜日

Page 11: 10分で分かるr言語入門ver2.5

本日のお酒

ジョニーウォーカー

13年11月9日土曜日

Page 12: 10分で分かるr言語入門ver2.5

本日のお酒

• ジョニー・ウォーカー (Johnnie Walker) はスコッチ・ウイスキーの世界的に有名なブランドで、スコットランド・キルマーノック (Kilmarnock)の発祥である。

• ジョニー・ウォーカーはスコッチの銘柄としては世界で一番広まっている。200以上の国々で年間1億2000万本売れている。

13年11月9日土曜日

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

種類

13年11月9日土曜日

Page 14: 10分で分かるr言語入門ver2.5

本日のお酒

13年11月9日土曜日

Page 15: 10分で分かるr言語入門ver2.5

ジョニ青!

13年11月9日土曜日

Page 16: 10分で分かるr言語入門ver2.5

懇親会も是非ご参加下さい!

13年11月9日土曜日

Page 17: 10分で分かるr言語入門ver2.5

では本題に

•自己紹介とお知らせ

•Rって何• Rの使い方

• Rの資料

13年11月9日土曜日

Page 18: 10分で分かるr言語入門ver2.5

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

Wikipediaより引用

13年11月9日土曜日

Page 19: 10分で分かるr言語入門ver2.5

での使われ方

•プロトタイプをRで作って検証

• PythonやC++で実装

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

13年11月9日土曜日

Page 20: 10分で分かるr言語入門ver2.5

用途で分類

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

コマンドライン形式(CUI)

画面上で操作(GUI)

業務専用ソフト

実装

13年11月9日土曜日

Page 21: 10分で分かるr言語入門ver2.5

特徴 価格 大規模データ 速度統計特化 無料 △

(メモリ依存)△

SAS/SPSS 統計特化 数十万~ ○ ○

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

×

C++ 高速だが開発コスト高

無料~数万

実装次第 ◎

Python スクリプト言語

無料 実装次第 ○

他言語との比較

13年11月9日土曜日

Page 22: 10分で分かるr言語入門ver2.5

こんな方におすすめ

•色々な統計手法を試してみたい方

•エクセルでは物足りない方

•まずは無料で始めてみたい方

13年11月9日土曜日

Page 23: 10分で分かるr言語入門ver2.5

あると望ましいスキル

•プログラミングの基礎

•統計学の知識

• (英語力)

13年11月9日土曜日

Page 24: 10分で分かるr言語入門ver2.5

アジェンダ

•自己紹介とお知らせ

• Rって何

•Rの使い方• Rの資料

13年11月9日土曜日

Page 26: 10分で分かるr言語入門ver2.5

Rコンソール起動

13年11月9日土曜日

Page 27: 10分で分かるr言語入門ver2.5

Rコンソール起動

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

13年11月9日土曜日

Page 28: 10分で分かるr言語入門ver2.5

処理の記述

3+5 = 810-7 = 3

13年11月9日土曜日

Page 29: 10分で分かるr言語入門ver2.5

処理

解析の流れデータ

レポート13年11月9日土曜日

Page 30: 10分で分かるr言語入門ver2.5

処理

解析の流れデータ

レポート

変数配列行列

関数

パッケージ

自作関数

作図CSVデータフレーム

13年11月9日土曜日

Page 31: 10分で分かるr言語入門ver2.5

処理

解析の流れデータ

レポート

変数配列行列

データフレーム

関数

パッケージ

自作関数

作図CSV13年11月9日土曜日

Page 32: 10分で分かるr言語入門ver2.5

ここでは

• Rを使ったデータの表現/操作方法について説明します

13年11月9日土曜日

Page 33: 10分で分かるr言語入門ver2.5

値を入れる箱> hako <- 10

> hako

[1] 10

> hako * 2

[1] 20

変数

13年11月9日土曜日

Page 34: 10分で分かるr言語入門ver2.5

値を入れる箱> hako <- 10

> hako

[1] 10

> hako * 2

[1] 20

変数

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

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

13年11月9日土曜日

Page 35: 10分で分かるr言語入門ver2.5

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

> array

[1] 10 20 30

> array * 2

[1] 20 40 60

配列

13年11月9日土曜日

Page 36: 10分で分かるr言語入門ver2.5

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

> array

[1] 10 20 30

> array * 2

[1] 20 40 60

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

配列

3つの値を配列に格納

13年11月9日土曜日

Page 37: 10分で分かるr言語入門ver2.5

各要素へのアクセス> array[1]

[1] 10

> array[2]

[1] 20

> array[3]

[1] 30

配列

13年11月9日土曜日

Page 38: 10分で分かるr言語入門ver2.5

各要素へのアクセス> array[1]

[1] 10

> array[2]

[1] 20

> array[3]

[1] 30

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

配列

2個目

3個目

13年11月9日土曜日

Page 39: 10分で分かるr言語入門ver2.5

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年11月9日土曜日

Page 40: 10分で分かるr言語入門ver2.5

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

作る

行列

2行3列の行列

13年11月9日土曜日

Page 42: 10分で分かるr言語入門ver2.5

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

[1] 10

> array2[1,]

[1] 10 30 50

> array2[,1]

[1] 10 20

行列

13年11月9日土曜日

Page 43: 10分で分かるr言語入門ver2.5

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

[1] 10

> array2[1,]

[1] 10 30 50

> array2[,1]

[1] 10 20

1行1列を指定

行列

1行目全体を指定

1列目全体を指定

13年11月9日土曜日

Page 44: 10分で分かるr言語入門ver2.5

複数の型を持てる> sex <- c("F","F","M","M","M") #性別

> height <- c(158,162,177,173,166) #身長

> weight <- c(51,55,72,57,64) #体重

> ( x <- data.frame(SEX=sex, HEIGHT=height, WEIGHT=weight) )

SEX HEIGHT WEIGHT

1 F 158 51

2 F 162 55

3 M 177 72

4 M 173 57

5 M 166 64

データフレーム

13年11月9日土曜日

Page 45: 10分で分かるr言語入門ver2.5

複数の型を持てる> sex <- c("F","F","M","M","M") #性別

> height <- c(158,162,177,173,166) #身長

> weight <- c(51,55,72,57,64) #体重

> ( x <- data.frame(SEX=sex, HEIGHT=height, WEIGHT=weight) )

SEX HEIGHT WEIGHT

1 F 158 51

2 F 162 55

3 M 177 72

4 M 173 57

5 M 166 64

性別(bool型)身長、体重(数値型)

データフレーム

data.frame関数でセット

13年11月9日土曜日

Page 46: 10分で分かるr言語入門ver2.5

要素の指定> x$HEIGHT

[1] 158 162 177 173 166

> x$HEIGHT[1]

[1] 158

> x$HEIGHT[1:3]

[1] 158 162 177

$で身長(HEIGHT)を全指定

データフレーム

身長1つめだけ

身長1-3番目

13年11月9日土曜日

Page 47: 10分で分かるr言語入門ver2.5

ここまで•変数:1種類の型の値を1つ入れる箱(スカラー)

•配列:1種類の型の値を複数入れる箱(ベクトル)

•行列:1種類の型の複数ベクトルをまとめて表現

•データフレーム:複数の型のベクトルをまとめて表現

13年11月9日土曜日

Page 48: 10分で分かるr言語入門ver2.5

CSV

処理

解析の流れデータ

レポート

変数配列行列

関数

自作関数データフレーム

パッケージ

作図13年11月9日土曜日

Page 49: 10分で分かるr言語入門ver2.5

ここでは

•関数の利用/作成方法

• CSVによるデータ読み込み

13年11月9日土曜日

Page 50: 10分で分かるr言語入門ver2.5

処理の呼び出し関数

•関数は複数の処理をまとめたもの

•様々な計算が手軽に実行できる

13年11月9日土曜日

Page 51: 10分で分かるr言語入門ver2.5

処理の呼び出し関数

目的 関数名と書式データの結合 C(データ)

合計 sum(データ)個数を求める length(データ)

平均 mean(データ)標準偏差 sd(データ)・・・ ・・・

13年11月9日土曜日

Page 52: 10分で分かるr言語入門ver2.5

合計を求める関数

> array

[1] 10 20 30

> sum(array)

[1] 60

13年11月9日土曜日

Page 53: 10分で分かるr言語入門ver2.5

合計を求める関数

> array

[1] 10 20 30

> sum(array)

[1] 60

処理結果が出力される

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

先ほどの配列

13年11月9日土曜日

Page 54: 10分で分かるr言語入門ver2.5

行列も足せる> array2

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

[1,] 10 30 50

[2,] 20 40 60

> sum(array2)

[1] 210

関数

13年11月9日土曜日

Page 55: 10分で分かるr言語入門ver2.5

行列も足せる> array2

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

[1,] 10 30 50

[2,] 20 40 60

> sum(array2)

[1] 210 合計値が表示される

関数

先ほどの行列array2

13年11月9日土曜日

Page 56: 10分で分かるr言語入門ver2.5

結果を格納関数

> ret <- sum(array2)

> ret

[1] 210

変数

13年11月9日土曜日

Page 57: 10分で分かるr言語入門ver2.5

結果を格納関数

> ret <- sum(array2)

> ret

[1] 210

処理結果を変数に格納

変数

合計値の確認

13年11月9日土曜日

Page 58: 10分で分かるr言語入門ver2.5

CSV読み込み

•変数に毎回データを手入力するのは面倒

• CSV形式(カンマ区切り)ファイルを読み込む関数がある

関数CSV

13年11月9日土曜日

Page 59: 10分で分かるr言語入門ver2.5

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

> hawks

height salary

1 173 17000

2 178 14000

3 180 9000

CSV読み込み

13年11月9日土曜日

Page 60: 10分で分かるr言語入門ver2.5

関数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年11月9日土曜日

Page 61: 10分で分かるr言語入門ver2.5

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

> hawks

height salary

1 173 17000

2 178 14000

3 180 9000

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

13年11月9日土曜日

Page 62: 10分で分かるr言語入門ver2.5

自分で関数を作る

•関数は自分で定義することも可能

•繰り返し使う処理は自作関数にする

自作関数

13年11月9日土曜日

Page 63: 10分で分かるr言語入門ver2.5

関数の書き方

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

}

13年11月9日土曜日

Page 64: 10分で分かるr言語入門ver2.5

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

> varp <- function(x) {

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

retsult

}

> varp(array)

[1] 66.66667

13年11月9日土曜日

Page 65: 10分で分かるr言語入門ver2.5

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

> varp <- function(x) {

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

retsult

}

> varp(array)

[1] 66.66667

関数の定義

処理を記述する 実行

13年11月9日土曜日

Page 66: 10分で分かるr言語入門ver2.5

ここまで

•組み込み関数:基本的な演算が可能

• CSV:read.csv関数でCSV形式のデータを読み込める

•自作関数:自身で関数を定義できる

13年11月9日土曜日

Page 67: 10分で分かるr言語入門ver2.5

処理

解析の流れデータ

レポート

変数配列行列

関数

パッケージ

自作関数

作図CSVデータフレーム

13年11月9日土曜日

Page 68: 10分で分かるr言語入門ver2.5

ここでは

•作図関数

•外部パッケージの利用方法

13年11月9日土曜日

Page 69: 10分で分かるr言語入門ver2.5

標準作図関数作図

•標準の関数でも色々と作図可能

目的 関数名ヒストグラム hist

散布図 plot箱ヒゲ図 boxplot・・・ ・・・

http://cse.naro.affrc.go.jp/takezawa/r-tips/r/50.html参考URL

13年11月9日土曜日

Page 70: 10分で分かるr言語入門ver2.5

> x <- rnorm(50)

> hist(x, breaks=seq(-3, 3,1))

標準作図関数作図

13年11月9日土曜日

Page 71: 10分で分かるr言語入門ver2.5

> x <- rnorm(50)

> hist(x, breaks=seq(-3, 3,1))

標準作図関数作図

乱数生成

ヒストグラム作図関数

13年11月9日土曜日

Page 72: 10分で分かるr言語入門ver2.5

関数をまとめたもの

•複数の関数をまとめたもの

•様々なパッケージがCRANというシステムにて無料公開されている

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

パッケージ

13年11月9日土曜日

Page 73: 10分で分かるr言語入門ver2.5

•作図パッケージggplot2を使えるようにする

13年11月9日土曜日

Page 74: 10分で分かるr言語入門ver2.5

> install.packages(“ggplot2”)

> library("ggplot2")

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

13年11月9日土曜日

Page 75: 10分で分かるr言語入門ver2.5

> install.packages(“ggplot2”)

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

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

パッケージをロード

13年11月9日土曜日

Page 76: 10分で分かるr言語入門ver2.5

a <- 1:10

b <- a^2

qplot(a,b)

qplotが利用可能パッケージ作図

13年11月9日土曜日

Page 77: 10分で分かるr言語入門ver2.5

a <- 1:10

b <- a^2

qplot(a,b)

qplotが利用可能パッケージ作図

ggplot2パッケージの関数

13年11月9日土曜日

Page 78: 10分で分かるr言語入門ver2.5

参考資料パッケージ作図

http://www.slideshare.net/dichika/ggplot213年11月9日土曜日

Page 79: 10分で分かるr言語入門ver2.5

紹介:分析用もあるパッケージ

目的 パッケージ名主成分分析 stats(組み込み済)対応分析 MASS

クラスター分析 stats線形回帰分析 stats生存分析 survival

ニューラルネット nnet・・・ ・・・

処理

13年11月9日土曜日

Page 80: 10分で分かるr言語入門ver2.5

詳細はこちらの書籍で

http://amazon.jp/dp/4627096011/

•過去にTokyoRでもテキストとして利用

13年11月9日土曜日

Page 81: 10分で分かるr言語入門ver2.5

ここまで

•作図関数:可視化が可能

•パッケージ:CRANからダウンロードして利用する。作図用や分析用など色々ある

13年11月9日土曜日

Page 82: 10分で分かるr言語入門ver2.5

処理

Rで一連の分析が可能データ

レポート13年11月9日土曜日

Page 83: 10分で分かるr言語入門ver2.5

アジェンダ

•自己紹介とお知らせ

• Rって何

• Rの使い方

•Rの資料

13年11月9日土曜日

Page 84: 10分で分かるr言語入門ver2.5

•日本語の資料

13年11月9日土曜日

Page 85: 10分で分かるr言語入門ver2.5

seekR

http://seekr.jp/

• R言語用検索エンジン

13年11月9日土曜日

Page 86: 10分で分かるr言語入門ver2.5

ちなみに•中の人がTokyoRで発表して下さいました!

http://www.slideshare.net/hiratake55/seekrjp-22281554

13年11月9日土曜日

Page 87: 10分で分かるr言語入門ver2.5

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

13年11月9日土曜日

Page 88: 10分で分かるr言語入門ver2.5

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

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

13年11月9日土曜日

Page 89: 10分で分かるr言語入門ver2.5

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

13年11月9日土曜日

Page 90: 10分で分かるr言語入門ver2.5

•以下海外のサイト(英語)

13年11月9日土曜日

Page 91: 10分で分かるr言語入門ver2.5

CRAN Task Viws• Rには2000以上パッケージがある

•用途別におすすめパッケージを紹介

http://cran.r-project.org/web/views/

13年11月9日土曜日

Page 92: 10分で分かるr言語入門ver2.5

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

13年11月9日土曜日

Page 93: 10分で分かるr言語入門ver2.5

まとめ

•Rは無料の統計解析ソフト•データ解析からレポートまで利用可能•Web上の資料も充実

13年11月9日土曜日

Page 94: 10分で分かるr言語入門ver2.5

まとめ

•Rは無料の統計解析ソフト•データ解析からレポートまで利用可能•Web上の資料も充実

是非使ってみましょう!

13年11月9日土曜日

Page 95: 10分で分かるr言語入門ver2.5

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

13年11月9日土曜日

Page 96: 10分で分かるr言語入門ver2.5

質疑応答

13年11月9日土曜日

Page 97: 10分で分かるr言語入門ver2.5

予備資料

13年11月9日土曜日

Page 98: 10分で分かるr言語入門ver2.5

連携も可能

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

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

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

業務専用パッケージ

.C()関数

RExcel

13年11月9日土曜日

Page 99: 10分で分かるr言語入門ver2.5

イケメンツールRStudio

13年11月9日土曜日

Page 101: 10分で分かるr言語入門ver2.5

初心者だけど2回目• 箕田さんの初心者セッション

• 集計、条件分岐、ループ、作図など

http://www.slideshare.net/aad34210/tokyo-r21

http://www.slideshare.net/aad34210/tokyo-r30-beginner

13年11月9日土曜日

Page 102: 10分で分かるr言語入門ver2.5

Tips

13年11月9日土曜日

Page 103: 10分で分かるr言語入門ver2.5

補足:クリップボード関数

#windowsの場合>hawks <- read.table("clipboard", header=TRUE,sep=’,’);#macの場合>hawks <- read.table(pipe("pbpaste"), header=TRUE,sep=’,’)> hawks height salary1 173 170002 178 140003 180 9000

クリップボードからも読み込み可能

CSV

13年11月9日土曜日

Page 104: 10分で分かるr言語入門ver2.5

補足2:関数調べ方関数CSV

> ?read.table

> ??read.table

>help(read.table) ヘルプを

呼び出すことが出来る

13年11月9日土曜日

Page 105: 10分で分かるr言語入門ver2.5

補足2:関数調べ方関数CSV

後半には用例もあるので参考に

> ?read.table

> ??read.table

>help(read.table)

13年11月9日土曜日