본문 바로가기

■ 프로그래밍/R

[R] Correlation Analysis 상관분석

[ R : Correlation Analysis 상관분석 ]


# 주석

## 결과값


패키지 설치 및 로딩하기

install.packages("corrplot")
install.packages("car")
install.packages("rgl")
install.packages("ggplot2")
install.packages("psych")
install.packages("writexl")
library(corrplot)
library(car)
library(rgl)
library(ggplot2)
library(psych)
library(writexl)


Correlation Analysis 상관분석

  • 언제 사용 하는가?
    A. 두 개의 양적 자료 간의 관련성(직선의 관계 = 선형의 관계)이 있는지를 통계적으로 분석하는 방법이다.

  • 자료: 양적자료 2개
    동일한 대상으로부터 다른 2개의 양적자료
    원인과 결과의 관계(인과관계)는 아니다. 인과관계는 회귀분석에서 다룬다.


1. 산점도(Scatter Plot)

예제 데이터: cars (R에 내장된 데이터)
변수명: speed(속도), dist(제동거리 = 브레이크를 밟았을 때 얼마나 밀리는지)


plot(data$variable = x축, data$variable = y축, col = 색, pch = 모양) 

http://kim-mj.tistory.com/41?category=810330의 barplot과 같이 main, ylab, ylim등과 같은 함수도 사용가능하다.


plot(cars$speed, cars$dist, col = "red", pch = 20)


ggplot2 패키지를 이용한 산점도

ggplot2::ggplot(data = mtcars,
                mapping = aes(x = wt, y = mpg)) + 
  geom_point()

기본 모양의 ggplot 산점도.
그 다음에는 계속 +로 추가한다.

아래 코드는 하나씩 추가하면서 변화를 직접 눈으로 확인하는 것을 추천한다.

ggplot2::ggplot(data = mtcars,
                mapping = aes(x = wt, y = mpg)) + 
  geom_point(aes(col = "red")) +                   # 점 색깔
  theme_classic() +                                # 배경
  labs(title = "Scatter Plot of wt & mpg",
       x = "Weight of Car",
       y = "Mile Per Gallon") +                    # 제목, 축 이름
  theme(plot.title = element_text(size = 20), 
        axis.title.x = element_text(size = 10),
        axis.title.y = element_text(size = 10)) +  # 제목 글씨 수정
  facet_wrap(~cyl)                                 # cyl의 factor별로 표시


ggplot2::ggplot(data = mtcars,
                mapping = aes(x = wt, y = mpg, col = cyl, fill = cyl)) + 
  geom_point()


col, fill을 cyl별로 나누어, 집단(4, 6, 8)마다 색이 달라짐.

ggplot2::ggplot(data = mtcars,
                mapping = aes(x = wt, y = mpg, col = cyl, size = cyl)) + 
  geom_point()


점의 모양이 바뀜.


2. 산점행렬도(SPM : Scatter Plot Matrix)

예제 데이터 : attitude(7개 모두 양적), iris(양적, 질적이 섞여있음)

plot(attitude)

plot(iris[ , 1:4])


corrplot::corrplot()

mtcars$cyl <- as.numeric(mtcars$cyl)
M <- cor(mtcars)
col <- colorRampPalette(c("#BB4444", "#EE9988", "#FFFFFF", "#77AADD", "#4477AA"))
corrplot(M, 
         method = "color", 
         col = col(200),
         type = "upper",
         order = "hclust", 
         number.cex = .7,
         addCoef.col = "black", 
         tl.col = "black", 
         tl.srt = 90, 
         sig.level = 0.01, 
         insig = "blank", 
         diag = FALSE)