対応のあるデータの二つの相関係数の相等性の検定 Last modified: Aug 21, 2009
目的
対応のあるデータの二つの相関係数の相等性の検定を行う。
大阪大学の狩野裕先生のページに説明がある。
また,この検定とは状況が違う,同じサンプルからの相関係数の差も参照のこと。
注:対応のない場合については標本相関係数の同等性の検定を参照
使用法
diff.r2(x)
引数
x データ行列(または,データフレーム)
ソース
インストールは,以下の 1 行をコピーし,R コンソールにペーストする
source("http://aoki2.si.gunma-u.ac.jp/R/src/diff_r2.R", encoding="euc-jp")
# 対応のあるデータの二つの相関係数の相等性の検定
# http://koko15.hus.osaka-u.ac.jp/%7Ekano/lecture/faq/q1.html#excel
diff.r2 <- function(x)
{
method <- "対応のあるデータの二つの相関係数の相等性の検定"
data.name <- deparse(substitute(x))
x <- as.matrix(x)
n <- nrow(x)
r <- cor(x)
z12 <- atanh(r[1,2])
z34 <- atanh(r[3,4])
a1 <- r[1,3]*r[2,4]+r[1,4]*r[2,3]
a2 <- -r[3,4]*(r[1,3]*r[2,3]+r[1,4]*r[2,4])
a3 <- -r[1,2]*(r[1,3]*r[1,4]+r[2,3]*r[2,4])
a4 <- r[1,2]*r[3,4]*(r[1,3]^2+r[1,4]^2+r[2,3]^2+r[2,4]^2)/2
d <- (1-r[1,2]^2)*(1-r[3,4]^2)
chi.sq <- (n-3)*(z12-z34)^2/(2-2*(a1+a2+a3+a4)/d)
p <- pchisq(chi.sq, 1, lower.tail=FALSE)
return(structure(list(statistic=c("chi sq."=chi.sq), parameter=c(df=1),
p.value=p, method=method, data.name=data.name), class="htest"))
}
使用例
# テストデータとして,狩野先生のページにある例題データを発生
> r <- tri.mat(c(1,0.439,1,0.288,0.354,1,0.329,0.320,0.595,1), 4)
> d <- gendat(220, r)
> cor(d) # 例題の通りの相関係数行列になっていることを確認
[,1] [,2] [,3] [,4]
[1,] 1.000 0.439 0.288 0.329
[2,] 0.439 1.000 0.354 0.320
[3,] 0.288 0.354 1.000 0.595
[4,] 0.329 0.320 0.595 1.000
> diff.r2(d)
対応のあるデータの二つの相関係数の相等性の検定
data: d
chi sq. = 5.5002, df = 1, p-value = 0.01901
直前のページへ戻る
E-mail to Shigenobu AOKI