Smirnov-Grubbs の外れ値の検定

statistics/outlier/smirnov_grubbs
2018/07/30 更新

  1. 検定の手順
  2. R を使った検定
    1. Smirnov-Grubbs test(群馬大学)
    2. Grubbs test(Rパッケージ利用)
    3. オプション
    4. 注意事項

広告

検定の手順

Smirnov-grubbs test(単に grubbs test という場合もある)は,データが 正規分布 に従うとき,含まれる外れ値を検出する方法である(1, 3)。

帰無仮説: 全てのデータは同じ母集団からのものである。

対立仮説: データのうち,最大のものは外れ値である。

  1. 標本の大きさを n,データを X1, X2, ...., Xn とする。
  2. 平均値を Xm,不偏分散を U とする。
  3. 最大または最小となる測定値 Xi について,次の式から統計量 Ti を求める。


  1. 統計数値表から,有意点 t を求める。

広告

R を使った検定

R のパッケージを使って Grubbs" test を行うことができる。

 

> install.packages("outliers")    #パッケージ"outliers"のインストール

 

サーバーを選択し,outliers というパッケージをダウンロードする。成功すると

 

The downloaded binary packages are in

/var/folders/...省略.../downloaded_packages

 

というメッセージが出る。次に

 

> library(outliers)

 

でこのライブラリーを読み込む。> search() で現在自分が読み込んでいるパッケージの一覧を確認することができる。これが完了したら,上と同様に,1 - 9 と100を要素としてもつデータセット x を作って Grubbs' test を行ってみる。

 

> x=c(1,2,3,4,5,6,7,8,9,100)

> grubbs.test(x)

 

結果は

 

Grubbs test for one outlier

data:  x 

G = 2.8356, U = 0.0073, p-value = 3.964e-09

alternative hypothesis: highest value 100 is an outlier 

 

となり,100が外れ値であることがわかる。P値が上記の Smirnov-Grubbs test と同じなので,同じ検定をかけているものと思われる。なお,R を再起動したときは > library(outliers) からやらないと関数がみつからないようだ。

 


注意事項

データフレームの作成の際に,エクセルからのコピーをしたりすると,データが

 

> x=read.table(pipe("pbpaste"))

> x

   V1

1   1

2   2

3   3

4   4

5   5

6 100

 
このように縦に並んだ形式になる。V1 は,列のラベルを指定していないときに勝手に定められるラベルである。ここで grubbs.test(x) としても,
 
Error in `[.data.frame`(x, complete.cases(x)) : 
  undefined columns selected
 
というエラーになる。これはデータのどの列を解析するかを指定していないというエラーなので,$ を使って  grubbs.test(x$V1) のように V1 行を指定すれば計算されるようになる。

広告

コメント欄

一言コメントをどうぞ! (100 字まで)

このコメント欄は各ページにあるので、いつ管理人がコメントを見ることになるのか分かりません。内容について質問がある場合は、下のリンク先のフォームから質問頂ければ、早めに返信するようにします。


References

  1. スミルノフ・グラブス検定 http://aoki2.si.gunma-u.ac.jp/lecture/Grubbs/Grubbs.html
  2. Rで外れ値を計算する方法 Web.
  3. バイオスタティスティクス 外れ値 Web.