草薙の研究ログ

英語の先生をやってます。

Rでロバスト相関:"robust"パッケージ

背景

相関係数のお話で,外れ値の影響を除きたいっていうときはいっぱいある。

方法もいっぱい。

まあ,ジャックナイフしてみるとか。

ジャックナイフはやろうと思ったらエクセルでもできるよん。

 

TIPS - 草薙邦広のページ

でも今日はロバスト推定値をもとめる方法を。

 

準備

ロバスト統計関係にはよい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.00000

Robust Estimate of Location:
V1 V2

 


-0.009835 -0.053582

 

これをオブジェクトとしてplotに入れてやると…

f:id:kusanagik:20141119231908p:plain

なんかでたー。

95%の相関楕円がでてくるね。

多変量だと相関楕円行列を出してくれる。

 

f:id:kusanagik:20141119232808p:plain

 

推定法

いろいろなのがあるんだよね。まあ,基本は離れているやつの重み付けを軽くするっていう感じのアルゴリズムよね。

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先生はスクリプトとかも公開してらっしゃる。

 

Improving Data Analysis in Second Language Acquisition by Utilizing Modern Developments in Applied Statistics

 

DeKeyser(2001)の相関がロバスト相関でみたら,実は相関ねえよ,みたいな。でも,これ,正直たまったもんじゃないな。 

ellipseパッケージとかもメモ残そうと思ってたけど,疲れちゃった。あと,このパッケージは線形回帰やGLMとかいろいろある。

 

(原稿がいろいろやばい)