同じサンプルからの相関係数の差 Last modified: Jan 23, 2010
目的
同じサンプルからの二つの相関係数に差があるか検定する。
また,この検定とは状況が違う,大阪大学の狩野裕先生のページに説明がある対応のあるデータの二つの相関係数の相等性の検定も参照のこと(R プログラム)。
注:二つのサンプルからの二つの相関係数の差の検定には,複数の相関係数の同等性の検定と点推定を使う。
使用法
diff.r(n, rxy, rvy, rxv)
引数
n サンプルサイズ
rxy, rvy 差を検定する二つの相関係数
rxv 先の二つの相関係数に関連するもう一つの相関係数
ソース
インストールは,以下の 1 行をコピーし,R コンソールにペーストする
source("http://aoki2.si.gunma-u.ac.jp/R/src/diff_r.R", encoding="euc-jp")
# 同じサンプルからの二つの相関係数に差があるか検定する
diff.r <- function( n, # サンプルサイズ
rxy, rvy, # 差を計算する相関係数1
rxv) # 先の 2 つの相関係数に関するもう一つの相関係数
{
method <- "同じサンプルからの二つの相関係数に差があるか検定する"
data.name <- sprintf("n = %s, r_xy = %s, r_vy = %s, r_xv = %s", n, rxy, rvy, rxv)
detR <- (1-rxy^2-rvy^2-rxv^2)+2*rxy*rxv*rvy # 行列式
t0 <- (abs(rxy-rvy)*sqrt((n-1)*(1+rxv)))/ # 検定統計量
sqrt(2*detR*(n-1)/(n-3)+(rxy+rvy)^2*(1-rxv)^3/4)
df <- n-3 # 自由度
p <- pt(abs(t0), df, lower.tail=FALSE)*2 # P 値
return(structure(list(statistic=c(t=t0), # 結果をまとめて返す
parameter=c(df=df), p.value=p, method=method,
data.name=data.name), class="htest"))
}
使用例
y x v
y 1.00 0.50 0.32
x 0.50 1.00 0.65
v 0.32 0.65 1.00
のような場合で,x-y の相関係数 0.50 と,v-y の相関係数 0.32 に差があるか検定する。
v, x, y に関するもう一つの相関係数は 0.65 である。
diff.r(50, 0.5, 0.32, 0.65)
> diff.r(50, 0.5, 0.32, 0.65)
同じサンプルからの二つの相関係数に差があるか検定する
data: n = 50, r_xy = 0.5, r_vy = 0.32, r_xv = 0.65
t = 1.6964, df = 47, p-value = 0.09642
解説ページ
直前のページへ戻る
E-mail to Shigenobu AOKI