無相関検定

Rにはcor.testという相関の有意性検定を行う関数がある。
しかし,この関数は一度に一つの相関の検定しか行えないので,変数が大量にある場合には大変である。
そこでデータフレームから一気に全ての変数に関して相関の検定を行うプログラムが書いてみた。

関数

#データフレームから相関行列を求め,無相関検定を一気に行う
mycortest <- function(dFrame)
{
	if(!(is.data.frame(dFrame)))
	{
		errorMes <- "データフレームを指定してください"
		stop(errorMes)
	}
	
	#相関行列を求める
	corMatrix <- cor(dFrame)
	
	#サンプル数と自由度
	numRow <- nrow(dFrame)
	df <- numRow - 2
	
	#t値の行列を求める
	t1 <- corMatrix * sqrt(df)
	t2 <- sqrt(1-corMatrix^2)
	tMatrix <- t1/t2
	
	#p値を求める
	pMatrix <- pt(abs(tMatrix),df,lower.tail=FALSE) * 2
	
	#結果の書き出し
	result <- list(corMatrix,tMatrix,pMatrix)
	names(result)<-c("r","t","p")
	return(result)
}

使い方

mycortest(データフレーム)
#相関行列,t値の行列,p値の行列を出力します