SlideShare a Scribd company logo
1 of 39
Download to read offline
Rで学ぶロバスト推定

 2011年4月29日
  第13回Tokyo.R
    @sfchaos
本発表の趣旨
 分析データには外れ値がつきもの




           外れ値?
 分析データには外れ値がつきもの




           外れ値?      本当に
                    外して良い?
 分析データには外れ値がつきもの




           外れ値?      本当に
                    外して良い?



 ロバスト推定とは,外れ値を除外せずに,受ける影響
  を小さくして頑健なモデルを推定する方法
 本発表では,ロバスト推定の初歩についてお話します
  .
目次
1.   自己紹介
2.   イントロダクション ~外れ値への対処~
3.   ロバスト推定
4.   まとめ
1.   自己紹介
2.   イントロダクション ~外れ値への対処~
3.   ロバスト推定
4.   まとめ
1. 自己紹介
 TwitterID: @sfchaos
 職業:コンサルタント
   金融工学のモデル構築・データ解析
   最近,大規模データ解析の企画に着手(Hadoop, Mahout,
    CEP等)
 「Rパッケージガイドブック」(東京図書,2011年4月
  刊行)に記事を書かせてもらいました.
   bigmemoryパッケージ(大規模データの管理・分析)
   RTisean/tseriesChaosパッケージ(非線形(カオス)時系
    列解析)
1.   自己紹介
2.   イントロダクション ~外れ値への対処~
3.   ロバスト推定
4.   まとめ
2. イントロダクション ~外れ値への対処~
 動物の体長・脳の大きさに関するデータ(65レコード)




> library(robustbase)
> data(Animals2, package="robustbase")
> plot(Animals2)
2.1 普通に考えると・・・
 外れ値を検出して除去する

        外れ値の
 元データ            外れ値
         検出


                 外れ値の   データの性質や実務
        統計的手法を
                 除去判断    的な観点を考慮
          使用


                 外れ値の    分析対象
                  除去      データ
 例)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)
 検出された点を除いても良い?




               row.names         body       brain
       61   Asian elephant     2547.000    4603.00
       62   African elephant   6654.000    5712.00
       65   Brachiosaurus      87000.000   154.50
 仮に外れ値を除去すると・・・




                     新しい外れ値
                   (らしきもの)が出現
                     (screening)

                   高次元では外れ値の除去は
                      難しい問題orz
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, col="red")
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推定は
  最尤推定の一般化になっているが,
  ここでは説明を割愛              i= 1
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, maxit=100), col="green")
 よし,できた! ・・・あれ?




> abline(rlm(brain ~ body, data=Animals2, psi=psi.bisquare), col="pink")
 パラメータを変えれば,きっと合うよね
  ・・・合わないorz




> plot(Animals2)
> # 重み関数の形を変えてフィッティングを繰り返す
> for (i in 1:20) abline(rlm(brain ~ body, data=Animals2, maxit=100,
+                        psi=psi.bisquare, c=i), col=i)
 パラメータを変えれば,きっと合うよね
  ・・・合わないorz


  M推定には,残差に関する外れ値にはロバストだが,
   説明変数の外れ値にはロバストではないという
          問題点がある.


> plot(Animals2)
> # 重み関数の形を変えてフィッティングを繰り返す
> for (i in 1:20) abline(rlm(brain ~ body, data=Animals2, maxit=100,
+                        psi=psi.bisquare, c=i), col=i)
 MM推定という方法を用いると,この問題は解決する
  ことが多い.




> plot(Animals2)
> abline(rlm(brain ~ body, data=Animals2, method="MM"), col="red")
 最新の手法が入っているrobustbaseパッケージの
  lmrob関数を使っても同様の結果が得られる.




> plot(Animals2)
> abline(lmrob(brain ~ body, data=Animals2), col="red")
 高次元のデータに対しては,2次元のデータのように
  視覚的に外れ値を検出できるわけではない.
  → パラメータをチューニングしながら
    試行錯誤する必要あり
1.   自己紹介
2.   イントロダクション ~外れ値への対処~
3.   ロバスト推定
4.   まとめ
4. まとめ
 ロバスト推定とは,外れ値を除去することなく,与える
  影響が小さくなるようにモデルを推定する方法
 M推定法は最も簡単なロバスト推定法であるが,説
  明変数の外れ値に対してはロバストではない.
 各種ロバスト推定法の適用にあたっては,パラメータ
  のチューニングが必要.
Tokyo.R 翻訳プロジェクトWiki
 Tokyo.Rの主催者@yokkunsさんが立ち上げたWikiで
  ,パッケージのTask Viewやvignette,Rの公式マニュ
  アル等のドキュメントを現在,約10名で翻訳中
 Please join us!

More Related Content

What's hot

変分推論法(変分ベイズ法)(PRML第10章)
変分推論法(変分ベイズ法)(PRML第10章)変分推論法(変分ベイズ法)(PRML第10章)
変分推論法(変分ベイズ法)(PRML第10章)
Takao Yamanaka
 
階層ベイズによるワンToワンマーケティング入門
階層ベイズによるワンToワンマーケティング入門階層ベイズによるワンToワンマーケティング入門
階層ベイズによるワンToワンマーケティング入門
shima o
 
グラフィカルモデル入門
グラフィカルモデル入門グラフィカルモデル入門
グラフィカルモデル入門
Kawamoto_Kazuhiko
 

What's hot (20)

関数データ解析の概要とその方法
関数データ解析の概要とその方法関数データ解析の概要とその方法
関数データ解析の概要とその方法
 
Stanの便利な事後処理関数
Stanの便利な事後処理関数Stanの便利な事後処理関数
Stanの便利な事後処理関数
 
因果探索: 基本から最近の発展までを概説
因果探索: 基本から最近の発展までを概説因果探索: 基本から最近の発展までを概説
因果探索: 基本から最近の発展までを概説
 
金融時系列のための深層t過程回帰モデル
金融時系列のための深層t過程回帰モデル金融時系列のための深層t過程回帰モデル
金融時系列のための深層t過程回帰モデル
 
StanとRでベイズ統計モデリングに関する読書会(Osaka.stan) 第四章
StanとRでベイズ統計モデリングに関する読書会(Osaka.stan) 第四章StanとRでベイズ統計モデリングに関する読書会(Osaka.stan) 第四章
StanとRでベイズ統計モデリングに関する読書会(Osaka.stan) 第四章
 
変分推論法(変分ベイズ法)(PRML第10章)
変分推論法(変分ベイズ法)(PRML第10章)変分推論法(変分ベイズ法)(PRML第10章)
変分推論法(変分ベイズ法)(PRML第10章)
 
あなたの心にBridgeSampling
あなたの心にBridgeSamplingあなたの心にBridgeSampling
あなたの心にBridgeSampling
 
階層ベイズによるワンToワンマーケティング入門
階層ベイズによるワンToワンマーケティング入門階層ベイズによるワンToワンマーケティング入門
階層ベイズによるワンToワンマーケティング入門
 
『バックドア基準の入門』@統数研研究集会
『バックドア基準の入門』@統数研研究集会『バックドア基準の入門』@統数研研究集会
『バックドア基準の入門』@統数研研究集会
 
異常検知と変化検知 9章 部分空間法による変化点検知
異常検知と変化検知 9章 部分空間法による変化点検知異常検知と変化検知 9章 部分空間法による変化点検知
異常検知と変化検知 9章 部分空間法による変化点検知
 
グラフィカルモデル入門
グラフィカルモデル入門グラフィカルモデル入門
グラフィカルモデル入門
 
機械学習モデルのハイパパラメータ最適化
機械学習モデルのハイパパラメータ最適化機械学習モデルのハイパパラメータ最適化
機械学習モデルのハイパパラメータ最適化
 
2 4.devianceと尤度比検定
2 4.devianceと尤度比検定2 4.devianceと尤度比検定
2 4.devianceと尤度比検定
 
Stanコードの書き方 中級編
Stanコードの書き方 中級編Stanコードの書き方 中級編
Stanコードの書き方 中級編
 
アンサンブル木モデル解釈のためのモデル簡略化法
アンサンブル木モデル解釈のためのモデル簡略化法アンサンブル木モデル解釈のためのモデル簡略化法
アンサンブル木モデル解釈のためのモデル簡略化法
 
1 4.回帰分析と分散分析
1 4.回帰分析と分散分析1 4.回帰分析と分散分析
1 4.回帰分析と分散分析
 
階層モデルの分散パラメータの事前分布について
階層モデルの分散パラメータの事前分布について階層モデルの分散パラメータの事前分布について
階層モデルの分散パラメータの事前分布について
 
クラシックな機械学習入門:付録:よく使う線形代数の公式
クラシックな機械学習入門:付録:よく使う線形代数の公式クラシックな機械学習入門:付録:よく使う線形代数の公式
クラシックな機械学習入門:付録:よく使う線形代数の公式
 
Rで因子分析 商用ソフトで実行できない因子分析のあれこれ
Rで因子分析 商用ソフトで実行できない因子分析のあれこれRで因子分析 商用ソフトで実行できない因子分析のあれこれ
Rで因子分析 商用ソフトで実行できない因子分析のあれこれ
 
時系列予測にTransformerを使うのは有効か?
時系列予測にTransformerを使うのは有効か?時系列予測にTransformerを使うのは有効か?
時系列予測にTransformerを使うのは有効か?
 

Similar to Rで学ぶロバスト推定

How to study stat
How to study statHow to study stat
How to study stat
Ak Ok
 

Similar to Rで学ぶロバスト推定 (20)

東京都市大学 データ解析入門 5 スパース性と圧縮センシング 2
東京都市大学 データ解析入門 5 スパース性と圧縮センシング 2東京都市大学 データ解析入門 5 スパース性と圧縮センシング 2
東京都市大学 データ解析入門 5 スパース性と圧縮センシング 2
 
How to study stat
How to study statHow to study stat
How to study stat
 
2013.12.26 prml勉強会 線形回帰モデル3.2~3.4
2013.12.26 prml勉強会 線形回帰モデル3.2~3.42013.12.26 prml勉強会 線形回帰モデル3.2~3.4
2013.12.26 prml勉強会 線形回帰モデル3.2~3.4
 
Casual learning machine learning with_excel_no2
Casual learning machine learning with_excel_no2Casual learning machine learning with_excel_no2
Casual learning machine learning with_excel_no2
 
東京都市大学 データ解析入門 6 回帰分析とモデル選択 1
東京都市大学 データ解析入門 6 回帰分析とモデル選択 1東京都市大学 データ解析入門 6 回帰分析とモデル選択 1
東京都市大学 データ解析入門 6 回帰分析とモデル選択 1
 
C02
C02C02
C02
 
データサイエンス概論第一=2-1 データ間の距離と類似度
データサイエンス概論第一=2-1 データ間の距離と類似度データサイエンス概論第一=2-1 データ間の距離と類似度
データサイエンス概論第一=2-1 データ間の距離と類似度
 
東京都市大学 データ解析入門 7 回帰分析とモデル選択 2
東京都市大学 データ解析入門 7 回帰分析とモデル選択 2東京都市大学 データ解析入門 7 回帰分析とモデル選択 2
東京都市大学 データ解析入門 7 回帰分析とモデル選択 2
 
ウェーブレット木の世界
ウェーブレット木の世界ウェーブレット木の世界
ウェーブレット木の世界
 
Maeshori missing
Maeshori missingMaeshori missing
Maeshori missing
 
ベイズ統計によるデータ解析
ベイズ統計によるデータ解析ベイズ統計によるデータ解析
ベイズ統計によるデータ解析
 
(文献紹介)Deep Unrolling: Learned ISTA (LISTA)
(文献紹介)Deep Unrolling: Learned ISTA (LISTA)(文献紹介)Deep Unrolling: Learned ISTA (LISTA)
(文献紹介)Deep Unrolling: Learned ISTA (LISTA)
 
R_note_01_ver1.1
R_note_01_ver1.1 R_note_01_ver1.1
R_note_01_ver1.1
 
【Zansa】第12回勉強会 -PRMLからベイズの世界へ
【Zansa】第12回勉強会 -PRMLからベイズの世界へ【Zansa】第12回勉強会 -PRMLからベイズの世界へ
【Zansa】第12回勉強会 -PRMLからベイズの世界へ
 
東京都市大学 データ解析入門 2 行列分解 1
東京都市大学 データ解析入門 2 行列分解 1東京都市大学 データ解析入門 2 行列分解 1
東京都市大学 データ解析入門 2 行列分解 1
 
6 Info Theory
6 Info Theory6 Info Theory
6 Info Theory
 
「plyrパッケージで君も前処理スタ☆」改め「plyrパッケージ徹底入門」
「plyrパッケージで君も前処理スタ☆」改め「plyrパッケージ徹底入門」「plyrパッケージで君も前処理スタ☆」改め「plyrパッケージ徹底入門」
「plyrパッケージで君も前処理スタ☆」改め「plyrパッケージ徹底入門」
 
スパースモデリング、スパースコーディングとその数理(第11回WBA若手の会)
スパースモデリング、スパースコーディングとその数理(第11回WBA若手の会)スパースモデリング、スパースコーディングとその数理(第11回WBA若手の会)
スパースモデリング、スパースコーディングとその数理(第11回WBA若手の会)
 
効用最大化理論の観点から見る強化学習
効用最大化理論の観点から見る強化学習効用最大化理論の観点から見る強化学習
効用最大化理論の観点から見る強化学習
 
Survival analysis0702
Survival analysis0702Survival analysis0702
Survival analysis0702
 

More from Shintaro Fukushima

Why dont you_create_new_spark_jl
Why dont you_create_new_spark_jlWhy dont you_create_new_spark_jl
Why dont you_create_new_spark_jl
Shintaro Fukushima
 
Rユーザのためのspark入門
Rユーザのためのspark入門Rユーザのためのspark入門
Rユーザのためのspark入門
Shintaro Fukushima
 
Juliaによる予測モデル構築・評価
Juliaによる予測モデル構築・評価Juliaによる予測モデル構築・評価
Juliaによる予測モデル構築・評価
Shintaro Fukushima
 
機械学習を用いた予測モデル構築・評価
機械学習を用いた予測モデル構築・評価機械学習を用いた予測モデル構築・評価
機械学習を用いた予測モデル構築・評価
Shintaro Fukushima
 
データサイエンスワールドからC++を眺めてみる
データサイエンスワールドからC++を眺めてみるデータサイエンスワールドからC++を眺めてみる
データサイエンスワールドからC++を眺めてみる
Shintaro Fukushima
 
data.tableパッケージで大規模データをサクッと処理する
data.tableパッケージで大規模データをサクッと処理するdata.tableパッケージで大規模データをサクッと処理する
data.tableパッケージで大規模データをサクッと処理する
Shintaro Fukushima
 
アクションマイニングを用いた最適なアクションの導出
アクションマイニングを用いた最適なアクションの導出アクションマイニングを用いた最適なアクションの導出
アクションマイニングを用いた最適なアクションの導出
Shintaro Fukushima
 
統計解析言語Rにおける大規模データ管理のためのboost.interprocessの活用
統計解析言語Rにおける大規模データ管理のためのboost.interprocessの活用統計解析言語Rにおける大規模データ管理のためのboost.interprocessの活用
統計解析言語Rにおける大規模データ管理のためのboost.interprocessの活用
Shintaro Fukushima
 
mmapパッケージを使ってお手軽オブジェクト管理
mmapパッケージを使ってお手軽オブジェクト管理mmapパッケージを使ってお手軽オブジェクト管理
mmapパッケージを使ってお手軽オブジェクト管理
Shintaro Fukushima
 
Numpy scipyで独立成分分析
Numpy scipyで独立成分分析Numpy scipyで独立成分分析
Numpy scipyで独立成分分析
Shintaro Fukushima
 
Rあんなときこんなとき(tokyo r#12)
Rあんなときこんなとき(tokyo r#12)Rあんなときこんなとき(tokyo r#12)
Rあんなときこんなとき(tokyo r#12)
Shintaro Fukushima
 

More from Shintaro Fukushima (20)

20230216_Python機械学習プログラミング.pdf
20230216_Python機械学習プログラミング.pdf20230216_Python機械学習プログラミング.pdf
20230216_Python機械学習プログラミング.pdf
 
機械学習品質管理・保証の動向と取り組み
機械学習品質管理・保証の動向と取り組み機械学習品質管理・保証の動向と取り組み
機械学習品質管理・保証の動向と取り組み
 
Materials Informatics and Python
Materials Informatics and PythonMaterials Informatics and Python
Materials Informatics and Python
 
BPstudy sklearn 20180925
BPstudy sklearn 20180925BPstudy sklearn 20180925
BPstudy sklearn 20180925
 
最近のRのランダムフォレストパッケージ -ranger/Rborist-
最近のRのランダムフォレストパッケージ -ranger/Rborist-最近のRのランダムフォレストパッケージ -ranger/Rborist-
最近のRのランダムフォレストパッケージ -ranger/Rborist-
 
Why dont you_create_new_spark_jl
Why dont you_create_new_spark_jlWhy dont you_create_new_spark_jl
Why dont you_create_new_spark_jl
 
Rユーザのためのspark入門
Rユーザのためのspark入門Rユーザのためのspark入門
Rユーザのためのspark入門
 
Juliaによる予測モデル構築・評価
Juliaによる予測モデル構築・評価Juliaによる予測モデル構築・評価
Juliaによる予測モデル構築・評価
 
Juliaで並列計算
Juliaで並列計算Juliaで並列計算
Juliaで並列計算
 
機械学習を用いた予測モデル構築・評価
機械学習を用いた予測モデル構築・評価機械学習を用いた予測モデル構築・評価
機械学習を用いた予測モデル構築・評価
 
データサイエンスワールドからC++を眺めてみる
データサイエンスワールドからC++を眺めてみるデータサイエンスワールドからC++を眺めてみる
データサイエンスワールドからC++を眺めてみる
 
data.tableパッケージで大規模データをサクッと処理する
data.tableパッケージで大規模データをサクッと処理するdata.tableパッケージで大規模データをサクッと処理する
data.tableパッケージで大規模データをサクッと処理する
 
アクションマイニングを用いた最適なアクションの導出
アクションマイニングを用いた最適なアクションの導出アクションマイニングを用いた最適なアクションの導出
アクションマイニングを用いた最適なアクションの導出
 
R3.0.0 is relased
R3.0.0 is relasedR3.0.0 is relased
R3.0.0 is relased
 
外れ値
外れ値外れ値
外れ値
 
Rでreproducible research
Rでreproducible researchRでreproducible research
Rでreproducible research
 
統計解析言語Rにおける大規模データ管理のためのboost.interprocessの活用
統計解析言語Rにおける大規模データ管理のためのboost.interprocessの活用統計解析言語Rにおける大規模データ管理のためのboost.interprocessの活用
統計解析言語Rにおける大規模データ管理のためのboost.interprocessの活用
 
mmapパッケージを使ってお手軽オブジェクト管理
mmapパッケージを使ってお手軽オブジェクト管理mmapパッケージを使ってお手軽オブジェクト管理
mmapパッケージを使ってお手軽オブジェクト管理
 
Numpy scipyで独立成分分析
Numpy scipyで独立成分分析Numpy scipyで独立成分分析
Numpy scipyで独立成分分析
 
Rあんなときこんなとき(tokyo r#12)
Rあんなときこんなとき(tokyo r#12)Rあんなときこんなとき(tokyo r#12)
Rあんなときこんなとき(tokyo r#12)
 

Rで学ぶロバスト推定