相関係数の有意性検定 Last modified: Aug 21, 2009
目的
二次データに基づき,ピアソンの積率相関係数,スピアマンの順位相関係数,ケンドールの順位相関係数の無相関検定を行う
(生データからの検定には,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)
直前のページへ戻る
E-mail to Shigenobu AOKI