相関
cor( ) 関数で相関係数、cov( ) で共分散が算出できる
使用法: cor(x, use=, method= )
| 引数 | 記述 | 
| x | 行列またはデータフレーム | 
| use | all.obs: データを全て使う。欠損値のあるデータをxに指定したときにエラーになる。 complete.obs (リストワイズ除去): 欠損値のあるケース (行) を丸ごと削除。 pairwise.complete.obs (ペアワイズ除去): 欠損値と対応するデータのみ除去。サンプルサイズ自体は一番大きくなる。 | 
| method | 相関係数のタイプを指定する。 pearson, spearman or kendallの3種。デフォルトはpearson. | 
 # mtcarsデータで使用例. 
  cor(mtcars, use="complete.obs", method="kendall") 
			cov(mtcars, use="complete.obs") 
cor( ) と cov( ) で有意性の検定はできない。cor.test( ) 関数は単一の相関係数に対して有意性の検定ができる。
相関行列と有意性の検定
# corr.test
				library(psych)
				corr.test(mtcars)
				
				
				# rcorr。事前にデータを行列にしておかないといけない
				library(Hmisc)
				rcorr(as.matrix(mtcars))
			
相関係数の出力
		# corstars() 関数を利用する。オリジナルはHmiscパッケージが必要。Hmiscはpsychと同じ関数があるのでここではpsychパッケージを使ったものにに書き換える。
		corstars2 <- function(x){
		  require(psych)
		  corr.test.res <- corr.test(x)
		  R <- corr.test.res$r
		  p <- corr.test.res$p
		  mystars <- ifelse(p < .01, "** |", ifelse(p < .05, "*  |", "   |"))
		  R <- format(round(cbind(rep(-1.111, ncol(x)), R), 3))[,-1]
		  Rnew <- matrix(paste(R, mystars, sep=""), ncol=ncol(x))
		  diag(Rnew) <- paste(diag(R), "   |", sep="")
		  rownames(Rnew) <- colnames(x)
		  colnames(Rnew) <- paste(colnames(x), "  |", sep="")
		  Rnew <- list(rmat= as.data.frame(Rnew), corrtest = corr.test.res)
		  return(Rnew)
		  }
		
		
		xres <- corstars2(swiss[,1:4])
		xres
		
		# 下三角行列で出力
		  x <- corstars2(swiss[,1:4])$rmat
		  x[upper.tri(x)] <- NA
		  print(x, na.print="")
		# 上三角行列で出力
		  x <- corstars2(swiss[,1:4])$rmat
		  x[lower.tri(x)] <- NA # 上を作るときは"lower"
		  print(x, na.print="")
		
		## その他出力の検証: どれも微妙にずれる。
		# corstarsl 関数を使う。
		  # デフォルトで下三角。
		  xl <- corstarsl(swiss[,1:4])
		  xl
		# R2htmlでhtml出力。
		library(R2HTML)
		  HTMLStart(
		  outdir=getwd(), 
		  file="myreport",
		  extension="html",
		  echo=T,
		  HTMLframe=F
		  )
		HTML.title("My Report", HR=1)
		x
		HTMLStop() 
		# xtable
		library(xtable)
		print(xtable(x), type="html")
		
		
		
他のタイプの相関
- ポリコリック相関 (polychoric correlation): 多分相関係数ともいう。順序尺度同士の相関係数。polycorパッケージのpolychor関数。パッケージ名はpolycorであるが、関数はpolychorなので注意。 psychパッケージのpolychoric関数がなお便利
- heterogeneous correlations: pearson, ポリシリアル (数値と順序の相関) 、ポリコリックの3種の相関係数をひとつの行列にまとめたもの (らしい) 
- 偏相関: ggmパッケージのpcor関数で算出可能 
 - library(ggm)
 data(mydata)
 pcor(c("a", "b", "x", "y", "z"), var(mydata))
 # x, y, zの影響を統制したaとbの相関
 
相関のグラフ化
corrgram( ) でコレログラムが描ける。また、pairs() とsplom( ) で散布図行列が描ける。
R Graph Galleryに例多数。