裏 RjpWiki

Julia ときどき R, Python によるコンピュータプログラム,コンピュータ・サイエンス,統計学

母相関係数=0の検定をブートストラップで

2017年02月14日 | ブログラミング

ぶーつすとらっぷ」じゃあ,ないよ。

どこぞやらで,だれかが,R を使ってブートストラップによる母相関係数の分布を推定するというブログを書いておったが,ちっとも R らしくなかったので,書いてみた。

具体例のデータは,サンプルサイズ 20 の以下のようなもの。
x = c(7.8, 25.1, 36.1, 27.1, 24.5, 11.4, 27.6, 12.3, 5.1, 4, 26.3, 21.8, 35.4, 18.5, 31.6, 7, 10.8, 24.2, 25.4, 17.9)
y = c(29.3, 13.5, 28.9, 38.8, 30.4, 8.1, 19.7, 25.9, 2.5, 16.2, 10.3, 21.2, 27.6, 12.5, 29.1, 8, 8.6, 29.7, 25.9, 13.8)

このデータから,x, y それぞれで,重複を許して 20 個のデータを抽出して相関係数を計算するというのを多数回繰り返す。

x から重複を許して 20 個のデータをリサンプリングするのは
sample(x, replace=TRUE)

y から重複を許して 20 個のデータをリサンプリングするのは
sample(x, replace=TRUE)

その相関係数を計算するのは
cor(sample(x, replace=TRUE), sample(y, replace=TRUE))

それを,たとえば 50000 回繰り返すのは
sapply(1:50000, function(i) cor(sample(x, replace=TRUE), sample(y, replace=TRUE)))

その結果を要素数 50000 のベクトル result に格納するのは
result = sapply(1:50000, function(i) cor(sample(x, replace=TRUE),
                                         sample(y, replace=TRUE)))


そのヒストグラムは
hist(result)

リサンプリングデータにおける相関係数の絶対値が,観察されたデータでの相関係数 cor(x, y) より大きい割合は,
mean(abs(result) > cor(x, y))

sum(abs(result) > cor(x, y)) / 50000 としたいかもしれないが,それは mean だ!

リサンプリングによらず,観察されたデータでの母相関係数=0の検定(両側)の p 値は
cor.test(x, y)$p.value

sample 関数は乱数発生を伴うので,以下のプログラムでの結果は,毎回異なるが,mean(abs(result) > cor(x, y)) と cor.test(x, y)$p.value の結果はほぼ等しくなる。

> x = c(7.8, 25.1, 36.1, 27.1, 24.5, 11.4, 27.6, 12.3, 5.1, 4, 26.3, 21.8, 35.4, 18.5, 31.6, 7, 10.8, 24.2, 25.4, 17.9)
> length(sample(x, replace=TRUE))
[1] 20
> length(sample(x, replace=TRUE))
[1] 20
> x = c(7.8, 25.1, 36.1, 27.1, 24.5, 11.4, 27.6, 12.3, 5.1, 4, 26.3, 21.8, 35.4, 18.5, 31.6, 7, 10.8, 24.2, 25.4, 17.9)
> y = c(29.3, 13.5, 28.9, 38.8, 30.4, 8.1, 19.7, 25.9, 2.5, 16.2, 10.3, 21.2, 27.6, 12.5, 29.1, 8, 8.6, 29.7, 25.9, 13.8)
> result = sapply(1:50000, function(i) cor(sample(x, replace=TRUE), sample(y, replace=TRUE)))
> hist(result)
> mean(abs(result) > cor(x, y))
[1] 0.00994
> cor.test(x, y)$p.value
[1] 0.009260503

コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« 並べ替えの繰り返し2 | トップ | 出る杭 »
最新の画像もっと見る

コメントを投稿

ブログラミング」カテゴリの最新記事