目的プログラムソフトにおいては,線形判別関数の説明変数の有意性検定を行わないものがある(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