多重共線性のチェック(従属性) 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