多重共線性のチェック(従属性)     Last modified: Oct 13, 2004

目的

独立変数のみのデータ行列を引数として与えて,変数の従属性を調べる。

使用法

find.multico(data, epsilon=1e-10)

引数

data     データ行列またはデータ・フレーム(行がケース,列が変数)
epsilon  0 と見なしてよい小さな値。標準値は 1e-10。
         意味がわからない場合には,変更しない方がよい。

ソース

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

# 多重共線性のある変数を検出する
# http://www.ec.kagawa-u.ac.jp/~hori/spss/eig0vec.txt
find.multico <- function(    data,                           # データ行列
                                epsilon=1e-10)                  # 限界値
{
        result <- eigen(cor(data[complete.cases(data),]))    # 固有値・固有ベクトルを求める
        n <- length(result$values)
        result <- matrix(c("", "***")[(abs(result$vectors[,result$values < epsilon]) > epsilon)+1], nr=n)
        if (ncol(result)) {
                rownames(result) <- colnames(data)
                result
        }
        else {
                "no multico"
        }
}


使用例

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

find.multico(x)

出力結果例

> find.multico(x)
     [,1] 
[1,] "***"
[2,] "***"
[3,] ""   
[4,] "***"

結果の見方

上のように示されるときには,変数間に従属性があることを示している。
記号が示される列ごとに,変数の従属性が示される。
アスタリスク(*)がついている変数が互いに従属である。
上の例だと,1,2,4番目の変数が従属である。
実際に,1番目の変数と2番目の変数の値の合計が4番目の変数の値になっている。

従属でない場合には,"no multico" と表示される。

・ 香川大学の堀先生による解説ページ


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

Made with Macintosh