目的プログラムソフトにおいては,線形判別関数の説明変数の有意性検定を行わないものがある(MASS ライブラリで 2 群判別する場合など),そのような場合に,線形判別関数における説明変数の有意性検定を行う。
注:MASS ライブラリの lda は,3 群以上の判別は正準判別分析を行うので,その場合にはこの関数で検定をすることはできない。2 群の判別の場合には適用できる。
使用法 PartialF(data, group, use) 引数 data 説明変数のデータ行列(データフレーム) group 各行がどの群に属するかを表す変数 use 分析に使用する変数番号のベクトル ソース インストールは,以下の 1 行をコピーし,R コンソールにペーストする source("http://aoki2.si.gunma-u.ac.jp/R/src/PartialF.R", encoding="euc-jp") # 線形判別関数における説明変数の有意性検定 PartialF <- function( data, # 説明変数のデータ行列(データフレーム) group, # 各行がどの群に属するかを表す変数 use) # 分析に使用する変数番号のベクトル { data <- data[, use, drop=FALSE] p <- ncol(data) ng <- nlevels(group) ncase <- length(group) split.data <- split(data, group) num <- sapply(split.data, nrow) t <- var(data)*(ncase-1) w <- matrix(colSums(t(matrix(sapply(split.data, var), ncol=ng))*(num-1)), p) f <- diag(solve(t))/diag(solve(w)) ni <- length(use) idf1 <- ng-1 idf2 <- ncase-(ng-1)-ni f <- idf2 / idf1 * (1-f) / f p <- pf(f, idf1, idf2, lower.tail=FALSE) result <- cbind(f, p) dimnames(result) <- list(colnames(data), c("Partial F", "p-value")) return(result) } 使用例 > PartialF(iris[,1:4], iris[,5], 1:4) # 1 〜 4 の,すべての変数を使うとき Partial F p-value Sepal.Length 4.721152 1.032884e-02 Sepal.Width 21.935928 4.831201e-09 Petal.Length 35.590175 2.756205e-13 Petal.Width 24.904333 5.143154e-10 > PartialF(iris[,1:4], iris[,5], c(2,4)) # 2,4 番目の変数だけを使うとき Partial F p-value Sepal.Width 62.49383 2.468558e-20 Petal.Width 1068.64192 6.650978e-88