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 (20)

Rの導入とRStudio事始め(改訂版)
Rの導入とRStudio事始め(改訂版)Rの導入とRStudio事始め(改訂版)
Rの導入とRStudio事始め(改訂版)
Takashi Yamane
 
el text.life science6.tsuneda191106
el text.life science6.tsuneda191106el text.life science6.tsuneda191106
el text.life science6.tsuneda191106
RCCSRENKEI
 
Rにおける大規模データ解析(第10回TokyoWebMining)
Rにおける大規模データ解析(第10回TokyoWebMining)Rにおける大規模データ解析(第10回TokyoWebMining)
Rにおける大規模データ解析(第10回TokyoWebMining)
Shintaro Fukushima
 
Scikit-learnを使って 画像分類を行う
Scikit-learnを使って 画像分類を行うScikit-learnを使って 画像分類を行う
Scikit-learnを使って 画像分類を行う
Arata Honda
 
データサイエンスワールドからC++を眺めてみる
データサイエンスワールドからC++を眺めてみるデータサイエンスワールドからC++を眺めてみる
データサイエンスワールドからC++を眺めてみる
Shintaro Fukushima
 
ggplot2によるグラフ化@HijiyamaR#2
ggplot2によるグラフ化@HijiyamaR#2ggplot2によるグラフ化@HijiyamaR#2
ggplot2によるグラフ化@HijiyamaR#2
nocchi_airport
 
深層学習②
深層学習②深層学習②
深層学習②
ssuser60e2a31
 
Neural Network Intro [인공신경망 설명]
Neural Network Intro [인공신경망 설명]Neural Network Intro [인공신경망 설명]
Neural Network Intro [인공신경망 설명]
Hyunwoo Kim
 
Uplift Modelling 入門(1)
Uplift Modelling 入門(1)Uplift Modelling 入門(1)
Uplift Modelling 入門(1)
Yohei Sato
 
操作変数法の書き方_田淵貴大
操作変数法の書き方_田淵貴大操作変数法の書き方_田淵貴大
操作変数法の書き方_田淵貴大
Takahiro Tabuchi
 
『経済学で出る数学』1章(前半)
『経済学で出る数学』1章(前半)『経済学で出る数学』1章(前半)
『経済学で出る数学』1章(前半)
Yosuke YASUDA
 
Rによるベイジアンネットワーク入門
Rによるベイジアンネットワーク入門Rによるベイジアンネットワーク入門
Rによるベイジアンネットワーク入門
Okamoto Laboratory, The University of Electro-Communications
 
目で見る過学習と正則化
目で見る過学習と正則化目で見る過学習と正則化
目で見る過学習と正則化
y-uti
 
データ解析6 重回帰分析
データ解析6 重回帰分析データ解析6 重回帰分析
データ解析6 重回帰分析
Hirotaka Hachiya
 
RのffとbigmemoryとRevoScaleRとを比較してみた
RのffとbigmemoryとRevoScaleRとを比較してみたRのffとbigmemoryとRevoScaleRとを比較してみた
RのffとbigmemoryとRevoScaleRとを比較してみた
Kazuya Wada
 
ゲームのモデリング
ゲームのモデリングゲームのモデリング
ゲームのモデリング
Keiko Mizuno
 
ggplot2再入門(2015年バージョン)
ggplot2再入門(2015年バージョン)ggplot2再入門(2015年バージョン)
ggplot2再入門(2015年バージョン)
yutannihilation
 
Rのoptim関数でロバスト回帰(LMSとLAV)
Rのoptim関数でロバスト回帰(LMSとLAV)Rのoptim関数でロバスト回帰(LMSとLAV)
Rのoptim関数でロバスト回帰(LMSとLAV)
wada, kazumi
 
Deep learning入門
Deep learning入門Deep learning入門
Deep learning入門
magoroku Yamamoto
 
Rの導入とRStudio事始め(改訂版)
Rの導入とRStudio事始め(改訂版)Rの導入とRStudio事始め(改訂版)
Rの導入とRStudio事始め(改訂版)
Takashi Yamane
 
el text.life science6.tsuneda191106
el text.life science6.tsuneda191106el text.life science6.tsuneda191106
el text.life science6.tsuneda191106
RCCSRENKEI
 
Rにおける大規模データ解析(第10回TokyoWebMining)
Rにおける大規模データ解析(第10回TokyoWebMining)Rにおける大規模データ解析(第10回TokyoWebMining)
Rにおける大規模データ解析(第10回TokyoWebMining)
Shintaro Fukushima
 
Scikit-learnを使って 画像分類を行う
Scikit-learnを使って 画像分類を行うScikit-learnを使って 画像分類を行う
Scikit-learnを使って 画像分類を行う
Arata Honda
 
データサイエンスワールドからC++を眺めてみる
データサイエンスワールドからC++を眺めてみるデータサイエンスワールドからC++を眺めてみる
データサイエンスワールドからC++を眺めてみる
Shintaro Fukushima
 
ggplot2によるグラフ化@HijiyamaR#2
ggplot2によるグラフ化@HijiyamaR#2ggplot2によるグラフ化@HijiyamaR#2
ggplot2によるグラフ化@HijiyamaR#2
nocchi_airport
 
Neural Network Intro [인공신경망 설명]
Neural Network Intro [인공신경망 설명]Neural Network Intro [인공신경망 설명]
Neural Network Intro [인공신경망 설명]
Hyunwoo Kim
 
Uplift Modelling 入門(1)
Uplift Modelling 入門(1)Uplift Modelling 入門(1)
Uplift Modelling 入門(1)
Yohei Sato
 
操作変数法の書き方_田淵貴大
操作変数法の書き方_田淵貴大操作変数法の書き方_田淵貴大
操作変数法の書き方_田淵貴大
Takahiro Tabuchi
 
『経済学で出る数学』1章(前半)
『経済学で出る数学』1章(前半)『経済学で出る数学』1章(前半)
『経済学で出る数学』1章(前半)
Yosuke YASUDA
 
目で見る過学習と正則化
目で見る過学習と正則化目で見る過学習と正則化
目で見る過学習と正則化
y-uti
 
データ解析6 重回帰分析
データ解析6 重回帰分析データ解析6 重回帰分析
データ解析6 重回帰分析
Hirotaka Hachiya
 
RのffとbigmemoryとRevoScaleRとを比較してみた
RのffとbigmemoryとRevoScaleRとを比較してみたRのffとbigmemoryとRevoScaleRとを比較してみた
RのffとbigmemoryとRevoScaleRとを比較してみた
Kazuya Wada
 
ゲームのモデリング
ゲームのモデリングゲームのモデリング
ゲームのモデリング
Keiko Mizuno
 
ggplot2再入門(2015年バージョン)
ggplot2再入門(2015年バージョン)ggplot2再入門(2015年バージョン)
ggplot2再入門(2015年バージョン)
yutannihilation
 
Rのoptim関数でロバスト回帰(LMSとLAV)
Rのoptim関数でロバスト回帰(LMSとLAV)Rのoptim関数でロバスト回帰(LMSとLAV)
Rのoptim関数でロバスト回帰(LMSとLAV)
wada, kazumi
 

Viewers also liked (10)

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とRStudio入門 vol.2
初心者のためのRとRStudio入門 vol.2初心者のためのRとRStudio入門 vol.2
初心者のためのRとRStudio入門 vol.2
OWL.learn
 
R stan導入公開版
R stan導入公開版R stan導入公開版
R stan導入公開版
考司 小杉
 
RStanとShinyStanによるベイズ統計モデリング入門
RStanとShinyStanによるベイズ統計モデリング入門RStanとShinyStanによるベイズ統計モデリング入門
RStanとShinyStanによるベイズ統計モデリング入門
Masaki Tsuda
 
Rstudio事始め
Rstudio事始めRstudio事始め
Rstudio事始め
Takashi Yamane
 
Stan超初心者入門
Stan超初心者入門Stan超初心者入門
Stan超初心者入門
Hiroshi Shimizu
 
色で失敗しない為に 〜理論に基づく配色フロー〜
色で失敗しない為に 〜理論に基づく配色フロー〜色で失敗しない為に 〜理論に基づく配色フロー〜
色で失敗しない為に 〜理論に基づく配色フロー〜
Yuudai Tachibana
 
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とRStudio入門 vol.2
初心者のためのRとRStudio入門 vol.2初心者のためのRとRStudio入門 vol.2
初心者のためのRとRStudio入門 vol.2
OWL.learn
 
R stan導入公開版
R stan導入公開版R stan導入公開版
R stan導入公開版
考司 小杉
 
RStanとShinyStanによるベイズ統計モデリング入門
RStanとShinyStanによるベイズ統計モデリング入門RStanとShinyStanによるベイズ統計モデリング入門
RStanとShinyStanによるベイズ統計モデリング入門
Masaki Tsuda
 
色で失敗しない為に 〜理論に基づく配色フロー〜
色で失敗しない為に 〜理論に基づく配色フロー〜色で失敗しない為に 〜理論に基づく配色フロー〜
色で失敗しない為に 〜理論に基づく配色フロー〜
Yuudai Tachibana
 
Ad

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

StatGenSummerSchool2023_Rsoftware.pdf
StatGenSummerSchool2023_Rsoftware.pdfStatGenSummerSchool2023_Rsoftware.pdf
StatGenSummerSchool2023_Rsoftware.pdf
The University of Tokyo, Osaka University, RIKEN IMS
 
統計解析環境Rによる統計処理の基本―検定と視覚化―
統計解析環境Rによる統計処理の基本―検定と視覚化―統計解析環境Rによる統計処理の基本―検定と視覚化―
統計解析環境Rによる統計処理の基本―検定と視覚化―
SAKAUE, Tatsuya
 
K010 appstat201201
K010 appstat201201K010 appstat201201
K010 appstat201201
t2tarumi
 
Ⅰ. Rの基礎 2017
Ⅰ. Rの基礎 2017Ⅰ. Rの基礎 2017
Ⅰ. Rの基礎 2017
wada, kazumi
 
HiRoshimaR3_IntroR
HiRoshimaR3_IntroRHiRoshimaR3_IntroR
HiRoshimaR3_IntroR
SAKAUE, Tatsuya
 
統計環境R_はじめの一歩2016
統計環境R_はじめの一歩2016統計環境R_はじめの一歩2016
統計環境R_はじめの一歩2016
wada, kazumi
 
Rプログラミング01 はじめの一歩
Rプログラミング01 はじめの一歩Rプログラミング01 はじめの一歩
Rプログラミング01 はじめの一歩
wada, kazumi
 
10min r study_tokyor25
10min r study_tokyor2510min r study_tokyor25
10min r study_tokyor25
Nobuaki Oshiro
 
10min r study_tokyor25
10min r study_tokyor2510min r study_tokyor25
10min r study_tokyor25
Nobuaki Oshiro
 
SappoRo.R #2 初心者向けWS資料
SappoRo.R #2 初心者向けWS資料SappoRo.R #2 初心者向けWS資料
SappoRo.R #2 初心者向けWS資料
考司 小杉
 
初心者講習会資料(Osaka.R#5)
初心者講習会資料(Osaka.R#5)初心者講習会資料(Osaka.R#5)
初心者講習会資料(Osaka.R#5)
Masahiro Hayashi
 
LET2011: Rによる教育データ分析入門
LET2011: Rによる教育データ分析入門LET2011: Rによる教育データ分析入門
LET2011: Rによる教育データ分析入門
Yuichiro Kobayashi
 
R intro
R introR intro
R intro
yayamamo @ DBCLS Kashiwanoha
 
外国語教育メディア学会第54回全国研究大会ワークショップ「Rによる外国語教育データの分析と可視化の基本」
外国語教育メディア学会第54回全国研究大会ワークショップ「Rによる外国語教育データの分析と可視化の基本」外国語教育メディア学会第54回全国研究大会ワークショップ「Rによる外国語教育データの分析と可視化の基本」
外国語教育メディア学会第54回全国研究大会ワークショップ「Rによる外国語教育データの分析と可視化の基本」
SAKAUE, Tatsuya
 
第1回R勉強会@東京
第1回R勉強会@東京第1回R勉強会@東京
第1回R勉強会@東京
Yohei Sato
 
10分で分かるr言語入門ver2.9 14 0920
10分で分かるr言語入門ver2.9 14 0920 10分で分かるr言語入門ver2.9 14 0920
10分で分かるr言語入門ver2.9 14 0920
Nobuaki Oshiro
 
Nagoya.R #14 入門者講習
Nagoya.R #14 入門者講習Nagoya.R #14 入門者講習
Nagoya.R #14 入門者講習
Yusaku Kawaguchi
 
Hiroshimar4_Rintro
Hiroshimar4_RintroHiroshimar4_Rintro
Hiroshimar4_Rintro
SAKAUE, Tatsuya
 
12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと
12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと 12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと
12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと
Haruka Ozaki
 
統計解析環境Rによる統計処理の基本―検定と視覚化―
統計解析環境Rによる統計処理の基本―検定と視覚化―統計解析環境Rによる統計処理の基本―検定と視覚化―
統計解析環境Rによる統計処理の基本―検定と視覚化―
SAKAUE, Tatsuya
 
K010 appstat201201
K010 appstat201201K010 appstat201201
K010 appstat201201
t2tarumi
 
Ⅰ. Rの基礎 2017
Ⅰ. Rの基礎 2017Ⅰ. Rの基礎 2017
Ⅰ. Rの基礎 2017
wada, kazumi
 
統計環境R_はじめの一歩2016
統計環境R_はじめの一歩2016統計環境R_はじめの一歩2016
統計環境R_はじめの一歩2016
wada, kazumi
 
Rプログラミング01 はじめの一歩
Rプログラミング01 はじめの一歩Rプログラミング01 はじめの一歩
Rプログラミング01 はじめの一歩
wada, kazumi
 
10min r study_tokyor25
10min r study_tokyor2510min r study_tokyor25
10min r study_tokyor25
Nobuaki Oshiro
 
10min r study_tokyor25
10min r study_tokyor2510min r study_tokyor25
10min r study_tokyor25
Nobuaki Oshiro
 
SappoRo.R #2 初心者向けWS資料
SappoRo.R #2 初心者向けWS資料SappoRo.R #2 初心者向けWS資料
SappoRo.R #2 初心者向けWS資料
考司 小杉
 
初心者講習会資料(Osaka.R#5)
初心者講習会資料(Osaka.R#5)初心者講習会資料(Osaka.R#5)
初心者講習会資料(Osaka.R#5)
Masahiro Hayashi
 
LET2011: Rによる教育データ分析入門
LET2011: Rによる教育データ分析入門LET2011: Rによる教育データ分析入門
LET2011: Rによる教育データ分析入門
Yuichiro Kobayashi
 
外国語教育メディア学会第54回全国研究大会ワークショップ「Rによる外国語教育データの分析と可視化の基本」
外国語教育メディア学会第54回全国研究大会ワークショップ「Rによる外国語教育データの分析と可視化の基本」外国語教育メディア学会第54回全国研究大会ワークショップ「Rによる外国語教育データの分析と可視化の基本」
外国語教育メディア学会第54回全国研究大会ワークショップ「Rによる外国語教育データの分析と可視化の基本」
SAKAUE, Tatsuya
 
第1回R勉強会@東京
第1回R勉強会@東京第1回R勉強会@東京
第1回R勉強会@東京
Yohei Sato
 
10分で分かるr言語入門ver2.9 14 0920
10分で分かるr言語入門ver2.9 14 0920 10分で分かるr言語入門ver2.9 14 0920
10分で分かるr言語入門ver2.9 14 0920
Nobuaki Oshiro
 
Nagoya.R #14 入門者講習
Nagoya.R #14 入門者講習Nagoya.R #14 入門者講習
Nagoya.R #14 入門者講習
Yusaku Kawaguchi
 
12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと
12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと 12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと
12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと
Haruka Ozaki
 
Ad

統計ソフト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