MENU

R で相関係数検定の実行と信頼区間を計算する方法

R で相関係数の検定と推定は cor.test() でできるが、個々のデータが必要だ。

個々のデータを使わなくても、検定や推定はできないだろうか?

>>もう統計で悩むのは終わりにしませんか? 

↑期間・数量限定で無料プレゼント中!

目次

相関係数の検定

母相関係数 ρ(ロー) がゼロかどうかの検定。

スクリプトは以下の通り。

r がサンプルの相関係数で、n がサンプルサイズ。

pop.rho.test <- function(r,n){
T <- r/(sqrt(1-r^2)/sqrt(n-2))
p <- pt(abs(T), df=n-2,lower.tail=F)*2
list(c(t=T, df=n-2, "p-value"=p))
}

r = -0.533, n = 53 のときの検定結果は、以下の通り計算される。

> pop.rho.test(r=-0.533,n=35)
[[1]]
t            df       p-value
-3.6187173384 33.0000000000  0.0009787127

p = 0.0009787127 で統計学的有意に母相関係数は 0 と異なると言える。

相関係数の信頼区間

母相関係数 ρ の95%信頼区間を計算するスクリプトは以下の通り。

pop.rho.ci <- function(r,n){
Z <- 1/2*log((1+r)/(1-r))
Zl <- Z-1/sqrt(n-3)*qnorm(1-0.05/2)
Zu <- Z+1/sqrt(n-3)*qnorm(1-0.05/2)
rl <- (exp(2*Zl)-1)/(exp(2*Zl)+1)
ru <- (exp(2*Zu)-1)/(exp(2*Zu)+1)
list(c(Estimate=r, LL=rl, UL=ru))
}

上述の相関係数の信頼区間は以下のように計算される。

> pop.rho.ci(r=-0.533,n=35)
[[1]]
Estimate         LL         UL
-0.5330000 -0.7355906 -0.2428969

下限が -0.7355906, 上限が -0.2428969 であった。

相関係数の信頼区間を計算する際のFisherの分散安定化変換

上述のスクリプト中の Z の式は、Fisherの分散安定化変換と呼ばれるものである。

これは hyperbolic tangent の逆関数の hyperbolic arc-tangent で、R では atanh() で計算できる。

> r <- -0.533
>
> 1/2*log((1+r)/(1-r))
[1] -0.5943263
>
> atanh(r)
[1] -0.5943263

>>もう統計で悩むのは終わりにしませんか? 

↑1万人以上の医療従事者が購読中

相関係数の差の検定

二つの母相関係数 $ \rho_A $ と $ \rho_B $ の差の検定のスクリプトは以下の通り。

pop.rho.diff <- function(rA,nA,rB,nB){
T <- abs((atanh(rA)-atanh(rB)))/sqrt(1/(nA-3)+1/(nB-3))
p <- 2*(1-pnorm(T))
list(c(rA=rA,nA=nA,rB=rB,nB=nB,T=T,"p-value"=p))
}

男性 -0.459 と女性 -0.097 の相関係数の差を検定した結果は以下の通り。

> pop.rho.diff(rA=-0.459,nA=30,rB=-0.097,nB=24)
[[1]]
rA         nA         rB         nB          T    p-value
-0.4590000 30.0000000 -0.0970000 24.0000000  1.3704342  0.1705514

p = 0.1705514 で統計学的有意ではなかったが、-0.459 と -0.097 はかなり大きな違いである。

サンプルサイズが小さすぎたことによる検出力不足と考えられる。

まとめ

Rで、相関係数の検定と信頼区間のスクリプトを紹介した。

個々のデータが使える場合は、cor.test() で検定と信頼区間は簡単に得られるが、相関係数とサンプルサイズしかわからない場合は、cor.test()は使えないので、今回紹介したスクリプトが役に立つ。

また、2つの相関係数の差の検定は、デフォルトでは装備されていないので、今回のスクリプトが使える。

よりスマートにまとまっているスクリプトは cor.diff.test() で検索すると見つかる。

brainGraphパッケージに含まれている。

cor.diff.test function – RDocumentation

関連記事

cor.test()の使い方はこちら。

引用書籍

出典は、「新版医学への統計学」の6.1 相関係数の検定と信頼区間の例題

医学への統計学 (統計ライブラリー)

第3版も出てる。

医学への統計学 (統計ライブラリー)
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

リサーチクエスチョン探し?データ分析?論文投稿?、、、で、もう悩まない!

第1章臨床研究ではなぜ統計が必要なのか?計画することの重要性
  • 推定ってどんなことをしているの?
  • 臨床研究を計画するってどういうこと?
  • どうにかして標本平均を母平均に近づけられないか?
第2章:研究目的をどれだけ明確にできるのかが重要
  • データさえあれば解析でどうにかなる、という考え方は間違い
  • 何を明らかにしたいのか? という研究目的が重要
  • 研究目的は4種類に分けられる
  • 統計専門家に相談する上でも研究目的とPICOを明確化しておく
第3章:p値で結果が左右される時代は終わりました
  • アメリカ統計協会(ASA)のp値に関する声明で指摘されていること
  • そうは言っても、本当に有意差がなくてもいいの…?
  • なぜ統計専門家はp値を重要視していないのか
  • 有意差がない時に「有意な傾向があった」といってもいい?
  • 統計を放置してしまうと非常にまずい
第4章:多くの人が統計を苦手にする理由
  • 残念ながら、セミナー受講だけで統計は使えません。
  • インプットだけで統計が使えない理由
  • どうやったら統計の判断力が鍛えられるか?
  • 統計は手段なので正解がないため、最適解を判断する力が必要
第5章:統計を使えるようになるために今日から何をすれば良いか?
  • 論文を読んで統計が使えるようになるための5ステップ
第6章:統計を学ぶために重要な環境
  • 統計の3つの力をバランスよく構築する環境

以下のボタンをクリックして、画面に出てくる指示に従って、必要事項を記入してください。

この記事を書いた人

統計 ER ブログ執筆者

元疫学研究者

統計解析が趣味

コメント

コメント一覧 (1件)

コメントする

目次