目的 同じサンプルからの二つの相関係数に差があるか検定する。 また,この検定とは状況が違う,大阪大学の狩野裕先生のページに説明がある対応のあるデータの二つの相関係数の相等性の検定も参照のこと(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 解説ページ