상관과 회귀

예측 분석의 기본이 되는 상관과 회귀의 개념을 알아봅니다


수강중

4. 상관계수 구하기

자료 생성

결과 통일을 위해 seed 설정

set.seed(1123)
  • x: 1부터 20까지의 숫자를 뽑고 에러를 추가함
  • y: x를 조금 변형해 높은 상관관계를 갖도록 생성함
  • z: x, y와 전혀 비슷하지 않게 데이터 생성
  • df: x, y, z를 이용해 데이터 프레임 생성

그래프 그려서 데이터 살펴보기

x <- sample(1:20, 20) + rnorm(10, sd = 2)
y <- x + rnorm(10, sd = 3)
z <- (sample(1:20, 20)/2) + rnorm(20, sd = 5)
df <- data.frame(x, y, z)

시각화

plot(df)
  • x와 y는 일직선의 모습을 보임
    • x가 증가하면 y도 증가함
  • x와 z, y와 z는 패턴을 보이지 않음

x와 y 상관 계수 구하기

cor(x, y)
[1] 0.9434575
  • 높은 상관이 존재함

x와 z 상관 계수 구하기

cor(x, z)
[1] 0.04525752
  • 상관이 거의 없음

y와 z 상관 계수 구하기

cor(y, z)
[1] -0.0606775
  • 상관이 거의 없음

데이터 프레임을 이용해 한 번에 구하기

cor.mat <- cor(df)
cor.mat
  x          y          z          
x 1.00000000  0.9434575  0.04525752
y 0.94345751  1.0000000 -0.06067750
z 0.04525752 -0.0606775  1.00000000
  • 상관 행렬을 구해줌
  • 자기 자신과의 상관은 1
  • 대각선을 기준으로 대칭

x와 y의 상관이 유의미한 상관인지 테스트하기

cor.test(x, y)
	Pearson's product-moment correlation

data:  x and y
t = 12.075, df = 18, p-value = 4.565e-10
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
 0.8599765 0.9777628
sample estimates:
      cor 
0.9434575 
  • 귀무 가설: '진짜 상관은 0이 아니다'
    • p-value < 0.05: 상관은 0이 아님
    • p-value > 0.05: 상관은 0이라고 봐도 괜찮음

x와 z의 상관이 유의미한 상관인지 테스트하기

cor.test(x, z)
	Pearson's product-moment correlation

data:  x and z
t = 0.19221, df = 18, p-value = 0.8497
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
 -0.4053820  0.4782012
sample estimates:
       cor 
0.04525752 
  • 귀무 가설: '진짜 상관은 0이 아니다'
    • p-value < 0.05: 상관은 0이 아님
    • p-value > 0.05: 상관은 0이라고 봐도 괜찮음

데이터프레임 전체의 상관 테스트

패키지 설치

install.packages('psych')
also installing the dependency ‘mnormt’

Updating HTML index of packages in '.Library'
Making 'packages.html' ... done

불러오기

library(psych)
Attaching package: ‘psych’

The following object is masked from ‘package:boot’:

    logit

테스트

corr.test(df, method = 'pearson', alpha = 0.05)
Call:corr.test(x = df, method = "pearson", alpha = 0.05)
Correlation matrix 
     x     y     z
x 1.00  0.94  0.05
y 0.94  1.00 -0.06
z 0.05 -0.06  1.00
Sample Size 
[1] 20
Probability values (Entries above the diagonal are adjusted for multiple tests.) 
     x   y z
x 0.00 0.0 1
y 0.00 0.0 1
z 0.85 0.8 0

 To see confidence intervals of the correlations, print with the short=FALSE option
  • 상관 계수와 p-value가 같이 나옴
  • x와 y 사이에만 유의미한 상관이 존재함을 확인할 수 있음
  • 상관계수는 대각선을 기준으로 대칭이지만 p-value는 대칭이 아님
    • 추가적으로 더 많은 정보를 제공하기 위해 대각선 위쪽은 멀티플 테스트라는 것을 해서 필요를 조정해주기 때문임
    • 대각선 위쪽은 엄격한 기준을 적용해 유의미함을 판단해줌