C.W.K.
Stream
Lesson 03 of 05 · published

독립성은 *검증된 주장*이지 디폴트가 아니야

~12 min · independence, mutually-exclusive, spurious-correlation, foundations

Level 0통계 초심자
0 XP0/55 lessons0/14 achievements
0/100 XP to next level100 XP to go0% complete
"실제 세상의 대부분은 독립이 아니야. 독립을 디폴트로 두는 건 *수학은 맞고 세상은 틀리는* 교과서식 함정이야."

실제로는 하나인 두 정의

두 사건 A 와 B 가 *독립* 이란 건 *한쪽 결과를 알아도 다른 쪽 확률에 대해 아무것도 알려주지 않는다* 는 뜻이야. 공식으로:

P(A | B) = P(A)    (조건부가 무조건부로 *접혀들어가*)

동치: P(A 그리고 B) = P(A) × P(B). Joint = marginal 의 곱. 두 공식이 다른 각도에서 같은 말을 해 — 하나는 조건부 얘기, 다른 하나는 곱셈 얘기.

시민을 산 채로 잡아먹는 혼동

사람들이 *독립* 과 *상호 배타적 (mutually exclusive)* 을 헷갈리는데, 사실은 *반대편 극단*이야.

상호 배타적: A 와 B 가 동시에 *못* 일어남. P(A 그리고 B) = 0. 예시: 동전 던지기는 앞면 OR 뒷면 — 둘 다일 수 없어.

독립: A 와 B 가 *동시에* 일어날 수는 있지만, 한쪽을 안다고 다른 쪽 확률이 안 바뀌어. P(A 그리고 B) = P(A) × P(B). 예시: 동전 던지기와 카드 뽑기 — 카드가 뭐든 동전은 50% 앞면.

상호 배타적 사건은 *가능한 가장 강한 의존*이야 — 한쪽을 보면 다른 쪽이 *완전히 배제*돼. 독립은 반대편: 한쪽을 봐도 다른 쪽이 *전혀 안 움직임*.

야생에서 독립은 드물어

하루를 따라가며 *진짜로 독립인 사건 쌍* 을 찾아봐. 날씨와 알람. 친구 기분과 코드 syntax 에러. S&P 500 과 채권 시장. 거의 모든 쌍에 *어떤 결합*이 있어, 종종 *제3의 변수*를 통해 숨겨진 형태로.

그 제3 변수 결합이 *spurious correlation (가짜 상관)* 이라는 항상-함정을 만들어. Tyler Vigen 의 고전 데이터셋은 1인당 치즈 소비량이 침대 시트에 얽혀 사망한 사람 수와 함께 움직이는 걸 보여줘 — 완벽해 보이는 상관, 인과 가능성 0, 거의 확실히 *인구 증가* 같은 공유된 lurker 가 만든 거. 같은 모양, *스토리 없음*. *독립-디폴트* 가정이 이런 헛소리 헤드라인을 만들어내.

살아남는 규칙

독립성은 *검증된 주장*이지 디폴트가 아니야. 공정한 동전과 공정한 주사위라는 교과서 예시는 *설계상 독립이 박혀 있어서* 선택된 거야. 실제 세상은 *숨겨진 결합*으로 가득해; 증명의 짐은 *독립을 주장하는 사람* 에게 있지, *왜냐고 묻는 회의주의자* 에게 있지 않아.

이게 quest 뒤에서 어디를 무는가

트랙 03 (왜 정규?) 의 중심극한정리는 평균 내는 값들이 *독립* 이라고 가정해. 그 가정이 깨질 때 — 위기 중의 금융 수익률, 발작 중의 뉴런, 바이럴 캠페인 중의 표 — 종 모양이 함께 깨지고, 트랙 07 (정규 오용): 블랙 스완, 두꺼운 꼬리, 동시 실패가 등장해. 독립성 가정은 *뒤에 오는 모든 것을 떠받치는 기둥*이야.

Code

독립: 교과서 케이스 vs 실제 세상 케이스·python
import numpy as np
rng = np.random.default_rng(7)
N = 50_000

# 쌍 1: 동전 던지기와 카드 뽑기 — 설계상 독립.
coin = rng.integers(0, 2, size=N)               # 0 또는 1
card_is_heart = rng.random(size=N) < 0.25       # 카드 1/4 이 하트

p_coin = coin.mean()
p_heart = card_is_heart.mean()
p_both = (coin & card_is_heart).mean()
print(f"쌍 1 (설계상 독립):")
print(f"  P(coin) * P(heart) = {p_coin * p_heart:.4f}")
print(f"  P(coin AND heart)  = {p_both:.4f}   <- 곱과 일치")

# 쌍 2: 가상 키와 몸무게 — 공유 원인을 통해 상관.
# 둘 다 숨겨진 'body size' 변수에 의해 움직임.
body_size = rng.normal(size=N)
height_tall = (body_size + 0.3 * rng.normal(size=N)) > 0   # 중앙값보다 큼
weight_heavy = (body_size + 0.3 * rng.normal(size=N)) > 0  # 중앙값보다 무거움

p_tall = height_tall.mean()
p_heavy = weight_heavy.mean()
p_both2 = (height_tall & weight_heavy).mean()
print(f"\n쌍 2 (숨겨진 body size 를 통해 상관):")
print(f"  P(tall) * P(heavy) = {p_tall * p_heavy:.4f}")
print(f"  P(tall AND heavy)  = {p_both2:.4f}   <- 곱보다 훨씬 큼")

# joint 의 곱셈 규칙은 *독립 아래에서만* 성립.
# 깨질 때 = 숨겨진 결합이 있다는 의미 — 세상은 그걸로 가득해.

External links

Exercise

일상에서 *직관적으로 독립이라고 다루는* 사건 쌍 세 개 이름 대봐. 각 쌍에 대해 *둘을 결합시킬 수 있는 숨겨진 제3 변수* 하나 찾아봐. 찾을 수 있다면 독립 가정이 *허술* 했던 거야. 예시: '내 기분' 과 '날씨' — 결합 변수: 햇빛, 둘 다에 직접 영향.
Hint
시간대, 날씨, 수면, 교통, 뉴스 사이클, 그리고 본인의 기분 — 대부분의 개인 데이터에서 큰 숨겨진 결합자야. *두 사건의 맥락을 함께 정하는 것* 이면 모두 후보.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고
💛 by 똘이warm

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.