単相関係数,偏相関係数,重相関係数     Last modified: Jun 28, 2004

目的

単相関係数,偏相関係数,重相関係数を計算する

使用法

my.cor(x)

引数

x	データ行列(行がケース,列が変数)

ソース

インストールは,以下の 1 行をコピーし,R コンソールにペーストする
source("http://aoki2.si.gunma-u.ac.jp/R/src/my_cor.R", encoding="euc-jp")

# 単相関係数,偏相関係数,重相関係数を計算する
my.cor <- function(x)                                # データ行列
{
        x <- subset(x, complete.cases(x))    # 欠損値を持つケースを除く
        r <- cor(x)                          # 相関係数行列
        i <- solve(r)                                # 逆行列
        d <- diag(i)                         # 対角要素
        p <- -i/sqrt(outer(d, d))            # 偏相関係数行列
        r[lower.tri(r)] <- p[lower.tri(p)]   # 単相関係数行列の下三角行列を偏相関係数行列にする
        diag(r) <- sqrt(1-1/d)                       # 対角要素を重相関係数に置き換える
        var.names <- colnames(x)
        rownames(r) <- colnames(r) <- if (is.null(var.names)) paste("Var", 1:ncol(x)) else var.names
        return(r)
}


使用例

x <- matrix(c(	# 5ケース,4変数のデータ行列例(ファイルから読んでも良い)
	1,  5, 6, 4,
	2, 14, 5, 3,
	3,  3, 4, 2,
	4,  2, 6, 6,
	3,  4, 3, 5
), ncol=4, byrow=TRUE)

my.cor(x)

出力結果例

上三角行列: 単相関係数
下三角行列: 偏相関係数
 対角要素: 重相関係数

           Var 1       Var 2       Var 3      Var 4
Var 1  0.6184644 -0.49058484 -0.23543548  0.4160251
Var 2 -0.3553252  0.53356576  0.06355615 -0.3930731
Var 3 -0.3440509  0.03407991  0.44334712  0.2425356
Var 4  0.3732220 -0.23326740  0.38235645  0.5780364

・ 解説ページ1解説ページ2


・ 直前のページへ戻る  ・ E-mail to Shigenobu AOKI

Made with Macintosh