Must Learning With Statistics

상관분석 (R code) 본문

통계 이론

상관분석 (R code)

Doublek Park 2020. 3. 23. 01:22

상관분석에서 주의할 점은 상관분석은 단순히 두 변수 간의 선형 관계를 파악하는 것뿐입니다. 즉 이 말은 비선형관계는 상관계수로 잡아내기 힘들 수가 있습니다. 다음의 예시를 통해 알아보도록 하겠습니다.

library(ggplot2)
x1 = runif(n = 100,min = -10, max = 10)
y = x1 * 10 + rnorm(n = 100, mean = 3, sd = 5)

ggplot() +
  geom_point(aes(x = x1, y= y),size = 3) +
  geom_text(aes(x = 5, y = -30),label = round(cor(x1,y),4)) +
  theme_bw() 

위 두 변수는 산점도로 보나, 상관계수로 보나 거의 1에 가까운 상관계수를 가지고 있습니다. 이는 두 변수의 관계를 하나의 선으로 표현할 수 있다는 의미와 같습니다. 그렇다면 상관분석 검정을 해보도록 하겠습니다.

cor.test(x1,y)

    Pearson's product-moment correlation

data:  x1 and y
t = 113.5, df = 98, p-value < 2.2e-16
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
 0.9943742 0.9974582
sample estimates:
      cor 
0.9962179 

p−valuep−value가 매우 낮은 것을 확인할 수 있습니다. 귀무가설을 기각할 수 있으며, 두 변수의 상관계수는 0이 아니라는 결론을 내릴 수가 있습니다.

y = x1^2 + x1 * 10 + rnorm(n = 100, mean = 3, sd = 5)

ggplot() +
  geom_point(aes(x = x1, y= y),size = 3) +
  geom_text(aes(x = 0, y = 100),label = round(cor(x1,y),4)) +
  theme_bw() 

두번째 산점도에서는 선형보다는 2차 함수꼴의 관계를 가지고 있습니다. 또한 상관계수가 0.8 ~ 0.9로 낮아진 것을 확인할 수 있습니다. 여전히 높은 값인 것은 맞지만 선형관계가 아니기에 상관계수가 감소를 하였습니다. 하지만, 그렇다고 저 두 변수의 상관도가 낮아졌다고 판단하기는 힘듭니다. 선형 관계가 아닐 뿐이지, 비선형 관계는 그대로 유지하고 있습니다.

y = sin(x1) + rnorm(n = 100, mean = 3, sd = 0.3)

ggplot() +
  geom_point(aes(x = x1, y= y),size = 3) +
  geom_text(aes(x = 0, y = 5),label = round(cor(x1,y),4)) +
  theme_bw() 

이번 산점도는 상관계수가 매우 낮게 나오는 것을 확인할 수 있습니다. 근데, 그렇다고 상관이 없다고 할 수 없습니다. 산점도에는 뚜렷히 삼각함수 sin(x)꼴의 관계를 가지고 있는 것을 확인할 수 있기 때문입니다. 이렇게 상관분석은 정말 편한 분석이지만, 그렇다고 만능인 분석이 아닙니다. 저는 개인적으로 상관계수를 구하기 보다는 산점도를 직접 봄으로써 변수의 상관정도를 파악하고, 이러한 방법이 더 정확합니다.

'통계 이론' 카테고리의 다른 글

회귀분석(R Code)  (0) 2020.03.23
단순 선형 회귀분석의 추정  (0) 2020.03.23
상관분석  (0) 2020.03.23
분산분석(R Code)  (0) 2020.03.23
분산분석 (ANOVA)  (0) 2020.03.23
Comments