Upload
nobuaki-oshiro
View
1.862
Download
2
Embed Size (px)
Citation preview
[入門セッション]Rによるやさしい統計学
第1章〜 2章3章は余力が無かった〜
doradora09
Outline
● 自己紹介● お知らせ● テキスト紹介● Rの導入● Rをさわってみる● 変数と行列● 関数とパッケージ● まとめ
自己紹介
● 大城信晃 (Twitter:doradora09)● DB寄りWebエンジニア● TokyoRは第1回目から参加。
– 今回で20回目くらい。主に運営のお手伝い● 趣味:お酒、楽器(ホルン)● マイブーム:ルノアールで夜活
– ソファーが快適
お知らせ(1/4) セキココ● セキココという勉強会の座席共有サービスがあるので、もしよ
ければ使ってみてください● 席に座っている人のTwitterアカウントが分かるので便利です● http://sekico.co/
お知らせ(2/4) 飲み物● 簡単ながらブースの後ろの方にお菓子・お飲
物を用意させていただきました● 休憩時間にどうぞご利用下さい
– (いつかスイーツタイムを組み込んでみたい)
※画面はイメージです
お知らせ(3/4) 懇親会● TokyoRではセッション終了後に懇親会を実施して
います● 発表後の参加も可能ですので、プレゼンを聞いて興
味を持たれた方は是非ご参加下さい● 一般1500円、学生は無料です!
※画面はイメージです
お知らせ(4/4) 本日のウィスキー● 出張BAR企画ということで今日はシングルト
ンを持ってきました● あとカシスもあります。懇親会でどうぞ。
※画面はイメージですがだいたい合ってる
そろそろ本題へ
本セッション目的● R初心者にRをインストールしてもらう● Rの簡単な使い方を覚えてもらう
– が主な目的です– 新年度になり初めてRを使うユーザーさんもいると思うの
で、まずは導入編として
– R玄人の皆様には繰り返しになり申し訳ありません– 自習 or 睡眠学習の時間としてご活用下さいm(_ _)m– (セキココで参加者をフォローしまくってみるとか・・)
テキスト紹介● Rによるやさしい統計学● オーム社 (2008/1/25)● 記念すべき第1回TokyoR
で用いたテキスト– よくまとまっているので
もう一度利用してみようと思います
http://amazon.jp/dp/4274067106/creazynet-22/ref=nosim/
Rとは何か● 統計解析用のソフトウェア● 無料で利用可能● 基本的にコードを記述して動作させる
– プログラミング言語としての側面● 金融やマーケティング、医療など様々な分野で
利用されている● 各地にR言語のコミュニティや勉強会があり、
情報交換が行われている
紹介:各Rコミュニティの過去発表資料一覧
● ATNDの下のリンクからどうぞ– http://atnd.org/events/28416
● 「勉強会発表内容一覧 – Japan.R WIki」● 発表のタイトルを見るだけでもどういう用途があるか、あ
る程度参考になると思います
Rの導入● Windows, Mac, Linux版がある● いずれも無料
– Windows● http://cran.md.tsukuba.ac.jp/bin/windows/base/
– Mac, Linux● http://cran.md.tsukuba.ac.jp/
URLが分からない場合は● 「rjpwiki」で検索● Rでインストールという項目からたどればOK
Windows版の導入● 基本的に他のアプリケーションと同様にイン
ストールできます– 基本「次へ」を連打でOK
● インストーラーをダウンロード後、ダブルクリックで起動してください
インストール画面
インストール画面
インストール画面
インストール画面
インストール画面
インストール画面
インストール画面
● あとはインストールが完了するまで待てばOK
Rの起動● インストールが完了するとRのアイコンが作成されます● Rのアイコンをダブルクリックして起動するとRコンソールが起動します● Rコンソール上で実行したい処理を記述していきます
電卓として使う● 一番シンプルな使い方● +や-といった演算子を用いて基本的な計算ができます● Rコンソール上で以下のように記述して下さい
– #以降はコメントアウトされるので無視でOK● エンターで実行
3+5 #足し算 10-3 #引き算 2*3 #掛け算 20/4 #割り算 5^2 #5の2乗13 %% 5 #13を5で割った余り(剰余)
実行結果> 3+5 #足し算[1] 8> 10-3 #引き算 [1] 7> 2*3 #掛け算[1] 6> 20/4 #割り算[1] 5> > 5^2 #5の2乗[1] 25> 13 %% 5 #13を5で割った余り(剰余)[1] 3
関数電卓として利用● 関数はいくつかの処理をまとめたもの● 関数を利用することで様々な処理を手軽に実施できる● 関数名(引数) という記述で利用
– 関数によって引数の個数が変化● 以下は関数の例
– sum(10,20,30) #引数の合計を求める– sqrt(16) #16の平方根を求める– date() #日付を表示
関数電卓として利用● 関数はいくつかの処理をまとめたもの● 関数を利用することで様々な処理を手軽に実施でき
る● 関数名(引数) という記述で利用
– 関数によって引数の個数が変化● 以下は関数の例
– sum(10,20,30) #引数の合計を求める– sqrt(16) #16の平方根を求める– date() #日付を表示
実行結果
> sum(10,20,30) #引数をすべて合計する[1] 60> sqrt(16) #16の平方根を求める[1] 4> date() #日付を表示[1] "Fri May 25 09:48:09 2012"
レポート用の図を作成● plot等の関数で作図が可能● plot(c(10,20,30))とした例
– c()はデータの値を結合する関数
参考:きれいな作図● ggplot2という外部パッケージを利用すると視
覚的にきれいな作図が可能– パッケージの導入法は後述します
データを効率的に扱う● ここではデータを効率的に扱うために
– 変数– 行列のデータ作成– 外部ファイルの読み込みについて説明します
変数● 変数を用いることで値をまとめて扱えます● 先ほどのsum(10,20,30) の引数10,20,30場合● 変数名 <- c(値1,値2,値3) と記述● 例
– values <- c(10, 20, 30) #変数valuesに値をセット– values #変数名を書くと中身が見れる – sum(values) #sum関数に変数を渡す
● なお変数名は自由につけられます
実行結果> values <- c(10, 20, 30) #変数valuesに値をセット> values #変数名を書くと中身が見れる [1] 10 20 30> sum(values) #sum関数に変数を渡す[1] 60
#補足> sum(c(10,20,30)) #こう書いても同じ結果[1] 60
● 変数を用いると複数の値をまとめて扱えるので便利
行列の表現● 次のようなデータをRで利用する方法について説明します● ホークスの選手5人の身長(height)と年俸(salary)を表現した表
height salary
173 17000
178 14000
180 9000
183 50000
182 30000
Rで行列を記述● matrix(c(値), 行数, 列数) という方法で記述● 例
– hawks <- matrix(c(173, 178, 189, 183, 182,
17000, 14000, 9000, 50000, 30000), 5, 2)
実行結果
● 変数hawksに5行2列の行列が格納された
> hawks <- matrix(c(173, 178, 189, 183, 182,+ 17000, 14000, 9000, 50000, 30000), 5, 2)
> hawks #変数の中身確認(行列) [,1] [,2][1,] 173 17000[2,] 178 14000[3,] 189 9000[4,] 183 50000[5,] 182 30000
発展:行列の要素へのアクセス● 行列の各要素には以下の方法でアクセスします
– n行目(横のデータ)を表示する場合は 変数名[n,]
– m列目(縦のデータ)を表示する場合は 変数名[,m]
– n行m列目を表示する場合は 変数名[n,m]● 例
– hawks #行列全体を表示– hawks[1,] #1行目のデータにアクセス– hawks[,1] #1列目のデータにアクセス– hawks[3,2] #3行2列目のデータにアクセス
実行結果> hawks #行列全体を表示 [,1] [,2][1,] 173 17000[2,] 178 14000[3,] 189 9000[4,] 183 50000[5,] 182 30000
> hawks[1,] #1行目のデータにアクセス[1] 173 17000> hawks[,1] #1列目のデータにアクセス[1] 173 178 189 183 182> hawks[3,2] #3行2列目のデータにアクセス[1] 9000
外部ファイルの読み込み● RではCSV形式の外部ファイルを読み込むこと
ができます– CSV:カンマ区切りのデータフォーマット
● ここではエクセルと連携しやすいように、エクセルのデータからCSVファイルを作成し、Rに取り込む方法を説明します
データの用意● 先ほども用いたホークスの選手の身長と年俸
を表現したリストをエクセルで用意します
height salary
173 17000
178 14000
180 9000
183 50000
182 30000
エクセルで作る場合● データをエクセル上で記述● 1行目はヘッダー行で項目名に相当● 2行目以下が各項目の値
エクセルの保存形式の変更● エクセルのデータは通常はCSV形式ではないためそのままでは利用できま
せん● 保存する際にCSV形式を選択します● ここではhawks.csvというファイル名で保存
CSVファイルの確認● 作成したhawks.csvをテキストエディタで開く
と次のようにカンマ区切りのデータが確認できます
height,salary173,17000178,14000180,9000183,50000182,30000
● なお直接テキストエディタでこのようなデータを作ることも可能です
CSVファイルの読み込み● 作成したCSVファイルを読み込むためには、まず
CSVファイルを保存したフォルダに作業フォルダを移動します
● Rコンソールでは次の手順– 「ファイル」 → 「ディレクトリの変更」
● コマンドだと以下の手順– getwd() #現在の作業ディレクトリを確認– setwd(“作業ディレクトリまでのパス”) #移動
コマンド実行例> getwd() #変更前の作業ディレクトリ[1] "/Users/akiaki5516">
#作業ディレクトリ変更> setwd("/Users/akiaki5516/doradora12/Dropbox/TokyoR/23")
> getwd() #変更後の作業ディレクトリ確認[1] "/Users/akiaki5516/doradora12/Dropbox/TokyoR/23"
> dir(); #作業ディレクトリ内のファイル一覧[1] "hawks.csv"
CSVファイルの読み込み● read.csv(“ファイル名”) で読み込みます● 例
– hawks2 <- read.csv(“hawks.csv”);
実行結果
> hawks2 <- read.csv("hawks.csv") #csvファイルの読み込み
> hawks2 #変数の中身確認 height salary1 173 170002 178 140003 180 90004 183 500005 182 30000
関数を自作する● Rではsum()等の組み込み関数の他に、ユー
ザーの自作関数を利用することができます● 関数化することで同じ処理をまとめることが
できます● 自身が作成した関数を配布したり、他人が自
作した関数を利用することも可能です
自作関数varp()
● 関数名 <- function(引数) { 処理 } という記述で関数を作る
● 標本分散を求めるvarp()関数を作ってみる– 標本分散は偏差の二乗和 / データ
● 例– varp <- function(x) {
– result <- var(x) * (length(x) - 1) / length(x)
– result
– }
実行結果> varp <- function(x) { #自作関数+ result <- var(x) * (length(x) - 1) / length(x)+ result+ }>
> hawks2[,1] #ホークスのデータを入れてみる[1] 173 178 180 183 182
> varp(hawks2[,1]) #標本分散[1] 12.56
> length(hawks2[,1]) #ちなみにlengthは個数を返す関数[1] 5
他の人の関数を使う● 関数はファイルとして保存し、読み込むことが
可能です● ファイルの拡張子は.R● 例
– 先ほどのvarp関数をちょっと変えてvarp.Rとして保存する
– varp <- function(x) {
– print("処理開始") #文言を追加
– result <- var(x) * (length(x) - 1) / length(x)
– result
– }
関数の読み込み● source(“関数ファイル名”) とします● 例
– source(“varp.R”)
実行結果> source("varp.R") #関数ファイル読み込み> res <- varp(hawks2[,1]) #resに結果格納[1] "処理開始"
> res #結果出力[1] 12.56> > varp #ちなみに()なしだと関数の中身が見れますfunction(x) { print("処理開始")
result <- var(x) * (length(x) - 1) / length(x) result }>
パッケージをインストールしてみる● 複数の関数をまとめたものがパッケージです● パッケージはCRANと呼ばれるパッケージ管理サーバに保存されています
● 最初に出てきたggplot2パッケージを入れてみます
CRAN mirrorの設定● 初回のみパッケージを取りにいくミラーサーバー
の指定が必要です● まずパッケージ管理画面を開きます
– windowsだとRコンソール上で「パッケージ」->「パッケージのインストール」
– macだと「パッケージとデータ」 → 「パッケージインストーラ」
● 画面からミラーサイトとしてJapan(Hyogo)又はJapan(Tsukuba)を選択
● パッケージマネージャの検索窓にggplot2と入力し、インストールボタンを押します– コマンドだと install.packages(“ggplot2”)
画面の例(mac版)
インストールしたパッケージを使う● インストールしたパッケージはそのままでは
使えないので、library関数で呼び出します● 例
– library(“ggplot2)
実行結果● 依存関係のエラーが出た
> library("ggplot2") エラー: パッケージ 'reshape' が 'ggplot2' によって要求されましたが、見つけられませんでした
依存関係の解消● パッケージの中で他のパッケージを利用している際は依存関係が発生する
● 依存関係のエラーで出てきたパッケージを片っ端から入れる
● 例– insatll.pacages(“reshape”)– insatll.pacages(“plyr”)
– install.pacages(“grid”)
– install.pacages(“proto”)– install.pacages(“ggplot2”) #本命
再度実行
> insatll.pacages(“reshape”)> insatll.pacages(“plyr”)> install.pacages(“grid”)> install.pacages(“proto”)> install.pacages(“ggplot2”) #本命
> library(ggplot2) #今度は成功
● 今度はちゃんと呼び出せた
ggplot2で作図> qplot(salary, height, data = hawks2, colour = I("blue"))
ggplot2をもっと知りたい方へ● 過去のR勉強会で発表されていますので、参考
にしてみてください– ggplot2:パッケージ製作者(Wickamさん)の話
を聞いて @aad34210さん● http://www.slideshare.net/aad34210/ggplot2-110129
– ggplot2できれいなグラフ@dichikaさん● http://www.slideshare.net/dichika/ggplot2
まとめ● Rをインストールするときは「rjpwiki」で検索● まずは電卓や関数電卓として使ってみてくださ
い● plotやggplot2パッケージで作図も可能● 変数でデータをまとめ、関数で処理をまとめ
る● データはCSVフォーマットで取り込めます● 関数パッケージはCRANからインストールで
きます
もっとRを知りたい方へ● 初心者向けおすすめ資料
– はじめてのR @aad34210
● http://www.slideshare.net/aad34210/tokyo-r18
– 続はじめてのR @aad34210
● http://www.slideshare.net/aad34210/tokyo-r21-2
● エクセルともっと連動させる– RExcelでの日本語利用 @aad34210
● http://www.slideshare.net/aad34210/japan-r-101127– XLConnectで快適なエクセルライフのご提案 @dichika
● http://www.slideshare.net/dichika/tokyor18
ご清聴ありがとうございました!