Rで学ぶロバスト推定

19,513 views
19,180 views

Published on

1 Comment
25 Likes
Statistics
Notes
  • 28枚目のスライドのrlm()関数中の引数は
    phi = phi.square
    ではなく、
    psi = psi.bisquare
    ですね。
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total views
19,513
On SlideShare
0
From Embeds
0
Number of Embeds
8
Actions
Shares
0
Downloads
111
Comments
1
Likes
25
Embeds 0
No embeds

No notes for slide

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!

×