Correlation Plot

2018/06/30

Correlation plot을 그리는 R 코드입니다. panel.cor()는 correlation coefficient를 구하는 함수입니다. ETA와 covariate와의 관계를 나타낼 때도 쓰일 수 있습니다.

library(dplyr)
library(tibble)

# calculation of cor
panel.cor <- function(x, y, digits=2, prefix="", cex.cor) {
  usr <- par("usr"); on.exit(par(usr))
  par(usr = c(0, 1, 0, 1))
  r = (cor(x, y))
  txt <- format(c(r, 0.123456789), digits=digits)[1]
  txt <- paste(prefix, txt, sep="")
  if(missing(cex.cor)) cex <- 1.5
  text(0.5, 0.5, txt, cex = 1.5)
}

# Theoph dataset
Theoph_nca <- NonCompart::tblNCA(Theoph, key=c("Subject", "Wt"), dose=320, concUnit="mg/L") %>% 
  as.tibble() %>%
  mutate_all(funs(as.numeric)) %>% 
  select(Wt, CMAX, TMAX, AUCLST)

# Pair plot
pairs(Theoph_nca, 
      lower.panel=panel.smooth, 
      upper.panel=panel.cor) 

psych 패키지를 사용해서 그릴 수도 있습니다.

library(psych)
pairs.panels(attitude)   #see the graphics window

data(iris)
pairs.panels(iris[1:4],bg=c("red","yellow","blue")[iris$Species],
        pch=21,main="Fisher Iris data by Species") #to show color grouping

pairs.panels(iris[1:4],bg=c("red","yellow","blue")[iris$Species],
  pch=21+as.numeric(iris$Species),main="Fisher Iris data by Species",hist.col="red") 

   #to show changing the diagonal
   
#to show 'significance'
   pairs.panels(iris[1:4],bg=c("red","yellow","blue")[iris$Species],
  pch=21+as.numeric(iris$Species),main="Fisher Iris data by Species",hist.col="red",stars=TRUE) 

#demonstrate not showing the data points
data(sat.act)
pairs.panels(sat.act,show.points=FALSE)

#better yet is to show the points as a period
pairs.panels(sat.act,pch=".")

#show many variables with 0 gap between scatterplots
# data(bfi)
# pairs.panels(bfi,show.points=FALSE,gap=0)

#plot raw data points and then the weighted correlations.
#output from statsBy
sb <- statsBy(sat.act,"education")
pairs.panels(sb$mean,wt=sb$n)  #report the weighted correlations

#compare with 
pairs.panels(sb$mean) #unweighed correlations