SlideShare a Scribd company logo
1 of 38
主成分分析(PCA)
~ggbiplot・bPCA~
広島大学大学院教育学研究科
難波 修史
第6回Hiroshima.R
2016/02/20
自己紹介
•難波 修史(なんば しゅうし)
•広島大学大学院教育学研究科M2
•感情表情の表出・認知の研究してます。
•R歴:ちょこちょこ
•twitter:@NSushi
主成分分析とは
•英語で書くとPrincipal component
analysis(以下PCA
•データ解析で用いられる次元縮約手法
•文字通り、全体の指標を端的に判断す
るために、複数の要素から2~3程度の
“主成分”を計算する。
もっとわかりやすく
• 参照:http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1236450762
幅が不明 高さが不明
長さが不明
※あくまでイメージです。
斜め45度から見れば?
全部の情報(総合的な車の大きさ)は見える
※ただし各々の精度は落ちる
つまり・・・
•主成分分析とは、一度の視覚で
全体像を見るためのものである。
•どこの角度から見れば、もっと
も良好に全体が見渡せるのか、
それを調べる分析である。
by uminin0055さん
想像してください
•n個の個体につき,p個の変数
•(n × p)の行列(=X):列 iの変数
x1 x2 x3 x... xi x... xp
個体1 x11 x12 x13 x... x1i x... x1p
個体2 x21 x22 x23 x... x2i x... x2p
個体... x.. x.. x.. x... x.. x... x..
個体n xn 1 xn 2 xn 3 x... xni x... xnp
Xn × p →
縮約!!!
• p次元のデータをq次元の下位空間 (q ≦ p) に
縮約するための線型結合の一般式
• zq (第q主成分) = a1qx1 + a2qx2 + … + anqxp
• Zn × q (主成分得点)
= Xn × p ・An × q(行列の演算
• Zでデータをできるだけ説明したい
⇒ Zの分散を最大化するように各係数を決定
第1 第2 … 第i … 第q
x1の係数 a11 a12 a... a1i a... a1p
x2の係数 a21 a22 a... a2i a... a2p
x.. a.. a.. a... a.. a... a..
xn の係数 an 1 an 2 a... ani a... anp
An × q →
PCAをやる上でのアドバイス
• PCAはスケール不変性(スケールを変えて
も特徴が変化しない性質)を持たない
ー> p個の変数は全て標準化すべき
•主成分の数は手法に依存
•2 or 3つの主成分は視覚化の目的のために
使用できる
じゃあ、やってみよう^^
•R内にはたくさんのPCA用のパッ
ケージや機能がある
•prcompをつかうっす
+ ggbiplot
使用するデータ:iris
•説明不要の大人気Data
•Sepal = がく片の長さと幅
•Petal = 花びらの長さと幅
•Species = 花の種類
data (iris)
str (iris) #dataの構造確認
PCAの準備
•まずは連続変数に対してlog変換を
• Venables, W. N., Brian D. R. Modern applied statistics with S-PLUS. Springer-verlag. (Section 11.1)
log.ir <- log(iris[, 1:4])
ir.species <- iris[, 5] #主成分の視覚化用
データの標準化
#PCA: center = T and scale. = T are highly advisable
ir.pca <- prcomp(log.ir, center=T, scale. = T)
•変数の大きさや歪度がPCの結果に影響
するため、PCA前の歪度変換(center
and scale. = T)がいい感じだよ
標準偏差+固有ベクトル
•prcomp = 利用可能な主成分を返す。
•print = 各4PC (さっきのz) の標準偏差
+連続変数 (さっきのx) の線型結合
係数である固有ベクトル (さっきのa)
x1~x4
a1~a4
Plot:各PCの分散
• plot = 分散 (y軸) と主成分 (x軸) のplot
•必要なPCの数を視覚的に判別可能
plot (ir.pca,
type = “l”)
Summary:主成分の重要性
summary (ir.pca)
•最初の行=各主成分の標準偏差
•2行目=各標準偏差の2乗が合計に占める
割合(寄与率)
•3行目=2行目の累積(第2までで95%)
ggbiplot:図にしてみよう
•まずは準備編
library(devtools)
install_github (“ggbiplot”, “vqv”)
※github上で利用可能なfunctionです!
library(ggbiplot)
ggbiplot:描くのだ
• g <- ggbiplot(ir.pca, obs.scale = 1,
var.scale = 1, groups = ir.species,
ellipse = T, circle = T)
• g <- g + scale_color_discrete(name = ‘’)
• g <- g + theme(legend.direction = ‘horizontal’,
legend.position = ‘top’)
• print(g)
main関数
groups消す
speciesの
位置変える
できたのがこれ
Box and Cox変換:準備
• 上記では対数変換してるけど、より一般的
なBox and Cox変換(偏ったデータを正規分
布に近づける変換)も可能だよ。
•caret packageのpreProcessで一発よ
require(caret)
trans = preProcess(iris[,1:4],
method = c(“BoxCox”, “center”,
“scale”, “pca”))
Box and Coxの結果
#Box(ryの各主成分
PC = predict (trans, iris[,1:4])
# 固有ベクトル
trans$rotation
ちなみにggbiplotは
prcomp() or princomp()の
objectしか認識しません
PCAについていろいろ
調べてると。。。
BGM:なんとかかんとかUC
bPCAとはなんぞや?
• PCAからJan Smyckaが着想し、開発してる
パッケージ
• データが多変量正規分布しているものと
して考えることで、MCMCを用いてデー
タに多変量正規分布を当てはめ、平均及
び共分散の事後分布を求めることで、
PCAの主成分、得点、固有値の事後分布
を求めることができる。
いいところ
• (共分散行列を通して)変数間の結合に
関する事前情報を提供可能
• PCAの安定性(不確実性)を評価可能:
特にサンプルサイズが小さい時
• PCや固定ベクトルに関する事後分布をさ
らなる利用のために抽出できる
あかんところ
• 変数が多いと極端に遅い
• 根本的なMVN(多変量正規分布)の前提が
問題
• summaryやplottingにおいて、MCMC連鎖の中
で変数間の重要な結びつきをこわしうる:
JAGS sampler内で固定値・固定ベクトル・主
成分をすべて計算するのが現状最善の策
• JAGSを通してMCMCするのでstanに慣れてると(*´Д`)レベル (QOL) が下がる。
とりあえずいれてみよう
#もちろんdevtoolsを読み込んでから
install_github(“bPCA”, username=“petrkeil”)
library(bPCA)
# またirisつかいましょう
str(iris)
summary(iris[,1:4)
sim.bPCA関数
bPCA.fitted <- sim.bPCA(iris[,1:4],
n.chains=3, n.iter=1000, n.burnin=500)
•#prior 共分散行列も選択可能です
•#詳しくはhelp(sim.bPCA)
固有値
•固有値(=主成分得点のSDの2乗:
元のデータの情報の含有レベル)
eigenvalplots.bPCA(bPCA.fitted,
iris[,1:4)
eigenvalplots.bPCAの図
2.5, 50, 97.5%分位点の事後分布
#下限・真ん中・上限の事後分布をplot
biplots.bPCA(bPCA.fitted, iris[,1:4],
axes.to.plot=1:2, scale=0.1)
固有ベクトルの事後分布
#固有ベクトルの事後分布の要約
loading.chain
<- get.loadings.chain.bPCA(bPCA.fitted,
iris[,1:4])
summary.loadings.bPCA(loading.chain,
vars.to.get=1:4, axes.to.get=1;2)
出てくるFigure
Console上
まだ発展途上なので多少はね?
• We do not guarantee the very idea to be correct
by共同開発者っぽい人
引用:http://www.petrkeil.com/?p=2316
• 気になる人はぜひ色々調べてみて下さい!
• 今後に期待大ですね!
※パッケージは2014年11月以降更新されてい
ません。
まとめ
• PCA=データを縮約して視覚化する手法
• データ前処理 -> prcomp
-> ggbiplot -> キモチイイ
• bPCAというものもあるらしい
※(MCMCハァハァ(*´Д`)する方専用
• 間違い・修正点などなにかございましたら
twitter:@NSushi までお願いします!
参考サイト
• https://www1.doshisha.ac.jp/~mjin/R/24/24.html
• https://tgmstat.wordpress.com/2013/11/21/introd
uction-to-principal-component-analysis-pca/
• http://www.r-bloggers.com/computing-and-
visualizing-pca-in-r/
• http://www.petrkeil.com/?p=2316
• http://statsbeginner.hatenablog.com/entry/2014/0
7/27/121214

More Related Content

What's hot

比例ハザードモデルはとってもtricky!
比例ハザードモデルはとってもtricky!比例ハザードモデルはとってもtricky!
比例ハザードモデルはとってもtricky!takehikoihayashi
 
【読書会資料】『StanとRでベイズ統計モデリング』Chapter12:時間や空間を扱うモデル
【読書会資料】『StanとRでベイズ統計モデリング』Chapter12:時間や空間を扱うモデル【読書会資料】『StanとRでベイズ統計モデリング』Chapter12:時間や空間を扱うモデル
【読書会資料】『StanとRでベイズ統計モデリング』Chapter12:時間や空間を扱うモデルMasashi Komori
 
ggplot2再入門(2015年バージョン)
ggplot2再入門(2015年バージョン)ggplot2再入門(2015年バージョン)
ggplot2再入門(2015年バージョン)yutannihilation
 
Rで因子分析 商用ソフトで実行できない因子分析のあれこれ
Rで因子分析 商用ソフトで実行できない因子分析のあれこれRで因子分析 商用ソフトで実行できない因子分析のあれこれ
Rで因子分析 商用ソフトで実行できない因子分析のあれこれHiroshi Shimizu
 
Stanの便利な事後処理関数
Stanの便利な事後処理関数Stanの便利な事後処理関数
Stanの便利な事後処理関数daiki hojo
 
Stanコードの書き方 中級編
Stanコードの書き方 中級編Stanコードの書き方 中級編
Stanコードの書き方 中級編Hiroshi Shimizu
 
第4回DARM勉強会 (構造方程式モデリング)
第4回DARM勉強会 (構造方程式モデリング)第4回DARM勉強会 (構造方程式モデリング)
第4回DARM勉強会 (構造方程式モデリング)Yoshitake Takebayashi
 
『バックドア基準の入門』@統数研研究集会
『バックドア基準の入門』@統数研研究集会『バックドア基準の入門』@統数研研究集会
『バックドア基準の入門』@統数研研究集会takehikoihayashi
 
階層ベイズと自由エネルギー
階層ベイズと自由エネルギー階層ベイズと自由エネルギー
階層ベイズと自由エネルギーHiroshi Shimizu
 
Deep Learning Lab 異常検知入門
Deep Learning Lab 異常検知入門Deep Learning Lab 異常検知入門
Deep Learning Lab 異常検知入門Shohei Hido
 
生成モデルの Deep Learning
生成モデルの Deep Learning生成モデルの Deep Learning
生成モデルの Deep LearningSeiya Tokui
 
星野「調査観察データの統計科学」第3章
星野「調査観察データの統計科学」第3章星野「調査観察データの統計科学」第3章
星野「調査観察データの統計科学」第3章Shuyo Nakatani
 
StanとRでベイズ統計モデリング読書会 導入編(1章~3章)
StanとRでベイズ統計モデリング読書会 導入編(1章~3章)StanとRでベイズ統計モデリング読書会 導入編(1章~3章)
StanとRでベイズ統計モデリング読書会 導入編(1章~3章)Hiroshi Shimizu
 
RでGPU使ってみた
RでGPU使ってみたRでGPU使ってみた
RでGPU使ってみたKazuya Wada
 
Yamadai.Rデモンストレーションセッション
Yamadai.RデモンストレーションセッションYamadai.Rデモンストレーションセッション
Yamadai.Rデモンストレーションセッション考司 小杉
 
【解説】 一般逆行列
【解説】 一般逆行列【解説】 一般逆行列
【解説】 一般逆行列Kenjiro Sugimoto
 

What's hot (20)

比例ハザードモデルはとってもtricky!
比例ハザードモデルはとってもtricky!比例ハザードモデルはとってもtricky!
比例ハザードモデルはとってもtricky!
 
【読書会資料】『StanとRでベイズ統計モデリング』Chapter12:時間や空間を扱うモデル
【読書会資料】『StanとRでベイズ統計モデリング』Chapter12:時間や空間を扱うモデル【読書会資料】『StanとRでベイズ統計モデリング』Chapter12:時間や空間を扱うモデル
【読書会資料】『StanとRでベイズ統計モデリング』Chapter12:時間や空間を扱うモデル
 
ggplot2再入門(2015年バージョン)
ggplot2再入門(2015年バージョン)ggplot2再入門(2015年バージョン)
ggplot2再入門(2015年バージョン)
 
MICの解説
MICの解説MICの解説
MICの解説
 
Rで因子分析 商用ソフトで実行できない因子分析のあれこれ
Rで因子分析 商用ソフトで実行できない因子分析のあれこれRで因子分析 商用ソフトで実行できない因子分析のあれこれ
Rで因子分析 商用ソフトで実行できない因子分析のあれこれ
 
Stanの便利な事後処理関数
Stanの便利な事後処理関数Stanの便利な事後処理関数
Stanの便利な事後処理関数
 
Stanコードの書き方 中級編
Stanコードの書き方 中級編Stanコードの書き方 中級編
Stanコードの書き方 中級編
 
第4回DARM勉強会 (構造方程式モデリング)
第4回DARM勉強会 (構造方程式モデリング)第4回DARM勉強会 (構造方程式モデリング)
第4回DARM勉強会 (構造方程式モデリング)
 
Stan超初心者入門
Stan超初心者入門Stan超初心者入門
Stan超初心者入門
 
『バックドア基準の入門』@統数研研究集会
『バックドア基準の入門』@統数研研究集会『バックドア基準の入門』@統数研研究集会
『バックドア基準の入門』@統数研研究集会
 
Rの高速化
Rの高速化Rの高速化
Rの高速化
 
階層ベイズと自由エネルギー
階層ベイズと自由エネルギー階層ベイズと自由エネルギー
階層ベイズと自由エネルギー
 
Deep Learning Lab 異常検知入門
Deep Learning Lab 異常検知入門Deep Learning Lab 異常検知入門
Deep Learning Lab 異常検知入門
 
生成モデルの Deep Learning
生成モデルの Deep Learning生成モデルの Deep Learning
生成モデルの Deep Learning
 
Rで学ぶロバスト推定
Rで学ぶロバスト推定Rで学ぶロバスト推定
Rで学ぶロバスト推定
 
星野「調査観察データの統計科学」第3章
星野「調査観察データの統計科学」第3章星野「調査観察データの統計科学」第3章
星野「調査観察データの統計科学」第3章
 
StanとRでベイズ統計モデリング読書会 導入編(1章~3章)
StanとRでベイズ統計モデリング読書会 導入編(1章~3章)StanとRでベイズ統計モデリング読書会 導入編(1章~3章)
StanとRでベイズ統計モデリング読書会 導入編(1章~3章)
 
RでGPU使ってみた
RでGPU使ってみたRでGPU使ってみた
RでGPU使ってみた
 
Yamadai.Rデモンストレーションセッション
Yamadai.RデモンストレーションセッションYamadai.Rデモンストレーションセッション
Yamadai.Rデモンストレーションセッション
 
【解説】 一般逆行列
【解説】 一般逆行列【解説】 一般逆行列
【解説】 一般逆行列
 

More from Shushi Namba

回帰モデルとして見る信号検出理論
回帰モデルとして見る信号検出理論回帰モデルとして見る信号検出理論
回帰モデルとして見る信号検出理論Shushi Namba
 
ベイズモデリングで見る因子分析
ベイズモデリングで見る因子分析ベイズモデリングで見る因子分析
ベイズモデリングで見る因子分析Shushi Namba
 
ベイズモデリングと仲良くするために
ベイズモデリングと仲良くするためにベイズモデリングと仲良くするために
ベイズモデリングと仲良くするためにShushi Namba
 
表情から見た情動
表情から見た情動表情から見た情動
表情から見た情動Shushi Namba
 
今夜は動的モデリングよ~Dynrで簡単クッキング!~
今夜は動的モデリングよ~Dynrで簡単クッキング!~今夜は動的モデリングよ~Dynrで簡単クッキング!~
今夜は動的モデリングよ~Dynrで簡単クッキング!~Shushi Namba
 
Mental model for emotion
Mental model for emotionMental model for emotion
Mental model for emotionShushi Namba
 
ベイズ統計モデリングと心理学
ベイズ統計モデリングと心理学ベイズ統計モデリングと心理学
ベイズ統計モデリングと心理学Shushi Namba
 
馬に蹴られるモデリング
馬に蹴られるモデリング馬に蹴られるモデリング
馬に蹴られるモデリングShushi Namba
 
StanとRでベイズ統計モデリング読書会(Osaka.stan) 第6章
StanとRでベイズ統計モデリング読書会(Osaka.stan) 第6章StanとRでベイズ統計モデリング読書会(Osaka.stan) 第6章
StanとRでベイズ統計モデリング読書会(Osaka.stan) 第6章Shushi Namba
 
Rはいいぞ!むしろなぜ使わないのか!!
Rはいいぞ!むしろなぜ使わないのか!!Rはいいぞ!むしろなぜ使わないのか!!
Rはいいぞ!むしろなぜ使わないのか!!Shushi Namba
 
心理学における「再現性」の問題とBayes Factor
心理学における「再現性」の問題とBayes Factor心理学における「再現性」の問題とBayes Factor
心理学における「再現性」の問題とBayes FactorShushi Namba
 
変数同士の関連_MIC
変数同士の関連_MIC変数同士の関連_MIC
変数同士の関連_MICShushi Namba
 
がんばろう!はじめてのDnn!
がんばろう!はじめてのDnn!がんばろう!はじめてのDnn!
がんばろう!はじめてのDnn!Shushi Namba
 
Psychophysical functions@BCM勉強会
Psychophysical functions@BCM勉強会Psychophysical functions@BCM勉強会
Psychophysical functions@BCM勉強会Shushi Namba
 
Rでベイズをやってみよう!(コワい本1章)@BCM勉強会
Rでベイズをやってみよう!(コワい本1章)@BCM勉強会Rでベイズをやってみよう!(コワい本1章)@BCM勉強会
Rでベイズをやってみよう!(コワい本1章)@BCM勉強会Shushi Namba
 

More from Shushi Namba (15)

回帰モデルとして見る信号検出理論
回帰モデルとして見る信号検出理論回帰モデルとして見る信号検出理論
回帰モデルとして見る信号検出理論
 
ベイズモデリングで見る因子分析
ベイズモデリングで見る因子分析ベイズモデリングで見る因子分析
ベイズモデリングで見る因子分析
 
ベイズモデリングと仲良くするために
ベイズモデリングと仲良くするためにベイズモデリングと仲良くするために
ベイズモデリングと仲良くするために
 
表情から見た情動
表情から見た情動表情から見た情動
表情から見た情動
 
今夜は動的モデリングよ~Dynrで簡単クッキング!~
今夜は動的モデリングよ~Dynrで簡単クッキング!~今夜は動的モデリングよ~Dynrで簡単クッキング!~
今夜は動的モデリングよ~Dynrで簡単クッキング!~
 
Mental model for emotion
Mental model for emotionMental model for emotion
Mental model for emotion
 
ベイズ統計モデリングと心理学
ベイズ統計モデリングと心理学ベイズ統計モデリングと心理学
ベイズ統計モデリングと心理学
 
馬に蹴られるモデリング
馬に蹴られるモデリング馬に蹴られるモデリング
馬に蹴られるモデリング
 
StanとRでベイズ統計モデリング読書会(Osaka.stan) 第6章
StanとRでベイズ統計モデリング読書会(Osaka.stan) 第6章StanとRでベイズ統計モデリング読書会(Osaka.stan) 第6章
StanとRでベイズ統計モデリング読書会(Osaka.stan) 第6章
 
Rはいいぞ!むしろなぜ使わないのか!!
Rはいいぞ!むしろなぜ使わないのか!!Rはいいぞ!むしろなぜ使わないのか!!
Rはいいぞ!むしろなぜ使わないのか!!
 
心理学における「再現性」の問題とBayes Factor
心理学における「再現性」の問題とBayes Factor心理学における「再現性」の問題とBayes Factor
心理学における「再現性」の問題とBayes Factor
 
変数同士の関連_MIC
変数同士の関連_MIC変数同士の関連_MIC
変数同士の関連_MIC
 
がんばろう!はじめてのDnn!
がんばろう!はじめてのDnn!がんばろう!はじめてのDnn!
がんばろう!はじめてのDnn!
 
Psychophysical functions@BCM勉強会
Psychophysical functions@BCM勉強会Psychophysical functions@BCM勉強会
Psychophysical functions@BCM勉強会
 
Rでベイズをやってみよう!(コワい本1章)@BCM勉強会
Rでベイズをやってみよう!(コワい本1章)@BCM勉強会Rでベイズをやってみよう!(コワい本1章)@BCM勉強会
Rでベイズをやってみよう!(コワい本1章)@BCM勉強会
 

主成分分析(Pca)