Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Rで学ぶロバスト推定 2011年4月29日  第13回Tokyo.R    @sfchaos
本発表の趣旨 分析データには外れ値がつきもの           外れ値?
 分析データには外れ値がつきもの           外れ値?      本当に                    外して良い?
 分析データには外れ値がつきもの           外れ値?      本当に                    外して良い? ロバスト推定とは,外れ値を除外せずに,受ける影響  を小さくして頑健なモデルを推定する方法 本発表では,...
目次1.   自己紹介2.   イントロダクション ~外れ値への対処~3.   ロバスト推定4.   まとめ
1.   自己紹介2.   イントロダクション ~外れ値への対処~3.   ロバスト推定4.   まとめ
1. 自己紹介 TwitterID: @sfchaos 職業:コンサルタント   金融工学のモデル構築・データ解析   最近,大規模データ解析の企画に着手(Hadoop, Mahout,    CEP等) 「Rパッケージガイドブック」...
1.   自己紹介2.   イントロダクション ~外れ値への対処~3.   ロバスト推定4.   まとめ
2. イントロダクション ~外れ値への対処~ 動物の体長・脳の大きさに関するデータ(65レコード)> library(robustbase)> data(Animals2, package="robustbase")> plot(Animal...
2.1 普通に考えると・・・ 外れ値を検出して除去する        外れ値の 元データ            外れ値         検出                 外れ値の   データの性質や実務        統計的手法を    ...
 例)Mahalanobisの距離を用いた外れ値の除去  D 2 = ( x − µ )t Σ − 1 ( x − µ )     Σ   :分散共分散行列> cen <- apply(Animals2, 2, mean)> ani2.mah...
 検出された点を除いても良い?               row.names         body       brain       61   Asian elephant     2547.000    4603.00       ...
 仮に外れ値を除去すると・・・                     新しい外れ値                   (らしきもの)が出現                     (screening)                  ...
2.2 外れ値を除去せずに分析してみる とりあえずデータをそのまま線形回帰分析に突っ込む> ans.lm <- lm(brain ~ body, data=Animals2)> abline(ans.lm, col="blue")
 ダメポ。・゚・(ノД`)・゚・。> ans.lm <- lm(brain ~ body, data=Animals2)> abline(ans.lm, col="blue")
2.3 そこでロバスト回帰が登場!! 望んでいた結果が得られる.> library(robustbase)> ans.lmrob <- lmrob(brain ~ body, data=Animals2)> abline(ans.lmrob,...
1.   自己紹介2.   イントロダクション ~外れ値への対処~3.   ロバスト推定4.   まとめ
3.1 そもそも線形回帰って? faithfulデータ(272レコード)
残差
 残差の二乗の和が最小となる回帰直線を選ぶ.              N          min ∑ ri   2              i= 1
 普通の線形回帰では,               残差               >
3.2 ロバスト推定 ロバスト推定には,M推定法,L推定法,R推定法等  が知られている. 今日は,M推定法についてお話します. 簡単のため,データは2次元のものに限って説明しま  す.
3.3 普通の回帰分析とM推定の考え方の違い 線形回帰の場合は,すべての点を同じ重みで考えて  いる.                N          min ∑ ri 2 = 1 ⋅ ri 2               i= 1
 M推定では,モデルへの当てはまりが悪い点の重み  を低く設定することにより影響を小さくする.                          N                     min ∑ ρ (ri )※実際は,M推定は  最尤...
3.4 実データに対するロバスト推定① phonesデータセット  1950年~73年までのベルギーにおける電話回数(単位:   百万件).  1964年~69年は電話時間が記録されている.
 念のため,線形回帰もやってみる.> phones.lm <- lm(phones$calls ~ phones$year)> abline(phones.rl, col="blue")
 ロバスト回帰     悪くはないが,少し傾きがきつい?> phones.rl <- rlm(phones$calls ~ phones$year, maxit=100)> abline(phones.rl, col="green")
 重み付け関数を変更する.> phones.rl <- rlm(phones$calls ~ phones$year, maxit=100, phi=phi.square)> abline(phones.rl, col="red")
② お待ちかね(?)のAnimals2データセット
 線形回帰とロバスト線形回帰     思い通りになっていないけど,phonesデータセットの場合と      同じ現象だから大丈夫!> abline(lm(brain ~ body, data=Animals2), col="blue")>...
 よし,できた! ・・・あれ?> abline(rlm(brain ~ body, data=Animals2, psi=psi.bisquare), col="pink")
 パラメータを変えれば,きっと合うよね  ・・・合わないorz> plot(Animals2)> # 重み関数の形を変えてフィッティングを繰り返す> for (i in 1:20) abline(rlm(brain ~ body, data=...
 パラメータを変えれば,きっと合うよね  ・・・合わないorz  M推定には,残差に関する外れ値にはロバストだが,   説明変数の外れ値にはロバストではないという          問題点がある.> plot(Animals2)> # 重み関...
 MM推定という方法を用いると,この問題は解決する  ことが多い.> plot(Animals2)> abline(rlm(brain ~ body, data=Animals2, method="MM"), col="red")
 最新の手法が入っているrobustbaseパッケージの  lmrob関数を使っても同様の結果が得られる.> plot(Animals2)> abline(lmrob(brain ~ body, data=Animals2), col="re...
 高次元のデータに対しては,2次元のデータのように  視覚的に外れ値を検出できるわけではない.  → パラメータをチューニングしながら    試行錯誤する必要あり
1.   自己紹介2.   イントロダクション ~外れ値への対処~3.   ロバスト推定4.   まとめ
4. まとめ ロバスト推定とは,外れ値を除去することなく,与える  影響が小さくなるようにモデルを推定する方法 M推定法は最も簡単なロバスト推定法であるが,説  明変数の外れ値に対してはロバストではない. 各種ロバスト推定法の適用にあたっ...
Tokyo.R 翻訳プロジェクトWiki Tokyo.Rの主催者@yokkunsさんが立ち上げたWikiで  ,パッケージのTask Viewやvignette,Rの公式マニュ  アル等のドキュメントを現在,約10名で翻訳中 Please ...
Upcoming SlideShare
Loading in …5
×

Rで学ぶロバスト推定

24,513 views

Published on

  • 28枚目のスライドのrlm()関数中の引数は
    phi = phi.square
    ではなく、
    psi = psi.bisquare
    ですね。
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

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!

×