Skip to Content

상관관계 분석

초급중급

학습 목표

  • 피어슨/스피어만 상관계수 이해
  • 상관관계 vs 인과관계 구분
  • 상관관계 행렬 시각화

0. 사전 준비 (Setup)

데이터 실습을 위해 CSV 파일을 로드합니다.

import pandas as pd import numpy as np import seaborn as sns import matplotlib.pyplot as plt from scipy import stats # Load Data orders = pd.read_csv('src_orders.csv', parse_dates=['created_at']) items = pd.read_csv('src_order_items.csv') products = pd.read_csv('src_products.csv') # Merge for Analysis df = orders.merge(items, on='order_id').merge(products, on='product_id')

1. 피어슨 상관계수

이론

피어슨 상관계수(r)는 두 연속형 변수 간의 선형 관계 강도를 측정합니다.

  • r = 1: 완벽한 양의 상관
  • r = 0: 상관관계 없음
  • r = -1: 완벽한 음의 상관

계산

import pandas as pd from scipy import stats # 두 변수 상관계수 r, p_value = stats.pearsonr(df['retail_price'], df['sale_price']) print(f"상관계수: {r:.3f}") print(f"p-value: {p_value:.4f}") # 상관관계 해석 if abs(r) >= 0.7: print("→ 강한 상관관계") elif abs(r) >= 0.4: print("→ 중간 상관관계") else: print("→ 약한 상관관계")
실행 결과
상관계수: 1.000
p-value: 0.0000
→ 강한 상관관계

2. 상관관계 행렬

import seaborn as sns import matplotlib.pyplot as plt # 상관관계 행렬 numeric_cols = ['retail_price', 'cost', 'sale_price', 'num_of_item'] corr_matrix = df[numeric_cols].corr() # 히트맵 plt.figure(figsize=(10, 8)) sns.heatmap(corr_matrix, annot=True, cmap='RdYlBu_r', center=0, vmin=-1, vmax=1) plt.title('상관관계 행렬') plt.show()
실행 결과
[Graph Displayed]

3. 상관관계 vs 인과관계

⚠️
주의

상관관계 ≠ 인과관계

두 변수가 함께 변한다고 해서 하나가 다른 하나의 원인은 아닙니다.

예: 아이스크림 판매량과 익사 사고 수가 양의 상관관계 → 원인은 “더운 날씨”라는 제3의 변수


퀴즈

문제

제품 데이터에서 정가(retail_price), 원가(cost), 판매가(sale_price)의 상관관계를 분석하고 히트맵으로 시각화하세요.

정답 보기

# 상관관계 계산 cols = ['retail_price', 'cost', 'sale_price'] corr = df[cols].corr() print("상관관계 행렬:") print(corr.round(3)) # 시각화 plt.figure(figsize=(8, 6)) sns.heatmap(corr, annot=True, cmap='RdYlBu_r', center=0, fmt='.3f', square=True, vmin=-1, vmax=1) plt.title('가격 변수 간 상관관계') plt.tight_layout() plt.show()
실행 결과
상관관계 행렬:
            retail_price  ...  sale_price
retail_price         1.000  ...       1.000
cost                 0.983  ...       0.983
sale_price           1.000  ...       1.000

[3 rows x 3 columns]
[Graph Displayed]

다음 단계

가설검정에서 통계적 유의성을 검정하는 방법을 배워보세요.

Last updated on

🤖AI 모의면접실전처럼 연습하기