-
상관 분석(correlation analysis)은 두 변수 간의 관계 또는 연관성을 측정하는 데 사용되는 통계 기법이다. 한 변수의 변화가 다른 변수의 변화와 어떻게 관련되는지 이해하는 데 도움이 된다. 상관관계의 정도는 상관계수로 표현되며, 변수간 관계의 강도와 방향성을 나타낸다.
상관 분석은 데이터의 패턴과 추세를 파악하는 데 사용할 수 있으며 금융, 경제, 사회 과학, 의료 등 다양한 분야에서 자주 활용된다. 그러나 상관관계가 인과관계를 의미하지는 않는다는 점에 유의해야 한다.
상관관계
상관관계의 정도는 상관계수로 나타낸다. 상관계수의 종류에든 Pearson의 상관 계수, Spearman의 순위 상관 계수 및 Kendall의 타우 등이 있다.
상관계수
피어슨 상관계수
피어슨의 상관계수 :
종종 “r”로 표시되는 Pearson의 상관계수는 두 연속 변수 간의 선형적 상관관계를 정의한다. 피어슨의 상관계수는 두 변수가 정규성을 따른 다는 가정이 필요하며 그래서 모수적 방법이라 할 수 있다. r 값의 범 위는 -1에서 +1 사이이며, 여기서 +1은 완벽한 양의 선형 관계를 나타내고, -1은 완벽한 음의 선형 관계를 나타내고, 0은 선형 관계가 없음을 나타낸다.스피어맨 상관계수
두 변수가 정규성을 따르지 않는 경우, 또는 순위 데인터에 대한 상관계수를 정의한다. 스피어만 순위 상관계수는 값에 순위를 매겨 그 순위에 대해 상관계수 값을 구하기 때문에 비모수적 방법이라고 할 수 있다. 순위를 이용하기 때문에 연속형 변수가 아닌 순서형 변수인 경우에도 상관계수를 구할 수 있다.켄달의 타우 켄달의 타우 역시 비모수적 상관관계이다. 켄달 타우는 두 변수들 간의 순위를 비교하여 연관성을 계산한다. 켄달 타우를 이해하기 위해서는 concordant pair에 대한 이해가 필요하다.
각 변수의 비교 대상의 상하관계가 같으면 concordant pair라고 하고 다르면 discordant pair라고 한다. 예를 들어 사람들 키와 몸무게에 대한 상관계수를 알고 싶다고 해보자. 다음은 키와 몸무게 표이다.구분 A B C D E 키 1 2 3 4 5 체중 3 4 1 2 5 이제 켄달의 타우를 계산하기 위해서 다음과 같이 정리한다.
예제1을 두고 설명하면 키와 몸무게 모두 사람 A가 B보다 순위가 높다(서열이 높다). 이 경우는 concordant pair이다. 하지만 사람 B와 C를 비교하면 키는 B가 C보다 크지만 몸무게는 C가 B보다 크기 때문에 이 경우는 disconcordant pair가 된다. 켄달타우는 아래와 같이 계산을 한다.
예제1의 계산 결과 Tau = (6–4) / 10 = 0.2가 된다.
켄달 타우는 샘플 사이즈가 작거나 데이터의 동률이 많을 때 유용하다.MASS 패키지에 포함되어있는 cats 데이터로 상관분석을 수행해보자. cats 데이터는 고양이의 성별에 따른 몸무게(Bwt: Kg)와 심장무게(Hwt: g)를 포함하고 있는 데이터이다.
library(tidyverse) library(MASS) data(cats) str(cats)
'data.frame': 144 obs. of 3 variables: $ Sex: Factor w/ 2 levels "F","M": 1 1 1 1 1 1 1 1 1 1 ... $ Bwt: num 2 2 2 2.1 2.1 2.1 2.1 2.1 2.1 2.1 ... $ Hwt: num 7 7.4 9.5 7.2 7.3 7.6 8.1 8.2 8.3 8.5 ...
상관분석을 하기 전에 먼저 몸무게와 심장무게에 대한 산점도를 그려보자.
ggplot(cats, aes(Bwt, Hwt)) + geom_point(aes(color = Sex)) + geom_smooth()+ labs(title = "고양이 무게와 심장무게")
산점도에 geom_smooth()를 이용하여 회귀선까지 표현해보았다. 가시적으로 고양이의 무게와 심장의 무게는 상관관계가 있음을 확인 할 수 있다. 상관계수를 확인해보니, 0.804가 나왔다. 상관계수 계산할때 method 를 지정하지 않아 디폴트인 피어슨 상관계수로 계산을 한것이다. 서열척도로 측정된 데이터의 상관관계를 계산하기 위해서는 method를 “spearman”으로 지정하고 kendall 상관계수를 계산하려면 method를 “kendall”로 지정해서 수행하면 된다.
cor(cats$Bwt, cats$Hwt) # 기본값 피어슨 상관계수
[1] 0.8041274
cor(cats$Bwt, cats$Hwt, method = "spearman") # 스피어맨 상관계수
[1] 0.7908427
cor(cats$Bwt, cats$Hwt, method = "kendall") # 켄달의 상관계수
[1] 0.6079403
cor.test(cats$Bwt, cats$Hwt)
Pearson's product-moment correlation data: cats$Bwt and cats$Hwt t = 16.119, df = 142, p-value < 2.2e-16 alternative hypothesis: true correlation is not equal to 0 95 percent confidence interval: 0.7375682 0.8552122 sample estimates: cor 0.8041274
상관검정결과 p-value가 유의수준 0.05보다 매우 작아 고양이의 체중과 고양이 심장의 무게는 상관이 없다는(상관계수가 0이라는) 귀무가설을 기각할 수 있다.
그럼 단순선형회귀를 해서 R-squred 값을 확인해보자.
cat_lm <- lm(Hwt ~ Bwt, data = cats) summary(cat_lm)
Call: lm(formula = Hwt ~ Bwt, data = cats) Residuals: Min 1Q Median 3Q Max -3.5694 -0.9634 -0.0921 1.0426 5.1238 Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) -0.3567 0.6923 -0.515 0.607 Bwt 4.0341 0.2503 16.119 <2e-16 *** --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 Residual standard error: 1.452 on 142 degrees of freedom Multiple R-squared: 0.6466, Adjusted R-squared: 0.6441 F-statistic: 259.8 on 1 and 142 DF, p-value: < 2.2e-16
선형회귀 결과 회귀식은 유의미하고 R-squared 값이 0.6466으로 나타났다. 상관계수는 두변수의 관련성 정도를 의미하는 값인데 반해, 선형회귀의 R-squared 값은 회귀식으로 얼마나 데이터를 예측할 수 있느냐를 의미하는 값으로 상당한 의미상의 차이가 있음을 알 수 있다.
'데이터' 카테고리의 다른 글
caret으로 하는 데이터 전처리 (0) 2023.07.02 caret 패키지로 유방암 진단하기 (0) 2023.06.18 해모수와 비모수 (0) 2023.05.07 Data Stroage의 진화 (0) 2023.04.23 Data Governance (0) 2023.04.09