目的 二次データに基づき,ピアソンの積率相関係数,スピアマンの順位相関係数,ケンドールの順位相関係数の無相関検定を行う (生データからの検定には,R に用意されている cor.test 例1,例2,例3, を用いる) 使用法 cor2.test(n, r, conf.level=0.95, method=c("pearson", "kendall", "spearman")) 引数 n サンプルサイズ r ピアソンの積率相関係数,スピアマンの順位相関係数,ケンドールの順位相関係数 method "pearson", "kendall", "spearman" のいずれか 省略されたときには pearson が指定されたことになる conf.level 信頼区間を求めるときの信頼率(デフォルトは 0.95 つまり,95% 信頼区間を求める) ソース インストールは,以下の 1 行をコピーし,R コンソールにペーストする source("http://aoki2.si.gunma-u.ac.jp/R/src/cor2_test.R", encoding="euc-jp") # 二次データに基づき,ピアソンの積率相関係数,スピアマンの順位相関係数,ケンドールの順位相関係数の無相関検定を行う cor2.test <- function( n, # サンプルサイズ r, # 相関係数 conf.level=0.95, method = c("pearson", "kendall", "spearman")) # 相関係数の種類 { data.name <- sprintf("n = %s, r = %s", n, r) method <- match.arg(method) # 引数の補完 if (method != "kendall") { # ケンドールの順位相関係数以外の場合 method <- paste(if (method == "pearson") "ピアソンの積率相関係数" else "スピアマンの順位相関係数", "の検定と推定", sep="") t <- abs(r)*sqrt((n-2)/(1-r^2)) # 検定統計量 df <- n-2 # 自由度 p <- pt(t, df, lower.tail=FALSE)*2 # P 値 q <- qnorm(0.5-conf.level/2) conf.int <- tanh(atanh(r)+c(q, -q)/sqrt(n-3)) attr(conf.int, "conf.level") <- conf.level return(structure(list(statistic=c(t=t), parameter=c(df=df), p.value=p, conf.int=conf.int, method=method, data.name=data.name), class="htest")) # 結果をまとめて返す } else { # ケンドールの順位相関係数の場合 method <- "ケンドールの順位相関係数の検定" z <- abs(r)/sqrt((4*n+10)/(9*n*(n-1))) # 検定統計量 p <- pnorm(z, lower.tail=FALSE)*2 # P 値 return(structure(list(statistic=c("Z-value"=z), p.value=p, method=method, data.name=data.name), class="htest")) # 結果をまとめて返す } } 使用例 > cor2.test(24, 0.476) # ピアソンの積率相関係数の場合 ピアソンの積率相関係数の検定と推定 data: n = 24, r = 0.476 t = 2.5387, df = 22, p-value = 0.01871 95 percent confidence interval: 0.08985743 0.73773850 > cor2.test(24, 0.282, method="spearman") # スピアマンの順位相関係数の場合 スピアマンの順位相関係数の検定と推定 data: n = 24, r = 0.282 t = 1.3787, df = 22, p-value = 0.1819 # 漸近検定のため cor.test(..., method="spearman") の結果とは異なる 95 percent confidence interval: # cor.test(..., method="spearman") では定義されていない -0.1369792 0.6153911 > cor2.test(24, 0.493, method="kendall") # ケンドールの順位相関係数の場合 ケンドールの順位相関係数の検定 data: n = 24, r = 0.493 Z-value = 3.3751, p-value = 0.000738 解説ページ(1),解説ページ(2),解説ページ(3)