対応のあるデータの二つの相関係数の相等性の検定     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

Made with Macintosh