본문으로 바로가기

허위 상관: 중요한 통계적 함정 (그리고 피하는 법)

교란변수부터 표본 편향까지, 허위 관계가 발생하는 이유를 알면 통계적 우연과 진짜 발견을 구분할 수 있습니다.
업데이트됨 2026년 7월 29일  · 9분 읽다

AI로 탐색하기

ChatGPT에서 열기Claude에서 열기Perplexity에서 열기

통계와 머신 러닝에서 패턴은 곧바로 정답을 뜻하지 않습니다.

아이스크림 판매와 익사율을 연결하는 차트나, 니컬러스 케이지 영화 수와 수영장 익사자 수를 연결하는 그래프를 보셨을 겁니다. 눈길을 끌고 기억에 남지만, 상관관계가 인과관계를 의미하지 않는다는 명확한 예시입니다. 또한 너무 많이 쓰여서, 이 문제가 실제 업무에서 왜 중요한지라는 핵심을 놓치게 하기도 합니다.

허위 상관은 두 변수 사이에 실제 연결이 없음에도 겉보기에는 관계가 있어 보이는 현상으로 이해할 수 있습니다. 우연이나 관찰하지 못한 숨은 변수가 연결고리일 뿐입니다. 이를 유의미한 정보로 대하면, 말이 안 되고 현실에도 통하지 않는 패턴을 쫓느라 시간을 낭비하게 됩니다.

이 글에서는 허위 상관이 왜 발생하는지, 어떻게 식별하는지, 그리고 이를 근거로 의사결정을 내리지 않기 위한 방법을 살펴보겠습니다.

그런데 상관관계가 정확히 무엇일까요? 데이터에서 관계 측정하기 블로그 글에서 다양한 상관계수와 활용법을 확인하세요.

허위 상관이란 무엇인가?

허위 상관은 두 변수 사이에 실제 연결이 없음에도 나타나는 겉보기의 통계적 관계입니다.

상관계수 값 자체는 실제입니다. 분석을 수행하면 그럴듯하고 의미 있어 보이는 값이 나옵니다. 계산 과정에 문제가 있거나 조작된 것이 아니고, 바로 그 점이 문제의 핵심입니다.

빠져 있는 것은 인과성입니다.

한 변수가 다른 변수를 일어나게 만드는 것이 전혀 아닙니다. 서로 무관한 이유로 함께 움직이거나, 아예 이유가 없을 수도 있습니다. 데이터가 보여주는 것과 실제로 일어나는 일 사이의 이 간극이 바로 허위 상관의 본질입니다.

허위 상관이 발생하는 이유

허위 상관은 대개 몇 가지 메커니즘으로 설명할 수 있습니다. 무엇을 찾아봐야 하는지 알게 되면, 상관관계를 맹신하지 않게 됩니다.

교란 변수

교란변수는 측정 중인 두 가지 모두에 영향을 주는 숨은 변수입니다.

고전적인 아이스크림과 익사 예를 들어보겠습니다. 아이스크림 판매가 익사를 일으키는 것은 아닙니다. 더운 날씨가 둘 다를 촉발합니다. 더 많은 사람이 아이스크림을 사고, 더 많은 사람이 수영을 하니 익사도 늘어납니다.

여기서 교란변수는 기온입니다. 데이터를 통해 이를 모니터링하지 않으면 놓치기 쉽습니다.

우연

때로는 아무 이유 없이 두 변수가 함께 움직이기도 합니다.

충분히 많은 데이터셋에서 충분히 많은 비교를 하면, 우연히 일치하는 것들이 생깁니다. 니컬러스 케이지와 수영장 익사 상관은 정확히 이런 식으로 생깁니다. 서로 무관한 두 시계열이 같은 해에 비슷한 추세를 보였을 뿐입니다.

변수가 충분히 많아지면, 일정 수준의 임의적 정렬은 당연히 발생합니다.

공통 추세

일부 변수는 시간에 따라 함께 움직이며, 실제로 관계가 없더라도 겉으로는 관계처럼 보일 수 있습니다.

인구, GDP, 인터넷 사용량, 플라스틱 생산량을 떠올려 보세요. 이런 변수의 상당수는 수십 년간 증가해 왔습니다. 이들 중 임의의 두 개를 비교하면, 둘 다 상승 추세이기 때문에 강한 상관을 얻게 됩니다.

하지만 방향만 같을 뿐, 변수들 사이에 실제 연결은 없습니다.

표본 편향

허위 상관은 세계를 대표해야 할 데이터 자체에서 비롯될 수도 있습니다.

표본이 연구 대상 모집단을 반영하지 못하면, 데이터셋 내에서만 존재하는 관계를 얻게 됩니다. 예를 들어 고객 설문을 앱을 통해서만 수집하면, "앱 사용"이 온갖 것과 상관을 보일 것입니다. 앱 사용이 그것들을 유발해서가 아니라, 앱 사용자에 편향된 표본 때문입니다.

허위 상관의 예시

허위 상관은 생각보다 흔합니다. 이를 식별하는 방법과 대응법을 살펴보세요.

고전적인 통계 예시

아이스크림과 익사 상관은 모두가 아는 예입니다. 아이스크림 판매와 익사자는 함께 오르내리지만, 둘 중 어느 것도 다른 것을 일으키지 않습니다. 더운 날씨라는 교란변수가 동시에 둘을 움직입니다.

니컬러스 케이지 예시는 다릅니다. 그의 연도별 영화 출연 수가 같은 기간의 수영장 익사자 수와 상관을 보이지만, 교란변수는 전혀 없습니다. 단지 우연입니다. 무관한 두 추세가 때마침 맞아떨어진 것이죠.

두 예시는 허위 상관의 요지를 잘 보여주지만, 불행히도 실제 사례에서는 이렇게 분명하지 않습니다.

비즈니스와 연구 예시

비즈니스 분석에서는, 허위 상관이 함께 있어 보이는 숫자들 뒤에 숨어 있는 경우가 많습니다.

한 회사가 2년간 주간 마케팅 지출과 주간 매출을 추적한다고 상상해 보세요. 다음 Python 코드를 사용해 따라 해볼 수 있습니다.

import numpy as np
import pandas as pd

np.random.seed(42)
weeks = 104

# Seasonal effect
seasonality = 10 * np.sin(np.linspace(0, 8 * np.pi, weeks)) + 20

marketing_spend = seasonality + np.random.normal(0, 2, weeks)
revenue = seasonality * 50 + np.random.normal(0, 30, weeks)

df = pd.DataFrame({
    "week": range(1, weeks + 1),
    "marketing_spend": marketing_spend,
    "revenue": revenue
})

print(df["marketing_spend"].corr(df["revenue"]))
Output: 0.9707905810711147

여기서 marketing_spendrevenue 사이에 강한 양의 상관이 나타납니다. "마케팅 지출이 매출을 늘린다"고 해석하고 싶어질 수 있고 실제로 그럴 수도 있지만, 위 코드는 이를 입증하지 않습니다. 두 변수 모두 같은 계절성 수요 사이클의 영향을 받습니다. 회사가 수요가 자연스레 높은 주에 지출을 늘리면, 마케팅 자체의 효과와 무관하게 상관이 나타납니다.

이런 오류는 비즈니스 분석에서 매우 흔합니다.

고객 행동과 마케팅 성과는 계절, 경기, 그 밖의 여러 숨은 요인에 따라 움직입니다. 두 지표가 상관을 보인다고 해서 그중 하나가 원인이라고 말해주지는 않습니다.

머신 러닝 예시

머신 러닝 모델은 "원인"이 무엇인지 모릅니다. 오로지 오류 지표를 낮춰주는 패턴을 찾을 뿐이며, 학습 데이터에서 통하는 지름길이 있으면 그대로 택합니다.

예를 들어:

  • 배경 의존: 소를 식별하도록 학습한 이미지 분류기가 동물 자체가 아니라 초록 목초지를 "소"와 연관짓습니다. 해변의 소 이미지를 보여주면 실패합니다.
  • 인구통계·지리적 대리변수: 과거 데이터로 학습한 모델이, 훈련 세트에 해당 변수가 없어도 우편번호를 소득이나 인종의 대리변수로 사용합니다.
  • 데이터셋 인공물: 한 병원의 오래된 장비로 촬영한 스캔이 질병과 상관을 보이자, 그 병원이 더 중증 환자를 많이 치료했기 때문이지 장비 출력이 질병 정보를 담아서가 아닌데도 모델이 이를 학습합니다.

같은 개념을 직접 실행해볼 수 있는 합성 예제로 보여드리겠습니다. 대출 연체 위험을 예측하는 모델에서 zip_code 가 실제로 중요한 변수인 income의 대리변수로 작동합니다.

import numpy as np
import pandas as pd
from sklearn.linear_model import LogisticRegression

np.random.seed(42)
n = 1000

# Zip code correlates with income, income drives default risk
zip_code = np.random.choice([1, 2, 3], size=n)
income = 80000 - zip_code * 15000 + np.random.normal(0, 5000, n)
default_risk = (income < 40000).astype(int)

df = pd.DataFrame({"zip_code": zip_code, "income": income, "default": default_risk})

model = LogisticRegression()
model.fit(df[["zip_code"]], df["default"])
print(model.score(df[["zip_code"]], df["default"]))

머신 러닝 예시 모델 점수

머신 러닝 예시 모델 점수

이 모델은 income을 보지 않고도 zip_code만으로 연체 위험을 예측할 수 있습니다. 이 데이터셋에서는 작동하지만, 우편번호와 소득의 패턴이 성립하지 않는 새로운 도시를 주면 모델 정확도는 떨어질 것입니다.

이것이 지름길 학습의 문제입니다.

허위 상관에 기대어 구축한 모델은 학습 데이터에서는 점수가 높더라도, 그 상관이 성립하지 않는 환경을 만나면 곧바로 실패할 수 있습니다.

허위 상관을 탐지하는 방법

나쁜 소식은 허위 상관을 완전히 없앨 수는 없다는 점입니다. 하지만 대부분을 잡아낼 습관을 만들 수는 있습니다.

다음은 실용적인 팁입니다.

  • 교란변수 조사: 상관을 신뢰하기 전에, 두 변수를 함께 움직이게 하는 다른 요인이 무엇인지 자문하세요. 기온과 계절성이 흔한 용의자입니다.
  • 도메인 지식 활용: 주제에 대한 지식으로 볼 때 말이 되지 않는 관계라면, 통계치가 그 직관을 압도하지 못하게 하세요.
  • 데이터 시각화: 산점도나 시계열 차트는 상관계수가 숨기는 공통 추세나 명백한 이상치를 드러냅니다.
  • 추가 통계 검정 수행: 부분 상관분석이나 서로 다른 하위집단에서도 관계가 유지되는지 확인하면 상관을 입증하거나 깨뜨릴 수 있습니다.
  • 가능하면 실험 설계: 무작위 대조 실험은 어떤 처치를 어떤 집단에 할당할지 통제하므로 교란변수를 제거합니다.

요컨대, 상관계수는 두 것이 함께 움직였음을 알려줄 뿐입니다. 그것이 의미가 있는지는 최종적으로 여러분의 판단입니다.

허위 상관과 다른 통계 개념의 비교

허위 상관과 혼용되어 많은 혼란을 부르는 용어들이 있습니다. 이 섹션에서는 해당 통계 개념이 무엇이며 어떻게 다른지 보여드리겠습니다.

허위 상관 vs 교란

교란은 허위 상관의 특정 원인 중 하나입니다. 동의어가 아닙니다.

교란은 제3의 변수가 측정 중인 두 변수 모두에 영향을 주어, 겉보기에 직접적인 것처럼 보이지만 실제로는 그렇지 않은 관계를 만들 때 발생합니다. 기온은 아이스크림 판매와 익사를 동시에 움직이는 교란변수가 될 수 있습니다.

허위 상관은 더 넓은 범주입니다. 교란을 포함하지만, 우연, 표본 편향, 시계열의 공통 추세처럼 숨은 제3의 변수가 없는 경우도 포함합니다. 니컬러스 케이지 예시는 영화 출연 수와 익사 사이를 연결하는 변수가 없으니 교란이 아닙니다. 단지 우연일 뿐입니다. 그래도 허위 상관입니다.

즉, 교란된 모든 관계는 허위 상관이지만, 모든 허위 상관이 교란된 것은 아닙니다.

허위 상관 vs 인과

허위 상관과 인과적 관계는 같은 산점도를 만들어낼 수 있습니다. 차이는 그 이면에서 무슨 일이 일어나는지이며, 그 차이가 데이터로 무엇을 할 수 있는지를 바꿉니다.

차이점을 표로 정리하면 다음과 같습니다.

  허위 상관 인과
관계 변수들 간에 실제 연결이 없음 한 변수가 다른 변수에 직접 영향
해석 의미 있다고 대하면 오해를 부름 실제 메커니즘을 반영
예측 유용성 원 데이터셋 밖에서는 신뢰하기 어려움 메커니즘이 변하지 않는 한 신규 데이터에서도 유지
인과 주장 가능성 없음 적절한 방법으로 확립되면 인과 주장 가능

상관계수가 아무리 강해 보여도, 허위 상관은 결코 인과를 의미하지 않습니다. 인과를 입증하려면 단일 통계 검정을 넘어선 통제 실험이나 확립된 인과 추론 방법이 필요합니다.

허위 상관의 위험을 줄이는 방법

사후적으로 허위 상관을 감지할 수 있는 것만으로도 유용합니다. 그러나 애초에 이를 피하는 워크플로를 구축하는 편이 훨씬 낫습니다.

이 워크플로에서 해야 할 일은 다음과 같습니다.

  • 더 나은 데이터 수집: 허위 상관의 상당수는 연구 대상과 맞지 않는 표본에서 시작됩니다. 분석 전에, 수집 방식이 올바른 조건에서 올바른 모집단을 포괄하는지 확인하세요.
  • 가능하면 무작위 실험 사용: 무작위화는 숨은 변수를 집단에 균등하게 분산시키므로 교란에 대한 최선의 방어입니다. 관찰 자료에 의존하기보다 A/B 테스트를 할 수 있다면 시행하세요.
  • 새 데이터셋에서 검증: 한 데이터셋에서만 나타나는 상관은 이상 신호입니다. 시기, 담당자, 모집단, 출처가 다른 데이터에서 관계가 유지되는지 확인한 후 신뢰하세요.
  • 인과 분석 수행: 교란 통제나 인과 그래프 같은 기법을 통해 "함께 움직인다"를 넘어 실제로 한 변수가 다른 변수에 영향을 주는지 검증하세요.
  • 도메인 전문성 포함: 주제 전문가라면 통계 검정이 놓치는 허위 관계를 포착하는 경우가 많습니다. 도메인 지식에 비춰 상관이 성립하지 않으면, 그 위에 쌓기 전에 의문을 제기하세요.

사실 이 단계들이 모든 허위 상관을 잡아내는 보증수표는 아니지만, 결합하면 신뢰하기 어려운 결론이나 모델을 만들 가능성을 낮춥니다.

결론

높은 상관계수는 답처럼 보일 수 있지만, 숙련된 데이터 전문가에게는 오히려 질문에 가깝습니다.

그 숫자는 두 것이 함께 움직였다는 사실만 알려줍니다. 이유는 말해주지 않습니다. 이를 인과의 증거로 취급하면 잘못된 가정이 생기고, 연구가 오독되며, 비즈니스 의사결정이 빗나가고, 모델은 새로운 데이터를 보자마자 실패합니다. 숫자 자체보다 숫자 뒤에 있는 것이 더 중요합니다.

그래서 가장 강력한 결론은 통계만으로 나오지 않습니다. 통계와 도메인 지식의 결합에서 나옵니다. 둘을 함께 사용하면, 데이터셋 밖에서도 통하는 결론에 도달하게 됩니다.

상관과 허위 상관이 헷갈린다면, 확률 및 통계 과정을 살펴보세요. 실험 설계 입문부터 가설검정까지 모두 다룹니다.

주제

DataCamp으로 학습하세요

courses

데이터 과학 이해하기

2
863.7K
코딩 없이 배우는 데이터 과학을 소개합니다.
자세히 보기Right Arrow
강좌 시작
더 보기Right Arrow