同じサンプルからの相関係数の差     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

Made with Macintosh