目的 独立変数のみのデータ行列を引数として与えて,変数の従属性を調べる。 使用法 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" と表示される。 香川大学の堀先生による解説ページ