상관분석 (Correlation Analysis)
상관분석은 두 변수 간에 상관관계가 존재하는지를 파악하고, 상관관계의 정도를 측정하는 것이다.
이 분석은 두 변수가 어떻게 연관되어 있는지 이해하고 예측하는 데 도움이 된다. 상관분석은 주로 두 변수 간의 선형 관계를 파악하기 위해 사용된다.
상관도란 통계학적인 측면에서 선형적 상관도를 의미하며, 두 변수의 변수값이 산점도상의 직선을 중심으로 분포되어 있는 정도를 나타낸다. 상관 계수는 두 변수 간의 상관관계의 강도와 방향을 나타내는 숫자로, 가장 많이 사용하는 것이 '피어슨의 상관계수(Pearson Correlation Coefficient)"이다.
피어슨 상관 계수는 보통 -1부터 1 사이의 값을 가지며, 다음과 같이 해석된다.
- 1에 가까운 값: 양의 상관 관계 (한 변수가 증가하면 다른 변수도 증가)
- -1에 가까운 값: 음의 상관 관계 (한 변수가 증가하면 다른 변수는 감소)
- 0에 가까운 값: 무상관 (두 변수 간의 관계가 없음)
피어슨 상관계수는 선형 상관관계만을 측정하며, 비선형 관계를 감지하지 못하는 한계가 있다. 때때로 두 변수 간의 관계가 곡선 형태로 나타날 때는 피어슨 상관계수가 유용하지 않을 수 있다. 사용하려는 데이터와 연구 목적에 따라 적절한 상관계수를 선택할 수 있다. 몇 가지 대표적인 다른 상관계수에는 다음과 같은 것들이 있다. 스피어만 상관계수(Spearman's rank correlation coefficient): 두 변수 간의 단조 관계를 측정하며, 데이터가 순위로 주어질 때 사용됩니다. 이는 비선형 관계도 감지할 수 있다. 켄달의 타우(Kendall's tau): 순위 데이터 간의 관련성을 측정하는 데 사용된다. 두 변수 간의 순위 일치 및 불일치를 고려하며, 비선형 관계도 감지할 수 있다. 포인트-비스레이션 상관계수(Point-biserial correlation coefficient): 하나는 범주형 변수이고 다른 하나는 연속형 변수인 경우 사용된다. 이타오제도(Tetrachoric correlation coefficient): 두 범주형 변수 간의 관련성을 측정하는 데 사용된다. |
두 변수 사이의 관계를 알아보고자 할 때, 가장 먼저 해볼 수 있는 것은 산점도(Scatterplot)를 그려보는 것이다. 산점도를 이용하면 두 변수간의 상관관계를 파악할 수 있다.
[Rstudio] 산점도 (scatter plot) with ggplot (tistory.com)
높은 기온(날씨)와 아이스크림 판매량
두 변수 간의 상관 관계가 있는 예제로 날씨와 아이스크림 판매량의 가상 데이터를 만들어 상관계수를 산출해 보았다.
R 함수 : cor( ) cor.test( )
cor() 함수는 변수들의 피어슨 상관 계수를 산출한다.
# 예제 데이터 생성 set.seed(634) # 난수 생성을 위한 시드 설정 temperature <- seq(20, 35, by = 1) # 기온 데이터 (20°C에서 35°C까지 1°C 간격) ice_cream_sales <- temperature + rnorm(length(temperature), mean = 0, sd = 5) # 아이스크림 판매량 데이터 # 데이터 프레임 생성 data <- data.frame(Temperature = temperature, IceCreamSales = ice_cream_sales) # 상관 계수 계산 correlation_coefficient <- cor(data$Temperature, data$IceCreamSales) # 결과 출력 cat("상관 계수:", correlation_coefficient, "\n") |
> cat("상관 계수:", correlation_coefficient, "\n") 상관 계수: 0.689112 |
- "상관 계수: 0.689112"의 결과는 주어진 데이터에서 "온도"와 "아이스크림 판매량" 간의 상관계수를 나타낸다.
- 상관계수 값이 0.689112라는 것은 두 변수 사이에 중간 정도의 양의 선형 상관관계가 있다는 것을 의미한다.
- 온도가 증가할 때 아이스크림 판매량도 증가하는 경향이 있으며, 이 관계는 어느 정도 강도를 가지고 있다.
- 상관계수가 양수이므로 두 변수가 함께 움직이는 경향이 있는 것을 나타낸다.
상관계수의 범위와 해석은 두 변수 간의 관련성을 파악하고 어떻게 상호작용하는지 이해하는 데 도움을 줄 수 있다.
상관계수는 -1부터 1까지의 값을 취할 수 있는데, 일반적으로 다음과 같이 해석한다.
상관계수 | 해석 |
-1.0 ~ -0.7 | 강한 음의 선형관계 상관계수가 음수인 경우, 두 변수 사이에 강한 음의 선형 상관관계가 있음을 나타낸다. 한 변수가 증가할 때 다른 변수는 감소하는 경향이 다. |
-0.7 ~ -0.3 | 뚜렷한 음의 선형관계 두 변수 사이에 중간 정도의 음의 선형 상관관계가 있음을 나타낸다. 한 변수가 증가할 때 다른 변수는 어느 정도 감소하는 경향이 있다. |
-0.3 ~ -0.1 | 약한 음의 선형관계 두 변수 사이에 약한 음의 선형 상관관계가 있음을 나타낸다. 두 변수 간의 관련성은 상대적으로 낮다. |
-0.1 ~ +0.1 | 거의 무시될 수 있는 선형관계 두 변수 사이에 거의 선형 상관관계가 없음을 나타낸다. |
+0.1 ~ +0.3 | 약한 양의 선형관계 두 변수 사이에 약한 양의 선형 상관관계가 있음을 나타낸다. 한 변수가 증가할 때 다른 변수도 어느 정도 증가하는 경향이 있다. |
+0.3 ~ +0.7 | 뚜렷한 양의 선형관계 두 변수 사이에 중간 정도의 양의 선형 상관관계가 있음을 나타낸다. 한 변수가 증가할 때 다른 변수도 어느 정도 증가하는 경향이 크다. |
+0.7 ~ +1.0 | 강한 양의 선형관계 두 변수 사이에 강한 양의 선형 상관관계가 있음을 나타낸다. 한 변수가 증가할 때 다른 변수도 증가하는 경향이 크다. |
cor.test() 함수는 변수들의 상관 계수와 유의확률을 산출한다.
# 상관 계수 및 유의확률 계산 correlation_coefficient_test <- cor.test(data$Temperature, data$IceCreamSales) # 결과 출력 correlation_coefficient_test |
> correlation_coefficient_test Pearson's product-moment correlation data: data$Temperature and data$IceCreamSales t = 3.5581, df = 14, p-value = 0.00315 alternative hypothesis: true correlation is not equal to 0 95 percent confidence interval: 0.2937510 0.8831399 sample estimates: cor 0.689112 |
- 상관계수 (correlation coefficient): 0.689112
이 숫자는 두 변수, "온도(Temperature)"와 "아이스크림 판매량(Ice Cream Sales)" 간의 상관계수를 나타낸다. 이는 두 변수 간에 중간 정도의 양의 선형 상관관계가 있음을 나타낸다. 즉, 온도가 증가할 때 아이스크림 판매량도 증가하는 경향이 있다. - t-값 (t-value): 3.5581
t-값은 상관계수가 0인 경우에 대한 가설을 검정하는 데 사용되며, 두 변수 간의 상관관계가 유의미한지를 평가하는 데 도움을 준다. 이 t-값은 0으로부터 얼마나 떨어져 있는지를 나타내며, 높은 t-값은 상관계수가 0이 아니라는 가설을 더 강하게 지지한다. - p-값 (p-value): 0.00315
p-값은 상관계수가 0인 경우에 대한 가설을 검정한 결과를 나타내며, 매우 낮은 p-값 (0.00315)은 두 변수 간의 상관관계가 통계적으로 유의미하다는 것을 나타낸다. 즉, 온도와 아이스크림 판매량 간의 상관관계가 우연에 의한 것이 아니라고 할 수 있다. - 신뢰구간 (confidence interval): 0.2937510에서 0.8831399
이 신뢰구간은 상관계수의 신뢰 구간을 나타내며, 이 구간 안에 상관계수가 포함되는 확률이 95%이다. 여기서 0.2937510에서 0.8831399까지의 구간 안에 상관계수가 포함되어 있으므로, 두 변수 간의 상관관계가 통계적으로 유의미함을 나타낸다. - 요약하면, 이 결과는 "온도"와 "아이스크림 판매량" 간에 중간 정도의 양의 상관관계가 있으며, 이 관계는 통계적으로 유의미하다고 할 수 있다.
산점도 그리기
# 산점도 그래프 그리기 (plot) plot(data$Temperature, data$IceCreamSales, main = "날씨와 아이스크림 판매량의 상관 관계", xlab = "기온(°C)", ylab = "아이스크림 판매량") |
# 산점도 그래프 그리기 (geom_point) library(tidyverse) data %>% ggplot (aes(Temperature,IceCreamSales)) + geom_point(size=3, color="red") + labs(title = "날씨와 아이스크림 판매량의 상관 관계", x = "기온(°C)", y = "아이스크림 판매량") |
상관관계와 인과관계는 다르다
상관관계를 인과관계로 잘못 해석하는 경우가 있다. 상관계수는 단지 연관성만을 의미한다.
인과관계는 어떤 사건 또는 요인이 다른 사건 또는 요인에 직접적으로 영향을 미치는 관계를 의미한다. 즉, 인과관계는 한 사건이 발생함으로써 다른 사건이 발생하거나 변화하는 관계를 나타내며, 원인과 결과 간의 연관성을 나타낸다. 이것은 원인과 결과 간의 인과적 연결을 시사하며, 원인이 결과를 유발하는 원리를 나타낸다.
반면, 상관관계는 두 가지 변수 또는 사건 간의 통계적 관련성을 나타내는 것으로, 한 변수가 변할 때 다른 변수도 함께 변화할 수 있지만, 이러한 상관성은 반드시 인과관계를 의미하지는 않는다. 즉, 두 변수 간의 상관관계가 있더라도 한 변수가 다른 변수를 직접적으로 원인으로 삼는 것은 아닐 수 있다. 상관관계는 단지 두 변수 간의 동시적 관련성을 보여줄 뿐, 두 변수 사이에 인과적 관계가 있는지는 밝혀내지 않는다.
인과관계를 확인하기 위해서는 실험적인 연구 디자인 또는 원인-결과 사이의 시간적 연속성을 확인하는 연구 방법이 필요하다. 그렇게 하면 어떤 사건이 다른 사건을 직접적으로 유발하거나 영향을 미치는지 파악할 수 있다. 상관관계는 두 변수 간의 통계적 연관성을 보여줄 뿐, 두 변수 간의 원인과 결과 관계를 입증 하지는 않는다.
특정 변수 간의 상관계수가 의미 있게 나온다고, 해당 변수를 특정 문제의 원인으로 해석하거나, 그래프를 그려보면 추이 형태가 비슷하다는 이유로 해당 변수를 문제의 원인으로 해석해서는 안 된다. 실제로 어떤 관계도 없지만, 우연히 상관관계가 있는 것처럼 보일 수도 있다.
두 변수의 상관관계만으로 원인과 결과일을 판단할 수 없다.
1940년대 보건 전문가는 소아마비와 아이스크림 섭취 간의 상관관계를 발견하고, 소아마비를 예방하려면 아이스크림을 적게 먹으라고 권고했다. 하지만, 추후에 소아마비가 여름에 많이 발병하고, 아이스크림도 여름에 많이 팔린다는 사실이 발혀졌다. 소아마비와 아이스크림 섭취 간에는 어떤 인과관계도 없었고, 그저 '날씨'라는 외생 변수가 소아마비와 아이스크림 변수에 공통으로 영향을 주었을 뿐인데, 전문가가 문제를 해결하기 위해서 고민하다보니, 이상한 결론을 낸 사례이다.
[출처 : 데이터 분석가의 숫자유감, 권정민 저]
참고자료 : 서울경제, [투자의창]진짜 인과관계와 가짜 상관관계
A라는 사건이 일어나는 데 B가 원인이라면, B와 A는 인과관계라고 할 수 있다. 하지만 A라는 사건이 일어날 때 B라는 사건이 일어난다면, 이는 상관관계가 높을지는 몰라도 인과관계는 성립되지 않는 것이다.
https://www.sedaily.com/NewsView/1VPGWBEHPH
참고자료 : 상관관계와 인과 관계의 차이
상관이란 서로 관련이 있는 관계다. 인과는 그 관계가 단순한 관련이 아니라, 한쪽이 원인이고 다른 쪽은 결과인 좀 더 구체적인 작용 원리를 알 수 있는 관계다. 따라서 상관관계를 인과관계로 착각하다는 것은 단순히 관련있는 두 대상을 어느 하나가 원인이고 다른 것은 결과인 것으로 잘못 생각하는 경우를 의미한다.
https://www.chiefexe.com/news/ArticleView.asp?listId=Mzg2NHx8bGltaXRfZmFsc2Ug
Pixabay로부터 입수된 Seksak Kerdkanno님의 이미지 입니다.
날씨와 아이스크림과 관련 기사
11월 맞아?…이상고온에 유통업계 "여름상품 잘 팔린다"
11월 맞아?…이상고온에 유통업계 "여름상품 잘 팔린다" - 뉴스1 (news1.kr)
GS25가 최근 2일(11월1~2일) 한강 인근 10개 매장의 매출을 전년 동기와 비교 분석한 결과 빙과류 556%, 얼음컵 296%, 탄산음료 196%, 이온음료 158% 매출이 급증했다.
CU에서도 최근 일주일(10월27일~11월2일) 사이 얼음(24.3%), 아이스드링크(20.8%), 아이스크림(17.2%), 맥주(11.3%) 제품이 전년 동기 대비 두 자릿수 성장세를 보였다.
아이스크림 매출 역대 최고…"35도 폭염엔 되레 판매 줄었다" 왜
아이스크림 매출 역대 최고…"35도 폭염엔 되레 판매 줄었다" 왜 | 중앙일보 (joongang.co.kr)
빙그레 관계자는 “상반기 해외 사업 매출이 전년 동기 대비 약 27% 성장한 덕분에 역대 최고 매출을 기록함과 동시에 수익도 개선됐다”며 “예년보다 더위가 일찍 찾아온 점도 아이스크림 판매에 긍정적인 영향을 미쳤다”고 설명했다. 세계기상기구(WMO)에 따르면 지난 7월은 관측과 기록이 시작된 이후 역대 가장 더웠던 달로 기록됐다.
다만 섭씨 35도가 넘는 폭염에는 아이스크림 판매량이 늘지 않는다는 분석도 있다. 그래미 피트케슬리 유니레버 최고재무책임자(CFO)는 현지 매체를 통해 “날씨가 너무 더워지면 사람들은 아이스크림 대신 실내에서 차가운 음료수를 찾는다”며 이 같이 말했다.
'데이터 분석 (with Rstudio)' 카테고리의 다른 글
건물과 주소 위도 경도 정보 알아내기 1 (with 구글 스프레드시트) (2) | 2023.12.05 |
---|---|
[Rstudio] 회귀분석 (Regression Analysis) (1) | 2023.11.14 |
[Rstudio] Line plot 선 그래프 with ggplot (0) | 2023.10.18 |
[Rstudio] 산점도 (scatter plot) with ggplot (1) | 2023.10.17 |
[Rstudio] 막대 그래프 (bar plot, column plot) with ggplot (0) | 2023.10.16 |