상관관계
한 변수의 변화가 다른 변수의 변화에 영향을 주는 관계를 상관관계라고 한다.
상관관계의 정도는 상관계수로 표현되며, 가장 많이 사용되는 상관계수가 피어슨 상관계수이다.
피어슨 상관계수: 두 변수 간의 선형적인 관계의 강도와 방향을 측정하는 통계적 지표
파이썬에서 상관계수 구하는 예시
corr()
: pandas의 DataFrame이나 Series에서 사용하는 메서드이다. 기본적으로 피어슨 상관계수를 계산한다.
import pandas as pd
# 데이터 로드
df = pd.read_csv('1인가구관심집단.csv')
# 종속변수 설정
target_variable = "평일_외출이_적은_집단"
# 상관계수 계산
correlation_matrix = df.corr(numeric_only=True)
# 종속변수와의 상관계수 추출 (자기 자신 제외)
independent_variables = correlation_matrix[target_variable].drop(target_variable).sort_values(ascending=False)
# 결과 출력
print("평일_외출이_적은_집단과의 상관계수가 큰 순:\n", independent_variables)
pearsonr(x, y)
:
scipy.stats 라이브러리에서 제공하는 함수이다.
x와 y에 대해 피어슨 상관계수와 p-value를 반환합니다.
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from scipy.stats import pearsonr
import koreanize_matplotlib
# 데이터 생성
data = {
"날짜": pd.date_range(start="2024-02-01", periods=10, freq="D"),
"광고비": [50, 60, 55, 70, 65, 80, 75, 90, 85, 100],
"매출": [300, 350, 320, 400, 390, 450, 420, 500, 470, 550]
}
df = pd.DataFrame(data)
# 상관계수 계산
correlation, _ = pearsonr(df["광고비"], df["매출"]) # PEARSONR 함수는 피어슨 상관계수와 p_value를 반환한다.
# 데이터 시각화
# 광고비에 따른 매출에 대한 상관계수를 시각화
# 광고비가 오르면 매출이 오르는 것을 볼 수 있다.
plt.figure(figsize=(8, 6))
sns.regplot(x="광고비", y="매출", data=df)
plt.title(f"광고비 vs 매출 (상관계수: {correlation:.2f})")
plt.xlabel("광고비 (만원)")
plt.ylabel("매출 (만원)")
plt.show()
# 상관계수 출력
# 상관계수가 1로 완전한 양의 상관관계이다.
print(f"Pearson 상관계수: {correlation:.2f}")
# ROI(투자수익률) 계산
df["ROI"] = (df["매출"] - df["광고비"]) / df["광고비"] * 100
print("\nROI 데이터:")
print(df[["날짜", "광고비", "매출", "ROI"]])
상관계수의 해석
r = 1
: 완전한 양의 상관관계 (한 변수가 증가할 때 다른 변수도 완전히 비례하여 증가)0.7 <= r < 1
: 강한 양의 상관관계0.3 <= r < 0.7
: 약한 양의 상관관계r = 0
: 상관관계 없음 (두 변수 간 관계가 없음)−0.3 < r <= -0.1
: 약한 음의 상관관계−1 < r <= -0.7
: 강한 음의 상관관계r = -1
: 완전한 음의 상관관계 (한 변수가 증가할 때 다른 변수는 완전히 반비례하여 감소)
상관관계와 인과관계
상관관계가 있다고 해서 반드시 인과관계가 있는 것은 아니다. 즉, 두 변수가 함께 변한다고 해서 하나가 다른 하나의 원인이 된다는 의미는 아니다.
예시
아이스크림 판매량과 익사 사고 수가 높은 상관관계를 보인다.
이는 상관관계로 보이지만 여름(계절)이라는 공통적인 인과관계가 있기 때문이다.
따라서 상관관계를 해석할 때는 반드시 외부 요인(사회적 요인, 기후 요인 등)과 논리적인 관계를 고려해야 합니다.
상관계수의 한계
- 데이터에 이상치가 많으면 왜곡될 수 있습니다.
- 상관계수 값이 낮다고 해서 반드시 두 변수 간에 관계가 없는 것은 아닙니다 (비선형 관계 가능성).
- 상관계수가 높고 결정계수가 높아도 실제값과 추정값이 다른 비선형 형태를 보일수 있다.
(seaborn.regplot(): 산점도 위에 선형 회귀 직선을 그린다.)
'회고' 카테고리의 다른 글
[멋쟁이사자처럼 그로스마케팅 부트캠프] 19일차 회고 (1) | 2025.02.28 |
---|---|
[멋쟁이사자처럼 그로스마케팅 부트캠프] 18일차 회고 (3) | 2025.02.26 |
[멋쟁이사자처럼 그로스마케팅 부트캠프] 16일차 회고 (4) | 2025.02.24 |
[멋쟁이사자처럼 그로스마케팅 부트캠프] 15일차 회고 (0) | 2025.02.21 |
[멋쟁이사자처럼 그로스마케팅 부트캠프] 14일차 회고 (6) | 2025.02.20 |