More Related Content
Similar to Rで学ぶロバスト推定 (20)
More from Shintaro Fukushima
More from Shintaro Fukushima (20)
Rで学ぶロバスト推定
- 4. 分析データには外れ値がつきもの
外れ値? 本当に
外して良い?
ロバスト推定とは,外れ値を除外せずに,受ける影響
を小さくして頑健なモデルを推定する方法
本発表では,ロバスト推定の初歩についてお話します
.
- 5. 目次
1. 自己紹介
2. イントロダクション ~外れ値への対処~
3. ロバスト推定
4. まとめ
- 6. 1. 自己紹介
2. イントロダクション ~外れ値への対処~
3. ロバスト推定
4. まとめ
- 7. 1. 自己紹介
TwitterID: @sfchaos
職業:コンサルタント
金融工学のモデル構築・データ解析
最近,大規模データ解析の企画に着手(Hadoop, Mahout,
CEP等)
「Rパッケージガイドブック」(東京図書,2011年4月
刊行)に記事を書かせてもらいました.
bigmemoryパッケージ(大規模データの管理・分析)
RTisean/tseriesChaosパッケージ(非線形(カオス)時系
列解析)
- 8. 1. 自己紹介
2. イントロダクション ~外れ値への対処~
3. ロバスト推定
4. まとめ
- 9. 2. イントロダクション ~外れ値への対処~
動物の体長・脳の大きさに関するデータ(65レコード)
> library(robustbase)
> data(Animals2, package="robustbase")
> plot(Animals2)
- 11. 例)Mahalanobisの距離を用いた外れ値の除去
D 2 = ( x − µ )t Σ − 1 ( x − µ )
Σ :分散共分散行列
> cen <- apply(Animals2, 2, mean)
> ani2.maha <- mahalanobis(Animals2, cen, cov(Animals2))
> # Mahalanobisの距離を用いた検定統計量がF分布の90%分位点を越える場合は
外れ値とみなす
> n <- nrow(Animals2); p <- ncol(Animals2)
> ng <- n * (n-p)/ ((n^2 - 1) * p) * ani2.maha > qf(0.9, n, p)
> plot(Animals2, col=ifelse(ng, "red", "black"))
> labels <- paste(which(ng), ":", rownames(Animals2)[ng], sep="")
> text(Animals2[ng, ], labels=labels)
- 12. 検出された点を除いても良い?
row.names body brain
61 Asian elephant 2547.000 4603.00
62 African elephant 6654.000 5712.00
65 Brachiosaurus 87000.000 154.50
- 17. 1. 自己紹介
2. イントロダクション ~外れ値への対処~
3. ロバスト推定
4. まとめ
- 27. ロバスト回帰
悪くはないが,少し傾きがきつい?
> phones.rl <- rlm(phones$calls ~ phones$year, maxit=100)
> abline(phones.rl, col="green")
- 30. 線形回帰とロバスト線形回帰
思い通りになっていないけど,phonesデータセットの場合と
同じ現象だから大丈夫!
> abline(lm(brain ~ body, data=Animals2), col="blue")
> abline(rlm(brain ~ body, data=Animals2, maxit=100), col="green")
- 32. パラメータを変えれば,きっと合うよね
・・・合わないorz
> plot(Animals2)
> # 重み関数の形を変えてフィッティングを繰り返す
> for (i in 1:20) abline(rlm(brain ~ body, data=Animals2, maxit=100,
+ psi=psi.bisquare, c=i), col=i)
- 33. パラメータを変えれば,きっと合うよね
・・・合わないorz
M推定には,残差に関する外れ値にはロバストだが,
説明変数の外れ値にはロバストではないという
問題点がある.
> plot(Animals2)
> # 重み関数の形を変えてフィッティングを繰り返す
> for (i in 1:20) abline(rlm(brain ~ body, data=Animals2, maxit=100,
+ psi=psi.bisquare, c=i), col=i)
- 37. 1. 自己紹介
2. イントロダクション ~外れ値への対処~
3. ロバスト推定
4. まとめ