Rでロバスト相関:"robust"パッケージ
背景
相関係数のお話で,外れ値の影響を除きたいっていうときはいっぱいある。
方法もいっぱい。
まあ,ジャックナイフしてみるとか。
ジャックナイフはやろうと思ったらエクセルでもできるよん。
でも今日はロバスト推定値をもとめる方法を。
準備
ロバスト統計関係にはよいRのパッケージがある。
"robust"っていうの。
http://cran.r-project.org/web/packages/robust/robust.pdf
install.packages("robust", dependencies=T)
library(robust)
ほい。
求める!
えっと,covRobっていう関数があるね。
これはもともとロバストな共分散推定値をもとめるのだけど,相関係数も同じ関数でもとめられる。3変数以上もできる。
datには行列(かデータフレーム)を入れて,
covRob(dat, corr=T)
で基本はでる。こんな感じ。corr=Tしないと共分散がでてくる。
Call:
covRob(data = dat, corr = T)Robust Estimate of Correlation:
V1 V2
V1 1.00000 -0.04292
V2 -0.04292 1.00000Robust Estimate of Location:
V1 V2
-0.009835 -0.053582
これをオブジェクトとしてplotに入れてやると…
なんかでたー。
95%の相関楕円がでてくるね。
多変量だと相関楕円行列を出してくれる。
推定法
いろいろなのがあるんだよね。まあ,基本は離れているやつの重み付けを軽くするっていう感じのアルゴリズムよね。
M推定値っていうのはよく聞くんだけど。
the Fast MCD algorithm of Rousseeuw and Van Driessenていうのがデフォルトらしい。MCDはあれね,Minimum Covariance Determinantとかそんな感じだっけか。これがいいらしいって話。
estim="mcd"
estim="M"
estim="donostah"
とかいろいろあるね。
ロバスト相関はLarson-Hall and Herrington (2010)でも紹介されてた。Larson-Hall先生はスクリプトとかも公開してらっしゃる。
DeKeyser(2001)の相関がロバスト相関でみたら,実は相関ねえよ,みたいな。でも,これ,正直たまったもんじゃないな。
ellipseパッケージとかもメモ残そうと思ってたけど,疲れちゃった。あと,このパッケージは線形回帰やGLMとかいろいろある。
(原稿がいろいろやばい)