10分で分かるr言語入門ver2.9 14 0920

Post on 19-Jun-2015

1.465 views 4 download

description

第43回R勉強会@東京(#TokyoR) https://atnd.org/events/56275

Transcript of 10分で分かるr言語入門ver2.9 14 0920

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

大城信晃 2014/09/20 TokyoR#431

開催情報ATND

• https://atnd.org/events/56275 セキココ

• http://sekico.co/zaseki/384 !

2

本セッションの役割

•R初心者のために基礎を説明 •本勉強会の以降の他セッションの前提知識を得てもらう

•資料は後ほど公開しますのでざっと眺めていただければと思います

3

アジェンダ

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

4

自己紹介• 名前:大城信晃 • Twitter:doradora09 • 職業:データマイニングエンジニア • R:勉強中。 • 業務ではhadoop使ってます • マイブーム: • カクテル作り • カメラ • 肉(ブロック) 5

これまで/現在の仕事•ショッピング関連 •商品/製品DB 保守開発 •データ分析関連 •行動ターゲティング •データを使って顧客像を探る • DMP

6

TokyoRでは

•第1回から主に運営側で参加 •初心者セッション •最近は懇親会でピザ注文したりお酒作ったりしてます

7

最近の個人的news

8

執筆しました!(一部)

http://www.amazon.co.jp/dp/47981349029

その他お知らせ

10

お酒もあります!(懇親会)

11

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

12

アジェンダ

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

13

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

Wikipediaより引用

14

での使われ方

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

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

15

用途で分類

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

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

画面上で操作(GUI)

業務専用 ソフト

実装

16

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

(メモリ依存)△

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

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

×

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

無料~ 数万

実装次第 ◎

Python スクリプト 言語

無料 実装次第 ○

他言語との比較

17

こんな方におすすめ

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

18

あると望ましいスキル

•プログラミングの基礎 •統計学の知識 • (英語力)

19

アジェンダ

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

20

インストール

Windows http://cran.md.tsukuba.ac.jp/bin/windows/base/

Mac http://cran.md.tsukuba.ac.jp/

Linux http://cran.md.tsukuba.ac.jp/

21

Rコンソール起動

22

Rコンソール起動

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

23

処理の記述

3+5 = 8 10-7 = 3

24

処理

解析の流れデータ

レポート25

処理

解析の流れデータ

レポート

変数配列行列

関数

パッケージ

自作関数

作図CSVデータフレーム

26

処理

解析の流れデータ

レポート

変数配列行列

データフレーム

関数

パッケージ

自作関数

作図CSV27

ここでは

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

28

値を入れる箱> hako <- 10

> hako

[1] 10

> hako * 2

[1] 20

変数

29

値を入れる箱> hako <- 10

> hako

[1] 10

> hako * 2

[1] 20

変数

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

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

30

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

> array

[1] 10 20 30

> array * 2

[1] 20 40 60

配列

31

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

> array

[1] 10 20 30

> array * 2

[1] 20 40 60

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

配列

3つの値を 配列に格納

32

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

[1] 10

> array[2]

[1] 20

> array[3]

[1] 30

配列

33

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

[1] 10

> array[2]

[1] 20

> array[3]

[1] 30

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

配列

2個目

3個目34

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

40,50,60), 2, 3)

> array2

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

[1,] 10 30 50

[2,] 20 40 60

行列

35

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

36

行列覚え方

http://wakuteka.info/R/110729 より転載37

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

[1] 10

> array2[1,]

[1] 10 30 50

> array2[,1]

[1] 10 20

行列

38

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

[1] 10

> array2[1,]

[1] 10 30 50

> array2[,1]

[1] 10 20

1行1列を 指定

行列

1行目全体 を指定

1列目全体 を指定

39

複数の型を持てる> 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

データフレーム

40

複数の型を持てる> 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

性別(文字列型) 身長、体重(数値型)

データフレーム

data.frame関数で セット

41

要素の指定> 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番目

42

ここまで

• 変数:1種類の型の値を1つ入れる箱(スカラー) • 配列:1種類の型の値を複数入れる箱(ベクトル) • 行列:1種類の型の複数ベクトルをまとめて表現 • データフレーム:複数の型のベクトルをまとめて表現

43

CSV

処理

解析の流れデータ

レポート

変数配列行列

関数

自作関数データフレーム

パッケージ

作図44

ここでは

•関数の利用/作成方法 • CSVによるデータ読み込み

45

処理の呼び出し関数

•関数は複数の処理をまとめたもの •様々な計算が手軽に実行できる

46

処理の呼び出し関数

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

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

47

合計を求める関数

> array

[1] 10 20 30

> sum(array)

[1] 60

48

合計を求める関数

> array

[1] 10 20 30

> sum(array)

[1] 60

処理結果が 出力される

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

先ほどの配列

49

行列も足せる> array2

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

[1,] 10 30 50

[2,] 20 40 60

> sum(array2)

[1] 210

関数

50

行列も足せる> array2

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

[1,] 10 30 50

[2,] 20 40 60

> sum(array2)

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

関数

先ほどの行列 array2

51

結果を格納関数

> ret <- sum(array2)

> ret

[1] 210

変数

52

結果を格納関数

> ret <- sum(array2)

> ret

[1] 210

処理結果を 変数に格納

変数

合計値の 確認

53

CSV読み込み

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

関数CSV

54

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

!

> hawks

height salary

1 173 17000

2 178 14000

3 180 9000

CSV読み込み

55

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

!

> hawks

height salary

1 173 17000

2 178 14000

3 180 9000

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

渡して 変数に代入

CSV読み込み

56

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

!

> hawks

height salary

1 173 17000

2 178 14000

3 180 9000

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

57

自分で関数を作る

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

自作関数

58

関数の書き方

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

}

59

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

> varp <- function(x) {

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

retsult

}

> varp(array)

[1] 66.66667

60

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

> varp <- function(x) {

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

retsult

}

> varp(array)

[1] 66.66667

関数の定義

処理を記述する 実行

61

ここまで

•組み込み関数:基本的な演算が可能 • CSV:read.csv関数でCSV形式のデータを読み込める

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

62

処理

解析の流れデータ

レポート

変数配列行列

関数

パッケージ

自作関数

作図CSVデータフレーム

63

ここでは

•作図関数 •外部パッケージの利用方法

64

標準作図関数作図

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

ヒストグラム hist散布図 plot箱ヒゲ図 boxplot・・・ ・・・

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

65

> x <- rnorm(50)

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

標準作図関数作図

66

> x <- rnorm(50)

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

標準作図関数作図

乱数生成

ヒストグラム 作図関数

67

> x <- rnorm(50)

> plot(x)

標準作図関数作図

乱数生成

プロット 関数

68

関数をまとめたもの

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

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

パッケージ

69

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

70

> install.packages(“ggplot2”)

> library("ggplot2")

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

71

> install.packages(“ggplot2”)

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

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

パッケージを ロード

72

a <- 1:10

b <- a^2

qplot(a,b)

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

73

a <- 1:10

b <- a^2

qplot(a,b)

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

ggplot2 パッケージ の関数 74

qplot(carat, price,

data = diamonds,

colour = clarity)

サンプルデータ diamonds

パッケージ作図

diamonds データの

carat, priceを 描画

75

参考資料パッケージ作図

http://www.slideshare.net/dichika/ggplot276

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

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

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

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

処理

77

詳細はこちらの書籍で

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

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

78

ここまで

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

79

処理

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

レポート80

アジェンダ

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

81

•日本語の資料

82

seekR

http://seekr.jp/

• R言語用検索エンジン

83

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

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

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

85

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

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

86

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

87

サンプルデータ•統計を学びたい人へ贈る、統計解析に使えるデータセットまとめ

• http://d.hatena.ne.jp/hoxo_m/20120214/p1

• データセット一覧

• http://vincentarelbundock.github.io/Rdatasets/datasets.html

88

89

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

90

CRAN Task Viws•Rには5000以上パッケージがある(2014/09現在)

• 用途別におすすめパッケージを紹介http://cran.r-project.org/web/views/

91

CRAN Task Viws•日本語訳してるサイト(一部機械翻訳)

http://www.trifields.jp/r-cran-task-views-639

92

R-Chart• Rでの作図のサンプルが多数ある

http://www.r-chart.com/

93

まとめ

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

94

まとめ

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

是非使ってみましょう!95

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

96

質疑応答

97

予備資料

98

連携も可能

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

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

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

業務専用 パッケージ

.C()関数

RExcel

99

イケメンツールRStudio

100

RStudio資料

http://www.slideshare.net/wdkz/rstudio-13866958101

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

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

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

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

Tips

103

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

#windowsの場合!>hawks <- read.table("clipboard", header=TRUE,sep=’,’);!#macの場合!>hawks <- read.table(pipe("pbpaste"), header=TRUE,sep=’,’)!> hawks! height salary!1 173 17000!2 178 14000!3 180 9000!

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

CSV

104

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

> ?read.table

> ??read.table

>help(read.table)

! ヘルプを 呼び出すことが出来る

105

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

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

> ?read.table

> ??read.table

>help(read.table)

!

106

紹介:テキスト解析ツール KH Corder

•茶筅やRを裏側で利用(Rのソースで出力可)

• GUIで形態素解析、対応分析、ネットワーク分析が簡単にできる

http://khc.sourceforge.net/107