O slideshow foi denunciado.
Seu SlideShare está sendo baixado. ×

Rで学ぶロバスト推定

Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Carregando em…3
×

Confira estes a seguir

1 de 39 Anúncio

Mais Conteúdo rRelacionado

Diapositivos para si (20)

Semelhante a Rで学ぶロバスト推定 (20)

Anúncio

Mais de Shintaro Fukushima (20)

Rで学ぶロバスト推定

  1. 1. Rで学ぶロバスト推定 2011年4月29日 第13回Tokyo.R @sfchaos
  2. 2. 本発表の趣旨  分析データには外れ値がつきもの 外れ値?
  3. 3.  分析データには外れ値がつきもの 外れ値? 本当に 外して良い?
  4. 4.  分析データには外れ値がつきもの 外れ値? 本当に 外して良い?  ロバスト推定とは,外れ値を除外せずに,受ける影響 を小さくして頑健なモデルを推定する方法  本発表では,ロバスト推定の初歩についてお話します .
  5. 5. 目次 1. 自己紹介 2. イントロダクション ~外れ値への対処~ 3. ロバスト推定 4. まとめ
  6. 6. 1. 自己紹介 2. イントロダクション ~外れ値への対処~ 3. ロバスト推定 4. まとめ
  7. 7. 1. 自己紹介  TwitterID: @sfchaos  職業:コンサルタント  金融工学のモデル構築・データ解析  最近,大規模データ解析の企画に着手(Hadoop, Mahout, CEP等)  「Rパッケージガイドブック」(東京図書,2011年4月 刊行)に記事を書かせてもらいました.  bigmemoryパッケージ(大規模データの管理・分析)  RTisean/tseriesChaosパッケージ(非線形(カオス)時系 列解析)
  8. 8. 1. 自己紹介 2. イントロダクション ~外れ値への対処~ 3. ロバスト推定 4. まとめ
  9. 9. 2. イントロダクション ~外れ値への対処~  動物の体長・脳の大きさに関するデータ(65レコード) > library(robustbase) > data(Animals2, package="robustbase") > plot(Animals2)
  10. 10. 2.1 普通に考えると・・・  外れ値を検出して除去する 外れ値の 元データ 外れ値 検出 外れ値の データの性質や実務 統計的手法を 除去判断 的な観点を考慮 使用 外れ値の 分析対象 除去 データ
  11. 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. 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
  13. 13.  仮に外れ値を除去すると・・・ 新しい外れ値 (らしきもの)が出現 (screening) 高次元では外れ値の除去は 難しい問題orz
  14. 14. 2.2 外れ値を除去せずに分析してみる  とりあえずデータをそのまま線形回帰分析に突っ込む > ans.lm <- lm(brain ~ body, data=Animals2) > abline(ans.lm, col="blue")
  15. 15.  ダメポ。・゚・(ノД`)・゚・。 > ans.lm <- lm(brain ~ body, data=Animals2) > abline(ans.lm, col="blue")
  16. 16. 2.3 そこでロバスト回帰が登場!!  望んでいた結果が得られる. > library(robustbase) > ans.lmrob <- lmrob(brain ~ body, data=Animals2) > abline(ans.lmrob, col="red")
  17. 17. 1. 自己紹介 2. イントロダクション ~外れ値への対処~ 3. ロバスト推定 4. まとめ
  18. 18. 3.1 そもそも線形回帰って?  faithfulデータ(272レコード)
  19. 19. 残差
  20. 20.  残差の二乗の和が最小となる回帰直線を選ぶ. N min ∑ ri 2 i= 1
  21. 21.  普通の線形回帰では, 残差 >
  22. 22. 3.2 ロバスト推定  ロバスト推定には,M推定法,L推定法,R推定法等 が知られている.  今日は,M推定法についてお話します.  簡単のため,データは2次元のものに限って説明しま す.
  23. 23. 3.3 普通の回帰分析とM推定の考え方の違い  線形回帰の場合は,すべての点を同じ重みで考えて いる. N min ∑ ri 2 = 1 ⋅ ri 2 i= 1
  24. 24.  M推定では,モデルへの当てはまりが悪い点の重み を低く設定することにより影響を小さくする. N min ∑ ρ (ri ) ※実際は,M推定は   最尤推定の一般化になっているが,   ここでは説明を割愛 i= 1
  25. 25. 3.4 実データに対するロバスト推定 ① phonesデータセット  1950年~73年までのベルギーにおける電話回数(単位: 百万件).  1964年~69年は電話時間が記録されている.
  26. 26.  念のため,線形回帰もやってみる. > phones.lm <- lm(phones$calls ~ phones$year) > abline(phones.rl, col="blue")
  27. 27.  ロバスト回帰  悪くはないが,少し傾きがきつい? > phones.rl <- rlm(phones$calls ~ phones$year, maxit=100) > abline(phones.rl, col="green")
  28. 28.  重み付け関数を変更する. > phones.rl <- rlm(phones$calls ~ phones$year, maxit=100, phi=phi.square) > abline(phones.rl, col="red")
  29. 29. ② お待ちかね(?)のAnimals2データセット
  30. 30.  線形回帰とロバスト線形回帰  思い通りになっていないけど,phonesデータセットの場合と 同じ現象だから大丈夫! > abline(lm(brain ~ body, data=Animals2), col="blue") > abline(rlm(brain ~ body, data=Animals2, maxit=100), col="green")
  31. 31.  よし,できた! ・・・あれ? > abline(rlm(brain ~ body, data=Animals2, psi=psi.bisquare), col="pink")
  32. 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. 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)
  34. 34.  MM推定という方法を用いると,この問題は解決する ことが多い. > plot(Animals2) > abline(rlm(brain ~ body, data=Animals2, method="MM"), col="red")
  35. 35.  最新の手法が入っているrobustbaseパッケージの lmrob関数を使っても同様の結果が得られる. > plot(Animals2) > abline(lmrob(brain ~ body, data=Animals2), col="red")
  36. 36.  高次元のデータに対しては,2次元のデータのように 視覚的に外れ値を検出できるわけではない. → パラメータをチューニングしながら     試行錯誤する必要あり
  37. 37. 1. 自己紹介 2. イントロダクション ~外れ値への対処~ 3. ロバスト推定 4. まとめ
  38. 38. 4. まとめ  ロバスト推定とは,外れ値を除去することなく,与える 影響が小さくなるようにモデルを推定する方法  M推定法は最も簡単なロバスト推定法であるが,説 明変数の外れ値に対してはロバストではない.  各種ロバスト推定法の適用にあたっては,パラメータ のチューニングが必要.
  39. 39. Tokyo.R 翻訳プロジェクトWiki  Tokyo.Rの主催者@yokkunsさんが立ち上げたWikiで ,パッケージのTask Viewやvignette,Rの公式マニュ アル等のドキュメントを現在,約10名で翻訳中  Please join us!

×