SlideShare a Scribd company logo
山本研 D2-W
HIKI
2015 夏学期 統計解析輪講 第一回
2015.04.21 (火) 14:55~16:40 @14号館 輪講室
教科書:「データ解析のための統計モデリング入門」 久保拓弥
2015.04.21 輪講(統計解析) 第一回
統計ソフトRの
概要と使い方入門
1
2015.04.21 輪講(統計解析) 第一回 2
日置担当分の目次
1. そもそもRって?
2. はじめてのR
3. Rでのデータの取り扱い方
- Rの良いところ
- その他Rで出来ること
- Rに関する注意点
- Rのインストール
- パッケージのインストール
- Rの見方・ヘルプ
目標:「Rの基礎的な手法を学び、
輪講を円滑に進められる状態にする」
希望的+α:「Rの便利さ・有用さ・面白さ」
教科書では前提とされている内容を
中心に扱います。なので、第2章の入口までしか
たどり着きません。
- Rにおけるデータ型
- Rにおけるデータ構造
- データの保存・取り出し法
- データの要約
2015.04.21 輪講(統計解析) 第一回 3
Rの良いところ
1.そもそもRって?
■Rはオープンソースのフリーソフト
• 無料でインストール可
• Mac, Windows, Linuxで対応可
• ネット上に多数のマニュアル
⇒ 環境が変わってもずっと使用できる! 就職後も利用OK!
• 世界中のユーザが開発したプログラム(=パッケージ)が日々付け加えられ公開される。
⇒ 常に無料で更新可能なソフトウェア!
例:個体群数理学に関するパッケージ popbio
前回の「数理生態学」輪講で扱った個体群行列モデルを解くパッケージ。
パッケージを使えば、計算は非常に容易になる。下は個体群増加率の感度行列を計算するときの例。
通常の計算コード
> lamda <- eigen(A)$values [1] ##Aは射影行列
> w<- eigen(A)$vectors[,1]
> v<-eigen(t(A))$vectors[,1]
> sensitivity <- v*w/(v%*%w)
popbioを用いた時の計算コード
> sensitivity(A, zero=FALSE)
たった1行でOK!!
2015.04.21 輪講(統計解析) 第一回 4
Rの良いところ
1.そもそもRって?
■充実したグラフィックス機能
• 高度なグラフ化が可能
• 柔軟な作図プログラムが可能
• 図の保存が楽
例:等高線の作図
filled.contour関数で作図
例:複数変数の散布図
Ozone
0 100 250 60 80
050150
0100250
Solar.R
Wind
51020
6080
Temp
0 50 150 5 10 20 5 6 7 8 9
56789
Month
※ヨコエビ飼育槽の海水のEEM
(http://envrisklab.hatenablog.com/から)
作図コード
> plot(airquality[1:5]) ## airqualityは
デフォルトで入っているデータ
たった1行で上の作図ができる!
例:ヒートマップ作成
heatmap関数で作図
53
52
51
50
9
10
11
12
61
60
5958
57
56
55
54
1
2
3
4
5
6
7
8
19
17
18
13
14
1516
49
48
47
46
45
44
43
42
41
40
20
21
22
23
28
27
2624
25
32
31
30
29
39
38
37
36
35
34
33
56
77473727170
696867123
47675807978
778786858483
82818910
116665646362
575661605958
555453524443
454651474849
501213144241
403933323126
253029282719
202122242315
161718353436
3837
1)
2015.04.21 輪講(統計解析) 第一回 5
Rの良いところ
1.そもそもRって?
■他の統計ソフトとのデータ互換性
• ExcelやSPSSのデータを直接読み込める (read.xls関数など)
• ワークシートの一部のデータだけをコピーして読み取ることも可能
例:airquality
このairqualityというオブジェクトには
6×153の値が含まれている
コード
> airquality
Ozone Solar.R Wind Temp Month Day
1 41 190 7.4 67 5 1
2 36 118 8.0 72 5 2
3 12 149 12.6 74 5 3
4 18 313 11.5 62 5 4
5 NA NA 14.3 56 5 5
6 28 NA 14.9 66 5 6
7 23 299 8.6 65 5 7
8 19 99 13.8 59 5 8
・・・
■「ベクトル処理」
• Rは複数の要素をまとめて「ベクトル」という単位で扱う
(※ここで言う「ベクトル」は「データの集合」ぐらいの意味です、たぶん。)
⇒ 複雑なデータを単純に管理・計算できる
⇒ 複雑なコードが不要 (forループやif条件分岐)
(※むしろRは他のソフトに比べると、forやwhile計算が格段に遅いらしい。)
2015.04.21 輪講(統計解析) 第一回 6
Rの良いところ
1.そもそもRって?
他にもまだまだ良いところが・・・
2)
例:2標本のt検定
2015.04.21 輪講(統計解析) 第一回 7
その他Rで出来ること
1.そもそもRって?
■数値計算
• 四則演算が可能
• 関数を用いて微分方程式も解ける
コード
> 1+1
[1] 2
> (1+2)*3
[1] 9
例:四則演算
■統計解析
• 仮説検定や多変量解析などのための関数が数多く入っている
• 正規性の検定・等分散性の検定・差の検定・主成分分析・クラスター解析 など・・・
⇒ ルーティン的な解析が容易! (※ただ過程がブラックボックスになりがちなことへの注意が必要)
コード
> x<-c(1,2,1,2,3,1,2,3)
> y<-c(4,2,1,2,0,1,2,1)
> t.test(x,y, var.equal=TRUE) ##等分散と仮定
Two Sample t-test
data: x and y
t = 0.4871, df = 14, p-value = 0.6337
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
-0.8507434 1.3507434
2015.04.21 輪講(統計解析) 第一回 8
その他Rで出来ること
1.そもそもRって?
■関数とプログラミング
• 自作の関数を作ることができる
• 条件分岐if・switch文や繰り返しfor・while文が使用できる
⇒ 複雑なモデル計算もRで出来る!
例:ファットヘッドミノー個体数推移のモンテカルロシミュレーション
モンテカルロシミュレーション:乱数を繰り返し発生させておこなうシミュレーション
ちなみにモンテカルロはカジノで有名なモナコ公国の一地区の名前
ファットヘッドミノーの生存率・産仔数に確率変動(乱数)を組み込んで
個体数の推移をシミュレーションした例が右図。
初期個体数は11匹で固定。
ファットヘッドミノー
(住化テクノサービスHPより)
2015.04.21 輪講(統計解析) 第一回 9
Rに関する注意点
1.そもそもRって?
 文字入力のCUI(キャラクタユーザインターフェイス)
⇒ 慣れるまで時間がかかるかも
(※もっともRコマンダーというGUI(グラフィック…)パッケージもある)
Rはコンソール画面にテキストを
打ち込んで操作するCUIソフトウェア
Rコマンダーというパッケージを使えば
ExcelやSPSSのようにGUIにできる
(上図はhttp://mjin.doshisha.ac.jp/R/38/38.htmlから)
2015.04.21 輪講(統計解析) 第一回 10
Rに関する注意点
1.そもそもRって?
 便利な関数・パッケージがあるので過程がブラックボックスになりがち(Rに限ったことではないですが…)
⇒ 1. おこなう解析の内容を理解する必要
2. ソフトの仕様を理解・確認する必要
 場合によっては処理速度が遅い
⇒ 論理判断(for文やif文)を極力排除して、ベクトル化する。
 数値計算の誤差(これもRに限ったことではないですが…)
例:t検定
1. t検定は何を仮定しているか?関連検定との関係。
2. t.test関数はデフォルトだと等分散設定。
例:小数の足し算
Rの内部では 10 進数を 2 進数に
直して計算している。そのため、小数
計算の種類によっては近似値(循環
小数)になり、計算結果に数値誤差
が生じる場合がある。
コード
> 0.4-0.2-0.2
[1] 0
> 0.4-0.3-0.1
[1] 2.775558e-17
3), 4)
3)
 大文字と小文字の区別
Wordでコードを書くと、文頭の文字
が勝手に大文字になるので注意
コード例
> a<-1
> a
[1] 1
> A
エラー: オブジェクト 'A' がありません
2015.04.21 輪講(統計解析) 第一回 11
Rのインストール・パッケージのインストール
2.はじめてのR
■Rのインストール・起動
• ググって下さい。
• Rをダウンロードする際はCRAN (Comprehensive R Archive Network) の
ミラーサイトを選ぶ必要がある。ネットワークへの負荷を抑えるため、東京かつくばを
選択して下さい。
■パッケージのインストール
• Rのメニューバーから「パッケージ」→「パッケージのインストール」
を選び、ミラーサイトを指定し、インストールしたいパッケージを
選ぶ。
• 一度インストールしたパッケージは、
library(パッケージ名)で使用可能。
例:逆行列を求める関数ginv
コード
> x<-matrix(1:4,2,2)
> ginv(x)
エラー: 関数 “ginv” を見つけることができま
せんでした
> library(MASS)
> ginv(x)
[,1] [,2]
[1,] -2 1.5
[2,] 1 -0.5
1)
2015.04.21 輪講(統計解析) 第一回 12
Rの見方・ヘルプ
2.はじめてのR
■コンソール画面の見方
• 「>」 (プロンプト)
この後に命令を記入する
• 「#」:この後からはコメント
何を書いても改行部分までは影響なし
• 「<-」
関数や変数の定義に使用
直後の内容を直前の変数に代入
• [1]:行の先頭に表示される値が1番目の
要素であることを示す
• 関数のヘルプは「help(関数名)」か「?関
数名」でウェブ上のものが閲覧可能
2015.04.21 輪講(統計解析) 第一回 13
日置担当分の目次
1. そもそもRって?
2. はじめてのR
3. Rでのデータの取り扱い方
- Rの良いところ
- その他Rで出来ること
- Rに関する注意点
- Rのインストール
- パッケージのインストール
- Rの見方・ヘルプ
ここからは実際にRを使ってみます。
まずはRの中でデータが
どう表現されているのかを見ていきます。
- Rにおけるデータ型
- Rにおけるデータ構造
- データの保存・取り出し法
- データの要約
2015.04.21 輪講(統計解析) 第一回 14
Rにおけるデータ型
3.Rでのデータの取り扱い方
■データ型の種類
• 「実数」 numeric
例:1, 0.5, 1/3, c(1,2,3)
• 「整数」 integer
• 「複素数」 complex
例:1+2i, c(1,2+2i)
• 「論理値」 logical
例:TRUE, FALSE
• 「文字列」 character
例:"abc", "2015/04/21"
• 「空」 Null
• 「欠損値」 NA
• 「非数」 NaN
• 「関数」 function などなど
コード例
> a<-c(1,2+2i)
> mode(a)
[1] "complex“
>
> is.complex(a)
[1] TRUE
> is.numeric(a)
[1] FALSE
> mode(is.complex(a))
[1] "logical"
■データ型の確認法
mode()関数やis.numeric()関数を用いる
()内には調べたい変数や関数を入れる
不適切なデータ型は
エラーの原因となる!
メッセージの例:
variables must be
either all real
numbers or all
factors.
■データ型の変換法
as.numeric()関数などを用いる
コード例
> as.numeric(c(TRUE,FALSE,TRUE))
[1] 1 0 1
2015.04.21 輪講(統計解析) 第一回 15
Rにおけるデータ構造
3.Rでのデータの取り扱い方
■データの構造
データを集合として扱えることがRの特徴(スライドp.5)
集合には下のような種類がある
• 「スカラー」 :1個のデータ
例:1, “scalar”
• 「ベクトル」 :同じ型のデータの集まり
c関数やseq関数を用いて作成する
例:c(1,2,3), seq(1,3, by=1), 1:3
文字列のベクトルも作成可能
コード例
> a<-c(1,4,3)
> a
[1] 1 4 3
> a[2]
[1] 4
ベクトルのx番目の要素
を参照するときは[x]
• 「行列」
matrix関数やrbind・cbind関数で作成可能
• 「配列」 :多次元の行列
引数dimで各次元の要素の個数を指定
# 3次元の配列の例
> array(1:6, dim= c(1,3,2) )
, , 1
[,1] [,2] [,3]
[1,] 1 2 3
, , 2
[,1] [,2] [,3]
[1,] 4 5 6
> aray(1:6, dim=
c(2,3,2) )
, , 1
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
, , 2
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
コード例
> matrix(1:6,nrow=2,ncol=3)
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
行列のx行y列の要素を参
照するときは[x,y]
コード例
> a<-c(“TRUE”,”FALSE”,”TRUE”)
> a
[1] "TRUE" "FALSE" "TRUE"
2015.04.21 輪講(統計解析) 第一回 16
Rにおけるデータ構造
3.Rでのデータの取り扱い方
■データの構造 (続き)
• 「リスト」
データフレームの進化版
行列・配列・データフレームなど異なる構造のデータを
まとめて扱うことができる
list関数で作成する
コード例
> l<- list (a=c(1,2,3), b= matrix(1:6,nrow=2,ncol=3))
> l
$a
[1] 1 2 3
$b
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
> l$a ## $で要素の参照ができる
[1] 1 2 3
> l$b[1,2]
[1] 3
• 「データフレーム」 :Excelの表みたいなもの
異なる列には異なるデータ型を使用できる
行列との相互変換も可能
コード例
> data.frame(x=c(3,1,2),y=c("A","B","A"))
x y
1 3 A
2 1 B
3 2 A
コード例
> a
x y
1 3 A
2 1 B
3 2 A
> data.matrix(a)
x y
[1,] 3 1
[2,] 1 2
[3,] 2 1
> b<-
matrix(1:6,nrow=2,ncol=3)
> b
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
> data.frame(b)
X1 X2 X3
1 1 3 5
2 2 4 6
> str(l) ## strは内部構造を調
べる関数
List of 2
$ a: num [1:3] 1 2 3
$ b: int [1:2, 1:3] 1 2 3 4 5 6
> summary(l) ##summaryでも
同様のことができる
Length Class Mode
a 3 -none- numeric
b 6 -none- numeric
2015.04.21 輪講(統計解析) 第一回 17
Rにおけるデータ構造
3.Rでのデータの取り扱い方
■練習:データフレームの扱い方
Rにデフォルトとして入っているデータ women を用いる(単位はinch, pond)。
コード例: データの閲覧・抽出法
> women #まずデータの確認
height weight
1 58 115
2 59 117
…
> women[1,] #1人目だけ取り出す
height weight
1 58 115
> women[“height”] #身長だけを取り出す,またはwomen[1]
> height
1 58
2 59
…
> women[women $height==70,] #身長70のデータだけ取り出す
height weight
13 70 154
## > women[women[“height”]==70,] でもOK
コード例: データの閲覧・抽出法
## subset関数を用いて取り出すこともできる
## subset(データフレーム名, 条件式)
## 身長60インチ以上 かつ 体重125ポンド以下の女性は…
> subset(women, height>=60 & weight<=125)
height weight
3 60 120
4 61 123
## NA値を一つでも含むサンプルを除外する
## complete.cases関数を用いる
> subset (women, complete.cases(women))
height weight ##このデータフレームだと変化なし
1 58 115
2 59 117
…
ちなみに
数学の記号:Rでの表記
= : ==
!= : ≠
≧ : >=
> : >
ちなみに
論理演算:Rでの表記
かつ : &
または : |
ではない : !
2015.04.21 輪講(統計解析) 第一回 18
データの保存・取り出し法
3.Rでのデータの取り扱い方
■Rへのデータの取り込み方
1. コンソール画面に直に打ち込む
2. Excelファイルから
gdataパッケージのread.xls関数を用いる
WindowsだとPerlのインストールが必要
Excelデータには日本語を含めてはダメ
3. タブで区切られたファイルから
read.table関数を用いる
コード例
> height<-c(168,166,152,172)
1)
コード例
##初回はまずメニューバーの「パッケージ」→「パッケージのインストー
ル」からgdataを選びインストールする。2回目からこの作業は不要。
> library(gdata)
> d<- read.xls(“Excel ファイル名")
## 1行目に変数名がなければ
> d<- read.xls(“Excel ファイル名“, header=FALSE)
4. クリップボードから
Excel一部だけをコピーしてRで解析したい場合など
Windowsとその他のOSでは手法が異なります
ここではWindowsの例
5. 保存された作業スペースから
メニューバーの「ファイル」→「作業スペースの読み込み」から。
「作業スペースの保存」をすれば、自分で作成したコンソール
画面のデータは「読み込み」して次回以降も使用できる。
試しに教科書chapter 2の
「data R.data」を読み込んでください
コード例
> d<-read.table (“データファイル名“, header=TRUE)
コード例
## 変数名をコピー範囲に含む場合
> d<-read.table (“clipboard“, header=TRUE)
## 変数名をコピー範囲に含まない場合
> d<-read.table (“clipboard“, header=FALSE)
2015.04.21 輪講(統計解析) 第一回 19
データの要約:ここから教科書 2章の内容 (2.1) です
3.Rでのデータの取り扱い方
■例
Rにデフォルトとして入っているデータ airquality を用いる。
ニューヨークの大気観測データ (1973年5月~)。単位は順にppb, lang, mph, °F。
コード例
> airquality
Ozone Solar.R Wind Temp Month Day
1 41 190 7.4 67 5 1
2 36 118 8.0 72 5 2
3 12 149 12.6 74 5 3
4 18 313 11.5 62 5 4
…
## 毎回airqualityと打つのが面倒なので
> a <- airquality #変数aで定義
## まずsummaryでデータの概要を見てみる
> summary (a)
## 気温のヒストグラムを作成する
> hist (a$Temp)
> hist (a[,4]) #どちらでも同じ結果です
> hist (a$Temp, cex.lab=1.5, cex.axis=1.5) #ラベル・軸の文字を大きくします。デフォルトだと読みにくくて怒られます。
2015.04.21 輪講(統計解析) 第一回 20
データの要約
3.Rでのデータの取り扱い方
■例 (続き)
コード例
## ヒストグラムの間隔を変更してみる
> hist(a$Temp,breaks=seq(50,100,by=2), cex.axis=1.5, cex.lab=1.5) ##因数breaksを用いる。seqは等差数列。実は”breaks=”は書かな
くても同じ結果になる。
## 箱ひげ図を描いてみる
> boxplot(a$Temp, cex.axis=1.5)
## 累積分布を描いてみる
> plot(sort(a$Temp), cex.axis=1.5)
# sortは降順で並び替える関数
Histogram of a$Temp
a$Temp
Frequency
50 60 70 80 90 100
05101520
60708090
0 50 100 150
60708090
Index
sort(a$Temp)
練習:airqualityのOzoneで同様の解析をおこなう
2015.04.21 輪講(統計解析) 第一回 21
データの要約
3.Rでのデータの取り扱い方
■解答例
Histogram of b$Ozone
b$Ozone
Frequency
0 50 100 150 200
020406080
Histogram of c
cFrequency
0 50 100 150 200
020406080
NAを0とした場合NAを除外した場合
2015.04.21 輪講(統計解析) 第一回 22
参考文献・URL
1) 青木繁伸, 2009, Rによる統計解析, オーム社
2) Rjp wiki, http://www.okada.jp.org/RWiki/
(Rに関する情報交換がおこなわれているWiki)
3) R Tips, http://cse.naro.affrc.go.jp/takezawa/r-tips/r.html
(舟尾先生によるRのヒント集, 書籍版もあります)
4) 伊理正夫, 藤野和建, 1985, 数値計算の常識, 共立出版
2015.04.21 輪講(統計解析) 第一回 23
データの要約:ここから教科書 2章の内容です
3.Rでのデータの取り扱い方
■解答例
NAを0とした場合
コード例
##
> d<-a$Ozone
> d[is.na(d)==TRUE]<-0 ##is.na()はNAならばTRUEと返す関数
> hist(d,breaks=seq(0,200,by=20), ylim=c(0,80),cex.lab=1.6,cex.axis=1.6)
## 別解:ifelse関数を使う
> c<-ifelse(is.na(a$Ozone),0,a$Ozone)
> hist(c,breaks=seq(0,200,by=20), ylim=c(0,80),cex.lab=1.6,cex.axis=1.6)
Histogram of c
c
Frequency
0 50 100 150 200
020406080

More Related Content

What's hot

Rstudio事始め
Rstudio事始めRstudio事始め
Rstudio事始め
Takashi Yamane
 
TokyoR101_BeginnersSession2.pdf
TokyoR101_BeginnersSession2.pdfTokyoR101_BeginnersSession2.pdf
TokyoR101_BeginnersSession2.pdf
kotora_0507
 
Visual Studio CodeでRを使う
Visual Studio CodeでRを使うVisual Studio CodeでRを使う
Visual Studio CodeでRを使う
Atsushi Hayakawa
 
Yamadai.R チュートリアルセッション
Yamadai.R チュートリアルセッションYamadai.R チュートリアルセッション
Yamadai.R チュートリアルセッション
考司 小杉
 
営業さんまで、社員全員がSQLを使う 「越境型組織」 ができるまでの3+1のポイント | リブセンス
営業さんまで、社員全員がSQLを使う 「越境型組織」 ができるまでの3+1のポイント | リブセンス営業さんまで、社員全員がSQLを使う 「越境型組織」 ができるまでの3+1のポイント | リブセンス
営業さんまで、社員全員がSQLを使う 「越境型組織」 ができるまでの3+1のポイント | リブセンス
Livesense Inc.
 
10分で分かるr言語入門ver2.15 15 1010
10分で分かるr言語入門ver2.15 15 101010分で分かるr言語入門ver2.15 15 1010
10分で分かるr言語入門ver2.15 15 1010
Nobuaki Oshiro
 
MonotaRO のデータ活用と基盤の過去、現在、未来
MonotaRO のデータ活用と基盤の過去、現在、未来 MonotaRO のデータ活用と基盤の過去、現在、未来
MonotaRO のデータ活用と基盤の過去、現在、未来
株式会社MonotaRO Tech Team
 
ラムダ計算入門
ラムダ計算入門ラムダ計算入門
ラムダ計算入門
Eita Sugimoto
 
採用と育成スキームの科学13(配布用資料)
採用と育成スキームの科学13(配布用資料)採用と育成スキームの科学13(配布用資料)
採用と育成スキームの科学13(配布用資料)
Yohei SUZUKI
 
さらば!データサイエンティスト
さらば!データサイエンティストさらば!データサイエンティスト
さらば!データサイエンティスト
Shohei Hido
 
PyCon2020 Pythonで競プロをしよう! 〜入門者が知っておくべき高速化Tips〜
PyCon2020 Pythonで競プロをしよう! 〜入門者が知っておくべき高速化Tips〜PyCon2020 Pythonで競プロをしよう! 〜入門者が知っておくべき高速化Tips〜
PyCon2020 Pythonで競プロをしよう! 〜入門者が知っておくべき高速化Tips〜
Kosaku Ono
 
ggplot2再入門(2015年バージョン)
ggplot2再入門(2015年バージョン)ggplot2再入門(2015年バージョン)
ggplot2再入門(2015年バージョン)
yutannihilation
 
たのしい関数型
たのしい関数型たのしい関数型
たのしい関数型
Shinichi Kozake
 
Ponanzaにおける強化学習とディープラーニングの応用
Ponanzaにおける強化学習とディープラーニングの応用Ponanzaにおける強化学習とディープラーニングの応用
Ponanzaにおける強化学習とディープラーニングの応用
HEROZ-JAPAN
 
pg_dbms_statsの紹介
pg_dbms_statsの紹介pg_dbms_statsの紹介
pg_dbms_statsの紹介
NTT DATA OSS Professional Services
 
Rあんなときこんなとき(tokyo r#12)
Rあんなときこんなとき(tokyo r#12)Rあんなときこんなとき(tokyo r#12)
Rあんなときこんなとき(tokyo r#12)Shintaro Fukushima
 
Tokyor35 人工データの発生
Tokyor35 人工データの発生Tokyor35 人工データの発生
Tokyor35 人工データの発生Yohei Sato
 
Devsumi 2018summer
Devsumi 2018summerDevsumi 2018summer
Devsumi 2018summer
Harada Kei
 
全部Excelだけで実現しようとして後悔するデータ分析 2nd Edition
全部Excelだけで実現しようとして後悔するデータ分析 2nd Edition 全部Excelだけで実現しようとして後悔するデータ分析 2nd Edition
全部Excelだけで実現しようとして後悔するデータ分析 2nd Edition
__john_smith__
 
C++ ポインタ ブートキャンプ
C++ ポインタ ブートキャンプC++ ポインタ ブートキャンプ
C++ ポインタ ブートキャンプ
Kohsuke Yuasa
 

What's hot (20)

Rstudio事始め
Rstudio事始めRstudio事始め
Rstudio事始め
 
TokyoR101_BeginnersSession2.pdf
TokyoR101_BeginnersSession2.pdfTokyoR101_BeginnersSession2.pdf
TokyoR101_BeginnersSession2.pdf
 
Visual Studio CodeでRを使う
Visual Studio CodeでRを使うVisual Studio CodeでRを使う
Visual Studio CodeでRを使う
 
Yamadai.R チュートリアルセッション
Yamadai.R チュートリアルセッションYamadai.R チュートリアルセッション
Yamadai.R チュートリアルセッション
 
営業さんまで、社員全員がSQLを使う 「越境型組織」 ができるまでの3+1のポイント | リブセンス
営業さんまで、社員全員がSQLを使う 「越境型組織」 ができるまでの3+1のポイント | リブセンス営業さんまで、社員全員がSQLを使う 「越境型組織」 ができるまでの3+1のポイント | リブセンス
営業さんまで、社員全員がSQLを使う 「越境型組織」 ができるまでの3+1のポイント | リブセンス
 
10分で分かるr言語入門ver2.15 15 1010
10分で分かるr言語入門ver2.15 15 101010分で分かるr言語入門ver2.15 15 1010
10分で分かるr言語入門ver2.15 15 1010
 
MonotaRO のデータ活用と基盤の過去、現在、未来
MonotaRO のデータ活用と基盤の過去、現在、未来 MonotaRO のデータ活用と基盤の過去、現在、未来
MonotaRO のデータ活用と基盤の過去、現在、未来
 
ラムダ計算入門
ラムダ計算入門ラムダ計算入門
ラムダ計算入門
 
採用と育成スキームの科学13(配布用資料)
採用と育成スキームの科学13(配布用資料)採用と育成スキームの科学13(配布用資料)
採用と育成スキームの科学13(配布用資料)
 
さらば!データサイエンティスト
さらば!データサイエンティストさらば!データサイエンティスト
さらば!データサイエンティスト
 
PyCon2020 Pythonで競プロをしよう! 〜入門者が知っておくべき高速化Tips〜
PyCon2020 Pythonで競プロをしよう! 〜入門者が知っておくべき高速化Tips〜PyCon2020 Pythonで競プロをしよう! 〜入門者が知っておくべき高速化Tips〜
PyCon2020 Pythonで競プロをしよう! 〜入門者が知っておくべき高速化Tips〜
 
ggplot2再入門(2015年バージョン)
ggplot2再入門(2015年バージョン)ggplot2再入門(2015年バージョン)
ggplot2再入門(2015年バージョン)
 
たのしい関数型
たのしい関数型たのしい関数型
たのしい関数型
 
Ponanzaにおける強化学習とディープラーニングの応用
Ponanzaにおける強化学習とディープラーニングの応用Ponanzaにおける強化学習とディープラーニングの応用
Ponanzaにおける強化学習とディープラーニングの応用
 
pg_dbms_statsの紹介
pg_dbms_statsの紹介pg_dbms_statsの紹介
pg_dbms_statsの紹介
 
Rあんなときこんなとき(tokyo r#12)
Rあんなときこんなとき(tokyo r#12)Rあんなときこんなとき(tokyo r#12)
Rあんなときこんなとき(tokyo r#12)
 
Tokyor35 人工データの発生
Tokyor35 人工データの発生Tokyor35 人工データの発生
Tokyor35 人工データの発生
 
Devsumi 2018summer
Devsumi 2018summerDevsumi 2018summer
Devsumi 2018summer
 
全部Excelだけで実現しようとして後悔するデータ分析 2nd Edition
全部Excelだけで実現しようとして後悔するデータ分析 2nd Edition 全部Excelだけで実現しようとして後悔するデータ分析 2nd Edition
全部Excelだけで実現しようとして後悔するデータ分析 2nd Edition
 
C++ ポインタ ブートキャンプ
C++ ポインタ ブートキャンプC++ ポインタ ブートキャンプ
C++ ポインタ ブートキャンプ
 

Viewers also liked

Sediment TIE手法を用いた 道路塵埃のニホンドロソコエビへの 毒性要因の推定
Sediment TIE手法を用いた 道路塵埃のニホンドロソコエビへの 毒性要因の推定Sediment TIE手法を用いた 道路塵埃のニホンドロソコエビへの 毒性要因の推定
Sediment TIE手法を用いた 道路塵埃のニホンドロソコエビへの 毒性要因の推定
hicky1225
 
統計用言語Rの使い方
統計用言語Rの使い方統計用言語Rの使い方
統計用言語Rの使い方Ak Ok
 
Rで確認しながら解く統計検定2級
Rで確認しながら解く統計検定2級Rで確認しながら解く統計検定2級
Rで確認しながら解く統計検定2級
itoyan110
 
R stan導入公開版
R stan導入公開版R stan導入公開版
R stan導入公開版
考司 小杉
 
RStanとShinyStanによるベイズ統計モデリング入門
RStanとShinyStanによるベイズ統計モデリング入門RStanとShinyStanによるベイズ統計モデリング入門
RStanとShinyStanによるベイズ統計モデリング入門
Masaki Tsuda
 
Stan超初心者入門
Stan超初心者入門Stan超初心者入門
Stan超初心者入門
Hiroshi Shimizu
 
色で失敗しない為に 〜理論に基づく配色フロー〜
色で失敗しない為に 〜理論に基づく配色フロー〜色で失敗しない為に 〜理論に基づく配色フロー〜
色で失敗しない為に 〜理論に基づく配色フロー〜
Yuudai Tachibana
 

Viewers also liked (8)

Sediment TIE手法を用いた 道路塵埃のニホンドロソコエビへの 毒性要因の推定
Sediment TIE手法を用いた 道路塵埃のニホンドロソコエビへの 毒性要因の推定Sediment TIE手法を用いた 道路塵埃のニホンドロソコエビへの 毒性要因の推定
Sediment TIE手法を用いた 道路塵埃のニホンドロソコエビへの 毒性要因の推定
 
統計用言語Rの使い方
統計用言語Rの使い方統計用言語Rの使い方
統計用言語Rの使い方
 
Rで確認しながら解く統計検定2級
Rで確認しながら解く統計検定2級Rで確認しながら解く統計検定2級
Rで確認しながら解く統計検定2級
 
RをAWSで使おう
RをAWSで使おうRをAWSで使おう
RをAWSで使おう
 
R stan導入公開版
R stan導入公開版R stan導入公開版
R stan導入公開版
 
RStanとShinyStanによるベイズ統計モデリング入門
RStanとShinyStanによるベイズ統計モデリング入門RStanとShinyStanによるベイズ統計モデリング入門
RStanとShinyStanによるベイズ統計モデリング入門
 
Stan超初心者入門
Stan超初心者入門Stan超初心者入門
Stan超初心者入門
 
色で失敗しない為に 〜理論に基づく配色フロー〜
色で失敗しない為に 〜理論に基づく配色フロー〜色で失敗しない為に 〜理論に基づく配色フロー〜
色で失敗しない為に 〜理論に基づく配色フロー〜
 

Similar to 統計ソフトRの使い方_2015.04.17

LET2011: Rによる教育データ分析入門
LET2011: Rによる教育データ分析入門LET2011: Rによる教育データ分析入門
LET2011: Rによる教育データ分析入門Yuichiro Kobayashi
 
10min r study_tokyor25
10min r study_tokyor2510min r study_tokyor25
10min r study_tokyor25Nobuaki Oshiro
 
10min r study_tokyor25
10min r study_tokyor2510min r study_tokyor25
10min r study_tokyor25Nobuaki Oshiro
 
HiRoshimaR3_IntroR
HiRoshimaR3_IntroRHiRoshimaR3_IntroR
HiRoshimaR3_IntroR
SAKAUE, Tatsuya
 
Rを用いた外国語教育データの整理・要約
Rを用いた外国語教育データの整理・要約Rを用いた外国語教育データの整理・要約
Rを用いた外国語教育データの整理・要約
Yusaku Kawaguchi
 
第一回Data mining勉強会 -第二章 - 原案
第一回Data mining勉強会 -第二章 - 原案第一回Data mining勉強会 -第二章 - 原案
第一回Data mining勉強会 -第二章 - 原案
yushin_hirano
 
第一回Data mining勉強会 -第二章
第一回Data mining勉強会 -第二章第一回Data mining勉強会 -第二章
第一回Data mining勉強会 -第二章Tomonobu_Hirano
 
Ⅰ. Rの基礎 2017
Ⅰ. Rの基礎 2017Ⅰ. Rの基礎 2017
Ⅰ. Rの基礎 2017
wada, kazumi
 
JASELE2015-KumamotoWS
JASELE2015-KumamotoWSJASELE2015-KumamotoWS
JASELE2015-KumamotoWS
SAKAUE, Tatsuya
 
K010 appstat201201
K010 appstat201201K010 appstat201201
K010 appstat201201t2tarumi
 
TokyoR24 - PerformanceRvsC#
TokyoR24 - PerformanceRvsC#TokyoR24 - PerformanceRvsC#
TokyoR24 - PerformanceRvsC#ta2c
 
ビジネス活用事例で学ぶデータサイエンス入門 #2
ビジネス活用事例で学ぶデータサイエンス入門 #2ビジネス活用事例で学ぶデータサイエンス入門 #2
ビジネス活用事例で学ぶデータサイエンス入門 #2
you shimajiro
 
StatGenSummerSchool2023_Rsoftware.pdf
StatGenSummerSchool2023_Rsoftware.pdfStatGenSummerSchool2023_Rsoftware.pdf
StatGenSummerSchool2023_Rsoftware.pdf
The University of Tokyo, Osaka University, RIKEN IMS
 
SappoRo.R #2 初心者向けWS資料
SappoRo.R #2 初心者向けWS資料SappoRo.R #2 初心者向けWS資料
SappoRo.R #2 初心者向けWS資料考司 小杉
 
Tokyor60 r data_science_part1
Tokyor60 r data_science_part1Tokyor60 r data_science_part1
Tokyor60 r data_science_part1
Yohei Sato
 
Hiroshimar4_Rintro
Hiroshimar4_RintroHiroshimar4_Rintro
Hiroshimar4_Rintro
SAKAUE, Tatsuya
 
統計環境R_はじめの一歩2016
統計環境R_はじめの一歩2016統計環境R_はじめの一歩2016
統計環境R_はじめの一歩2016
wada, kazumi
 
rlistパッケージのススメ
rlistパッケージのススメrlistパッケージのススメ
rlistパッケージのススメ
Yu Tamura
 

Similar to 統計ソフトRの使い方_2015.04.17 (20)

LET2011: Rによる教育データ分析入門
LET2011: Rによる教育データ分析入門LET2011: Rによる教育データ分析入門
LET2011: Rによる教育データ分析入門
 
10min r study_tokyor25
10min r study_tokyor2510min r study_tokyor25
10min r study_tokyor25
 
10min r study_tokyor25
10min r study_tokyor2510min r study_tokyor25
10min r study_tokyor25
 
HiRoshimaR3_IntroR
HiRoshimaR3_IntroRHiRoshimaR3_IntroR
HiRoshimaR3_IntroR
 
Rを用いた外国語教育データの整理・要約
Rを用いた外国語教育データの整理・要約Rを用いた外国語教育データの整理・要約
Rを用いた外国語教育データの整理・要約
 
第一回Data mining勉強会 -第二章 - 原案
第一回Data mining勉強会 -第二章 - 原案第一回Data mining勉強会 -第二章 - 原案
第一回Data mining勉強会 -第二章 - 原案
 
第一回Data mining勉強会 -第二章
第一回Data mining勉強会 -第二章第一回Data mining勉強会 -第二章
第一回Data mining勉強会 -第二章
 
Ⅰ. Rの基礎 2017
Ⅰ. Rの基礎 2017Ⅰ. Rの基礎 2017
Ⅰ. Rの基礎 2017
 
JASELE2015-KumamotoWS
JASELE2015-KumamotoWSJASELE2015-KumamotoWS
JASELE2015-KumamotoWS
 
K010 appstat201201
K010 appstat201201K010 appstat201201
K010 appstat201201
 
Tokyor23 doradora09
Tokyor23 doradora09Tokyor23 doradora09
Tokyor23 doradora09
 
TokyoR24 - PerformanceRvsC#
TokyoR24 - PerformanceRvsC#TokyoR24 - PerformanceRvsC#
TokyoR24 - PerformanceRvsC#
 
ビジネス活用事例で学ぶデータサイエンス入門 #2
ビジネス活用事例で学ぶデータサイエンス入門 #2ビジネス活用事例で学ぶデータサイエンス入門 #2
ビジネス活用事例で学ぶデータサイエンス入門 #2
 
StatGenSummerSchool2023_Rsoftware.pdf
StatGenSummerSchool2023_Rsoftware.pdfStatGenSummerSchool2023_Rsoftware.pdf
StatGenSummerSchool2023_Rsoftware.pdf
 
SappoRo.R #2 初心者向けWS資料
SappoRo.R #2 初心者向けWS資料SappoRo.R #2 初心者向けWS資料
SappoRo.R #2 初心者向けWS資料
 
Tokyor60 r data_science_part1
Tokyor60 r data_science_part1Tokyor60 r data_science_part1
Tokyor60 r data_science_part1
 
QC7tools
QC7toolsQC7tools
QC7tools
 
Hiroshimar4_Rintro
Hiroshimar4_RintroHiroshimar4_Rintro
Hiroshimar4_Rintro
 
統計環境R_はじめの一歩2016
統計環境R_はじめの一歩2016統計環境R_はじめの一歩2016
統計環境R_はじめの一歩2016
 
rlistパッケージのススメ
rlistパッケージのススメrlistパッケージのススメ
rlistパッケージのススメ
 

統計ソフトRの使い方_2015.04.17

  • 1. 山本研 D2-W HIKI 2015 夏学期 統計解析輪講 第一回 2015.04.21 (火) 14:55~16:40 @14号館 輪講室 教科書:「データ解析のための統計モデリング入門」 久保拓弥 2015.04.21 輪講(統計解析) 第一回 統計ソフトRの 概要と使い方入門 1
  • 2. 2015.04.21 輪講(統計解析) 第一回 2 日置担当分の目次 1. そもそもRって? 2. はじめてのR 3. Rでのデータの取り扱い方 - Rの良いところ - その他Rで出来ること - Rに関する注意点 - Rのインストール - パッケージのインストール - Rの見方・ヘルプ 目標:「Rの基礎的な手法を学び、 輪講を円滑に進められる状態にする」 希望的+α:「Rの便利さ・有用さ・面白さ」 教科書では前提とされている内容を 中心に扱います。なので、第2章の入口までしか たどり着きません。 - Rにおけるデータ型 - Rにおけるデータ構造 - データの保存・取り出し法 - データの要約
  • 3. 2015.04.21 輪講(統計解析) 第一回 3 Rの良いところ 1.そもそもRって? ■Rはオープンソースのフリーソフト • 無料でインストール可 • Mac, Windows, Linuxで対応可 • ネット上に多数のマニュアル ⇒ 環境が変わってもずっと使用できる! 就職後も利用OK! • 世界中のユーザが開発したプログラム(=パッケージ)が日々付け加えられ公開される。 ⇒ 常に無料で更新可能なソフトウェア! 例:個体群数理学に関するパッケージ popbio 前回の「数理生態学」輪講で扱った個体群行列モデルを解くパッケージ。 パッケージを使えば、計算は非常に容易になる。下は個体群増加率の感度行列を計算するときの例。 通常の計算コード > lamda <- eigen(A)$values [1] ##Aは射影行列 > w<- eigen(A)$vectors[,1] > v<-eigen(t(A))$vectors[,1] > sensitivity <- v*w/(v%*%w) popbioを用いた時の計算コード > sensitivity(A, zero=FALSE) たった1行でOK!!
  • 4. 2015.04.21 輪講(統計解析) 第一回 4 Rの良いところ 1.そもそもRって? ■充実したグラフィックス機能 • 高度なグラフ化が可能 • 柔軟な作図プログラムが可能 • 図の保存が楽 例:等高線の作図 filled.contour関数で作図 例:複数変数の散布図 Ozone 0 100 250 60 80 050150 0100250 Solar.R Wind 51020 6080 Temp 0 50 150 5 10 20 5 6 7 8 9 56789 Month ※ヨコエビ飼育槽の海水のEEM (http://envrisklab.hatenablog.com/から) 作図コード > plot(airquality[1:5]) ## airqualityは デフォルトで入っているデータ たった1行で上の作図ができる! 例:ヒートマップ作成 heatmap関数で作図 53 52 51 50 9 10 11 12 61 60 5958 57 56 55 54 1 2 3 4 5 6 7 8 19 17 18 13 14 1516 49 48 47 46 45 44 43 42 41 40 20 21 22 23 28 27 2624 25 32 31 30 29 39 38 37 36 35 34 33 56 77473727170 696867123 47675807978 778786858483 82818910 116665646362 575661605958 555453524443 454651474849 501213144241 403933323126 253029282719 202122242315 161718353436 3837 1)
  • 5. 2015.04.21 輪講(統計解析) 第一回 5 Rの良いところ 1.そもそもRって? ■他の統計ソフトとのデータ互換性 • ExcelやSPSSのデータを直接読み込める (read.xls関数など) • ワークシートの一部のデータだけをコピーして読み取ることも可能 例:airquality このairqualityというオブジェクトには 6×153の値が含まれている コード > airquality Ozone Solar.R Wind Temp Month Day 1 41 190 7.4 67 5 1 2 36 118 8.0 72 5 2 3 12 149 12.6 74 5 3 4 18 313 11.5 62 5 4 5 NA NA 14.3 56 5 5 6 28 NA 14.9 66 5 6 7 23 299 8.6 65 5 7 8 19 99 13.8 59 5 8 ・・・ ■「ベクトル処理」 • Rは複数の要素をまとめて「ベクトル」という単位で扱う (※ここで言う「ベクトル」は「データの集合」ぐらいの意味です、たぶん。) ⇒ 複雑なデータを単純に管理・計算できる ⇒ 複雑なコードが不要 (forループやif条件分岐) (※むしろRは他のソフトに比べると、forやwhile計算が格段に遅いらしい。)
  • 6. 2015.04.21 輪講(統計解析) 第一回 6 Rの良いところ 1.そもそもRって? 他にもまだまだ良いところが・・・ 2)
  • 7. 例:2標本のt検定 2015.04.21 輪講(統計解析) 第一回 7 その他Rで出来ること 1.そもそもRって? ■数値計算 • 四則演算が可能 • 関数を用いて微分方程式も解ける コード > 1+1 [1] 2 > (1+2)*3 [1] 9 例:四則演算 ■統計解析 • 仮説検定や多変量解析などのための関数が数多く入っている • 正規性の検定・等分散性の検定・差の検定・主成分分析・クラスター解析 など・・・ ⇒ ルーティン的な解析が容易! (※ただ過程がブラックボックスになりがちなことへの注意が必要) コード > x<-c(1,2,1,2,3,1,2,3) > y<-c(4,2,1,2,0,1,2,1) > t.test(x,y, var.equal=TRUE) ##等分散と仮定 Two Sample t-test data: x and y t = 0.4871, df = 14, p-value = 0.6337 alternative hypothesis: true difference in means is not equal to 0 95 percent confidence interval: -0.8507434 1.3507434
  • 8. 2015.04.21 輪講(統計解析) 第一回 8 その他Rで出来ること 1.そもそもRって? ■関数とプログラミング • 自作の関数を作ることができる • 条件分岐if・switch文や繰り返しfor・while文が使用できる ⇒ 複雑なモデル計算もRで出来る! 例:ファットヘッドミノー個体数推移のモンテカルロシミュレーション モンテカルロシミュレーション:乱数を繰り返し発生させておこなうシミュレーション ちなみにモンテカルロはカジノで有名なモナコ公国の一地区の名前 ファットヘッドミノーの生存率・産仔数に確率変動(乱数)を組み込んで 個体数の推移をシミュレーションした例が右図。 初期個体数は11匹で固定。 ファットヘッドミノー (住化テクノサービスHPより)
  • 9. 2015.04.21 輪講(統計解析) 第一回 9 Rに関する注意点 1.そもそもRって?  文字入力のCUI(キャラクタユーザインターフェイス) ⇒ 慣れるまで時間がかかるかも (※もっともRコマンダーというGUI(グラフィック…)パッケージもある) Rはコンソール画面にテキストを 打ち込んで操作するCUIソフトウェア Rコマンダーというパッケージを使えば ExcelやSPSSのようにGUIにできる (上図はhttp://mjin.doshisha.ac.jp/R/38/38.htmlから)
  • 10. 2015.04.21 輪講(統計解析) 第一回 10 Rに関する注意点 1.そもそもRって?  便利な関数・パッケージがあるので過程がブラックボックスになりがち(Rに限ったことではないですが…) ⇒ 1. おこなう解析の内容を理解する必要 2. ソフトの仕様を理解・確認する必要  場合によっては処理速度が遅い ⇒ 論理判断(for文やif文)を極力排除して、ベクトル化する。  数値計算の誤差(これもRに限ったことではないですが…) 例:t検定 1. t検定は何を仮定しているか?関連検定との関係。 2. t.test関数はデフォルトだと等分散設定。 例:小数の足し算 Rの内部では 10 進数を 2 進数に 直して計算している。そのため、小数 計算の種類によっては近似値(循環 小数)になり、計算結果に数値誤差 が生じる場合がある。 コード > 0.4-0.2-0.2 [1] 0 > 0.4-0.3-0.1 [1] 2.775558e-17 3), 4) 3)  大文字と小文字の区別 Wordでコードを書くと、文頭の文字 が勝手に大文字になるので注意 コード例 > a<-1 > a [1] 1 > A エラー: オブジェクト 'A' がありません
  • 11. 2015.04.21 輪講(統計解析) 第一回 11 Rのインストール・パッケージのインストール 2.はじめてのR ■Rのインストール・起動 • ググって下さい。 • Rをダウンロードする際はCRAN (Comprehensive R Archive Network) の ミラーサイトを選ぶ必要がある。ネットワークへの負荷を抑えるため、東京かつくばを 選択して下さい。 ■パッケージのインストール • Rのメニューバーから「パッケージ」→「パッケージのインストール」 を選び、ミラーサイトを指定し、インストールしたいパッケージを 選ぶ。 • 一度インストールしたパッケージは、 library(パッケージ名)で使用可能。 例:逆行列を求める関数ginv コード > x<-matrix(1:4,2,2) > ginv(x) エラー: 関数 “ginv” を見つけることができま せんでした > library(MASS) > ginv(x) [,1] [,2] [1,] -2 1.5 [2,] 1 -0.5 1)
  • 12. 2015.04.21 輪講(統計解析) 第一回 12 Rの見方・ヘルプ 2.はじめてのR ■コンソール画面の見方 • 「>」 (プロンプト) この後に命令を記入する • 「#」:この後からはコメント 何を書いても改行部分までは影響なし • 「<-」 関数や変数の定義に使用 直後の内容を直前の変数に代入 • [1]:行の先頭に表示される値が1番目の 要素であることを示す • 関数のヘルプは「help(関数名)」か「?関 数名」でウェブ上のものが閲覧可能
  • 13. 2015.04.21 輪講(統計解析) 第一回 13 日置担当分の目次 1. そもそもRって? 2. はじめてのR 3. Rでのデータの取り扱い方 - Rの良いところ - その他Rで出来ること - Rに関する注意点 - Rのインストール - パッケージのインストール - Rの見方・ヘルプ ここからは実際にRを使ってみます。 まずはRの中でデータが どう表現されているのかを見ていきます。 - Rにおけるデータ型 - Rにおけるデータ構造 - データの保存・取り出し法 - データの要約
  • 14. 2015.04.21 輪講(統計解析) 第一回 14 Rにおけるデータ型 3.Rでのデータの取り扱い方 ■データ型の種類 • 「実数」 numeric 例:1, 0.5, 1/3, c(1,2,3) • 「整数」 integer • 「複素数」 complex 例:1+2i, c(1,2+2i) • 「論理値」 logical 例:TRUE, FALSE • 「文字列」 character 例:"abc", "2015/04/21" • 「空」 Null • 「欠損値」 NA • 「非数」 NaN • 「関数」 function などなど コード例 > a<-c(1,2+2i) > mode(a) [1] "complex“ > > is.complex(a) [1] TRUE > is.numeric(a) [1] FALSE > mode(is.complex(a)) [1] "logical" ■データ型の確認法 mode()関数やis.numeric()関数を用いる ()内には調べたい変数や関数を入れる 不適切なデータ型は エラーの原因となる! メッセージの例: variables must be either all real numbers or all factors. ■データ型の変換法 as.numeric()関数などを用いる コード例 > as.numeric(c(TRUE,FALSE,TRUE)) [1] 1 0 1
  • 15. 2015.04.21 輪講(統計解析) 第一回 15 Rにおけるデータ構造 3.Rでのデータの取り扱い方 ■データの構造 データを集合として扱えることがRの特徴(スライドp.5) 集合には下のような種類がある • 「スカラー」 :1個のデータ 例:1, “scalar” • 「ベクトル」 :同じ型のデータの集まり c関数やseq関数を用いて作成する 例:c(1,2,3), seq(1,3, by=1), 1:3 文字列のベクトルも作成可能 コード例 > a<-c(1,4,3) > a [1] 1 4 3 > a[2] [1] 4 ベクトルのx番目の要素 を参照するときは[x] • 「行列」 matrix関数やrbind・cbind関数で作成可能 • 「配列」 :多次元の行列 引数dimで各次元の要素の個数を指定 # 3次元の配列の例 > array(1:6, dim= c(1,3,2) ) , , 1 [,1] [,2] [,3] [1,] 1 2 3 , , 2 [,1] [,2] [,3] [1,] 4 5 6 > aray(1:6, dim= c(2,3,2) ) , , 1 [,1] [,2] [,3] [1,] 1 3 5 [2,] 2 4 6 , , 2 [,1] [,2] [,3] [1,] 1 3 5 [2,] 2 4 6 コード例 > matrix(1:6,nrow=2,ncol=3) [,1] [,2] [,3] [1,] 1 3 5 [2,] 2 4 6 行列のx行y列の要素を参 照するときは[x,y] コード例 > a<-c(“TRUE”,”FALSE”,”TRUE”) > a [1] "TRUE" "FALSE" "TRUE"
  • 16. 2015.04.21 輪講(統計解析) 第一回 16 Rにおけるデータ構造 3.Rでのデータの取り扱い方 ■データの構造 (続き) • 「リスト」 データフレームの進化版 行列・配列・データフレームなど異なる構造のデータを まとめて扱うことができる list関数で作成する コード例 > l<- list (a=c(1,2,3), b= matrix(1:6,nrow=2,ncol=3)) > l $a [1] 1 2 3 $b [,1] [,2] [,3] [1,] 1 3 5 [2,] 2 4 6 > l$a ## $で要素の参照ができる [1] 1 2 3 > l$b[1,2] [1] 3 • 「データフレーム」 :Excelの表みたいなもの 異なる列には異なるデータ型を使用できる 行列との相互変換も可能 コード例 > data.frame(x=c(3,1,2),y=c("A","B","A")) x y 1 3 A 2 1 B 3 2 A コード例 > a x y 1 3 A 2 1 B 3 2 A > data.matrix(a) x y [1,] 3 1 [2,] 1 2 [3,] 2 1 > b<- matrix(1:6,nrow=2,ncol=3) > b [,1] [,2] [,3] [1,] 1 3 5 [2,] 2 4 6 > data.frame(b) X1 X2 X3 1 1 3 5 2 2 4 6 > str(l) ## strは内部構造を調 べる関数 List of 2 $ a: num [1:3] 1 2 3 $ b: int [1:2, 1:3] 1 2 3 4 5 6 > summary(l) ##summaryでも 同様のことができる Length Class Mode a 3 -none- numeric b 6 -none- numeric
  • 17. 2015.04.21 輪講(統計解析) 第一回 17 Rにおけるデータ構造 3.Rでのデータの取り扱い方 ■練習:データフレームの扱い方 Rにデフォルトとして入っているデータ women を用いる(単位はinch, pond)。 コード例: データの閲覧・抽出法 > women #まずデータの確認 height weight 1 58 115 2 59 117 … > women[1,] #1人目だけ取り出す height weight 1 58 115 > women[“height”] #身長だけを取り出す,またはwomen[1] > height 1 58 2 59 … > women[women $height==70,] #身長70のデータだけ取り出す height weight 13 70 154 ## > women[women[“height”]==70,] でもOK コード例: データの閲覧・抽出法 ## subset関数を用いて取り出すこともできる ## subset(データフレーム名, 条件式) ## 身長60インチ以上 かつ 体重125ポンド以下の女性は… > subset(women, height>=60 & weight<=125) height weight 3 60 120 4 61 123 ## NA値を一つでも含むサンプルを除外する ## complete.cases関数を用いる > subset (women, complete.cases(women)) height weight ##このデータフレームだと変化なし 1 58 115 2 59 117 … ちなみに 数学の記号:Rでの表記 = : == != : ≠ ≧ : >= > : > ちなみに 論理演算:Rでの表記 かつ : & または : | ではない : !
  • 18. 2015.04.21 輪講(統計解析) 第一回 18 データの保存・取り出し法 3.Rでのデータの取り扱い方 ■Rへのデータの取り込み方 1. コンソール画面に直に打ち込む 2. Excelファイルから gdataパッケージのread.xls関数を用いる WindowsだとPerlのインストールが必要 Excelデータには日本語を含めてはダメ 3. タブで区切られたファイルから read.table関数を用いる コード例 > height<-c(168,166,152,172) 1) コード例 ##初回はまずメニューバーの「パッケージ」→「パッケージのインストー ル」からgdataを選びインストールする。2回目からこの作業は不要。 > library(gdata) > d<- read.xls(“Excel ファイル名") ## 1行目に変数名がなければ > d<- read.xls(“Excel ファイル名“, header=FALSE) 4. クリップボードから Excel一部だけをコピーしてRで解析したい場合など Windowsとその他のOSでは手法が異なります ここではWindowsの例 5. 保存された作業スペースから メニューバーの「ファイル」→「作業スペースの読み込み」から。 「作業スペースの保存」をすれば、自分で作成したコンソール 画面のデータは「読み込み」して次回以降も使用できる。 試しに教科書chapter 2の 「data R.data」を読み込んでください コード例 > d<-read.table (“データファイル名“, header=TRUE) コード例 ## 変数名をコピー範囲に含む場合 > d<-read.table (“clipboard“, header=TRUE) ## 変数名をコピー範囲に含まない場合 > d<-read.table (“clipboard“, header=FALSE)
  • 19. 2015.04.21 輪講(統計解析) 第一回 19 データの要約:ここから教科書 2章の内容 (2.1) です 3.Rでのデータの取り扱い方 ■例 Rにデフォルトとして入っているデータ airquality を用いる。 ニューヨークの大気観測データ (1973年5月~)。単位は順にppb, lang, mph, °F。 コード例 > airquality Ozone Solar.R Wind Temp Month Day 1 41 190 7.4 67 5 1 2 36 118 8.0 72 5 2 3 12 149 12.6 74 5 3 4 18 313 11.5 62 5 4 … ## 毎回airqualityと打つのが面倒なので > a <- airquality #変数aで定義 ## まずsummaryでデータの概要を見てみる > summary (a) ## 気温のヒストグラムを作成する > hist (a$Temp) > hist (a[,4]) #どちらでも同じ結果です > hist (a$Temp, cex.lab=1.5, cex.axis=1.5) #ラベル・軸の文字を大きくします。デフォルトだと読みにくくて怒られます。
  • 20. 2015.04.21 輪講(統計解析) 第一回 20 データの要約 3.Rでのデータの取り扱い方 ■例 (続き) コード例 ## ヒストグラムの間隔を変更してみる > hist(a$Temp,breaks=seq(50,100,by=2), cex.axis=1.5, cex.lab=1.5) ##因数breaksを用いる。seqは等差数列。実は”breaks=”は書かな くても同じ結果になる。 ## 箱ひげ図を描いてみる > boxplot(a$Temp, cex.axis=1.5) ## 累積分布を描いてみる > plot(sort(a$Temp), cex.axis=1.5) # sortは降順で並び替える関数 Histogram of a$Temp a$Temp Frequency 50 60 70 80 90 100 05101520 60708090 0 50 100 150 60708090 Index sort(a$Temp) 練習:airqualityのOzoneで同様の解析をおこなう
  • 21. 2015.04.21 輪講(統計解析) 第一回 21 データの要約 3.Rでのデータの取り扱い方 ■解答例 Histogram of b$Ozone b$Ozone Frequency 0 50 100 150 200 020406080 Histogram of c cFrequency 0 50 100 150 200 020406080 NAを0とした場合NAを除外した場合
  • 22. 2015.04.21 輪講(統計解析) 第一回 22 参考文献・URL 1) 青木繁伸, 2009, Rによる統計解析, オーム社 2) Rjp wiki, http://www.okada.jp.org/RWiki/ (Rに関する情報交換がおこなわれているWiki) 3) R Tips, http://cse.naro.affrc.go.jp/takezawa/r-tips/r.html (舟尾先生によるRのヒント集, 書籍版もあります) 4) 伊理正夫, 藤野和建, 1985, 数値計算の常識, 共立出版
  • 23. 2015.04.21 輪講(統計解析) 第一回 23 データの要約:ここから教科書 2章の内容です 3.Rでのデータの取り扱い方 ■解答例 NAを0とした場合 コード例 ## > d<-a$Ozone > d[is.na(d)==TRUE]<-0 ##is.na()はNAならばTRUEと返す関数 > hist(d,breaks=seq(0,200,by=20), ylim=c(0,80),cex.lab=1.6,cex.axis=1.6) ## 別解:ifelse関数を使う > c<-ifelse(is.na(a$Ozone),0,a$Ozone) > hist(c,breaks=seq(0,200,by=20), ylim=c(0,80),cex.lab=1.6,cex.axis=1.6) Histogram of c c Frequency 0 50 100 150 200 020406080