From b8a8670c8811df6ff819c4c9a0c1af11cc5d10a7 Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 31 Oct 2026 02:27:41 +0000 Subject: [PATCH 1/2] Keep the Korean text in one register and align a shared closing paragraph MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - End the remaining -니까요 sentences in the same -습니다 style as the rest of the book. - Use one wording for the 'from my head' paragraph that closes the references in chapters 17-22 and three appendices; the original uses the same two sentences in each. - Spell 고정효과모델 the same way in a chapter 14 note. --- .../01-Introduction-To-Causality.ipynb | 4 ++-- .../03-Stats-Review-The-Most-Dangerous-Equation.ipynb | 8 ++++---- .../04-Graphical-Causal-Models.ipynb | 6 +++--- ...reasonable-Effectiveness-of-Linear-Regression.ipynb | 8 ++++---- .../07-Beyond-Confounders.ipynb | 4 ++-- .../08-Instrumental-Variables.ipynb | 8 ++++---- .../09-Non-Compliance-and-LATE.ipynb | 2 +- .../11-Propensity-Score.ipynb | 2 +- .../12-Doubly-Robust-Estimation.ipynb | 2 +- .../14-Panel-Data-and-Fixed-Effects.ipynb | 6 +++--- .../17-Predictive-Models-101.ipynb | 2 +- ...geneous-Treatment-Effects-and-Personalization.ipynb | 6 +++--- .../19-Evaluating-Causal-Models.ipynb | 8 ++++---- .../20-Plug-and-Play-Estimators.ipynb | 4 ++-- .../21-Meta-Learners.ipynb | 2 +- .../22-Debiased-Orthogonal-Machine-Learning.ipynb | 6 +++--- .../24-The-Diff-in-Diff-Saga.ipynb | 4 ++-- .../Debiasing-with-Orthogonalization.ipynb | 2 +- .../Debiasing-with-Propensity-Score.ipynb | 6 +++--- .../When-Prediction-Fails.ipynb | 10 +++++----- 20 files changed, 50 insertions(+), 50 deletions(-) diff --git a/causal-inference-for-the-brave-and-true/01-Introduction-To-Causality.ipynb b/causal-inference-for-the-brave-and-true/01-Introduction-To-Causality.ipynb index 6a0a6dd..9ab6132 100644 --- a/causal-inference-for-the-brave-and-true/01-Introduction-To-Causality.ipynb +++ b/causal-inference-for-the-brave-and-true/01-Introduction-To-Causality.ipynb @@ -28,7 +28,7 @@ "\n", "이 모든 광풍 속에서 데이터 과학자로서, 아니 더 나아가 '그냥' 과학자로서 무엇을 해야 할까요? 현명하다면 우선 거품을 무시하는 법부터 배울 겁니다. 우리가 원하는 건 맥주입니다. 수학과 통계학은 언제나 쓸모가 있었고, 이제 와서 그 쓸모가 사라질 리도 없습니다. 둘째, 아무도 제대로 쓸 줄 모르는 반짝이는 최신 도구 말고, 여러분의 일을 가치 있게 만드는 것이 무엇인지 배우세요.\n", "\n", - "마지막으로 꼭 기억할 점은 지름길이 없다는 사실입니다. 수학과 통계학 지식이 가치 있는 이유는 바로 익히기 어렵기 때문입니다. 누구나 할 수 있다면 공급이 넘쳐서 그 값어치가 떨어질 테니까요. 그러니 **독하게 마음먹으세요**! 할 수 있는 한 제대로 배우세요. 그리고 기왕 하는 거, 즐기지 못할 이유도 없지 않을까요? 오직 **용감하고 진실한 자들을 위한** 이 모험에 함께 나서며 재미도 놓치지 맙시다.\n", + "마지막으로 꼭 기억할 점은 지름길이 없다는 사실입니다. 수학과 통계학 지식이 가치 있는 이유는 바로 익히기 어렵기 때문입니다. 누구나 할 수 있다면 공급이 넘쳐서 그 값어치가 떨어질 테니 말입니다. 그러니 **독하게 마음먹으세요**! 할 수 있는 한 제대로 배우세요. 그리고 기왕 하는 거, 즐기지 못할 이유도 없지 않을까요? 오직 **용감하고 진실한 자들을 위한** 이 모험에 함께 나서며 재미도 놓치지 맙시다.\n", "\n", "![img](./data/img/intro/tougher-up-cupcake1.jpg)\n", "\n", @@ -417,7 +417,7 @@ "\n", "편향(bias)은 연관관계와 인과관계를 다르게 만드는 요소입니다. 다행히 편향은 직관으로 쉽게 이해할 수 있습니다. 교실의 태블릿 예시를 다시 떠올려 봅시다. 학생들에게 태블릿을 주는 학교의 시험 점수가 더 높다는 주장을 들으면, 그런 학교는 태블릿이 없어도 어차피 점수가 높았을 것이라고 반박할 수 있습니다. 그런 학교는 다른 학교보다 돈이 많을 가능성이 크고, 그래서 더 좋은 교사를 채용하고 더 좋은 교실을 갖출 수 있기 때문입니다. 결국 처치를 받은 학교(태블릿이 있는 학교)와 처치를 받지 않은 학교는 비교할 수 없습니다.\n", "\n", - "잠재적 결과 표기법으로 말하면, 실험군의 $Y_0$가 대조군의 $Y_0$와 다르다는 뜻입니다. 실험군의 $Y_0$는 **반사실**이라는 점을 기억하세요. 관측할 수는 없지만 추론할 수는 있습니다. 이 경우에는 세상이 돌아가는 방식을 알고 있으니 한 걸음 더 나아갈 수도 있습니다. 아마도 실험군의 $Y_0$가 대조군 학교의 $Y_0$보다 클 것이라고 말할 수 있습니다. 아이들에게 태블릿을 줄 여유가 있는 학교라면 시험 점수를 높이는 다른 요소에도 돈을 쓸 여유가 있을 테니까요. 잠시 이 내용을 곱씹어 보세요. 잠재적 결과로 이야기하는 데 익숙해지려면 시간이 좀 걸립니다. 이 문단을 다시 읽고 확실히 이해했는지 확인하세요.\n", + "잠재적 결과 표기법으로 말하면, 실험군의 $Y_0$가 대조군의 $Y_0$와 다르다는 뜻입니다. 실험군의 $Y_0$는 **반사실**이라는 점을 기억하세요. 관측할 수는 없지만 추론할 수는 있습니다. 이 경우에는 세상이 돌아가는 방식을 알고 있으니 한 걸음 더 나아갈 수도 있습니다. 아마도 실험군의 $Y_0$가 대조군 학교의 $Y_0$보다 클 것이라고 말할 수 있습니다. 아이들에게 태블릿을 줄 여유가 있는 학교라면 시험 점수를 높이는 다른 요소에도 돈을 쓸 여유가 있을 가능성이 크기 때문입니다. 잠시 이 내용을 곱씹어 보세요. 잠재적 결과로 이야기하는 데 익숙해지려면 시간이 좀 걸립니다. 이 문단을 다시 읽고 확실히 이해했는지 확인하세요.\n", "\n", "이를 염두에 두면 연관관계가 인과관계가 아닌 이유를 간단한 수학으로 보일 수 있습니다. 연관관계는 $E[Y|T=1] - E[Y|T=0]$로 측정합니다. 이 예시에서는 태블릿이 있는 학교의 평균 시험 점수에서 태블릿이 없는 학교의 평균 시험 점수를 뺀 값입니다. 반면 인과관계는 $E[Y_1 - Y_0]$로 측정합니다.\n", "\n", diff --git a/causal-inference-for-the-brave-and-true/03-Stats-Review-The-Most-Dangerous-Equation.ipynb b/causal-inference-for-the-brave-and-true/03-Stats-Review-The-Most-Dangerous-Equation.ipynb index 62c9007..5bf72ee 100644 --- a/causal-inference-for-the-brave-and-true/03-Stats-Review-The-Most-Dangerous-Equation.ipynb +++ b/causal-inference-for-the-brave-and-true/03-Stats-Review-The-Most-Dangerous-Equation.ipynb @@ -8,7 +8,7 @@ "\n", "Howard Wainer는 2007년에 발표한 유명한 글에서 아주 위험한 공식들에 관해 이렇게 이야기합니다.\n", "\n", - "\"어떤 공식은 알면 위험하고, 어떤 공식은 모르면 위험합니다. 첫 번째 부류가 위험할 수 있는 까닭은 그 안에 담긴 비밀이 무시무시한 재앙이 도사린 문을 열어 주기 때문입니다. 이 부류에서 단연 으뜸은 아인슈타인의 상징적인 공식 $E = mc^2$입니다. 평범한 물질 속에 숨은 엄청난 에너지를 가늠하게 해 주니까요. \\[...\\] 하지만 제가 관심을 두는 것은 알 때가 아니라 모를 때 위험을 드러내는 공식입니다. 곁에 두면 세상을 명확하게 이해하게 해 주지만, 없으면 우리를 위험할 만큼 무지하게 만드는 공식들입니다.\"\n", + "\"어떤 공식은 알면 위험하고, 어떤 공식은 모르면 위험합니다. 첫 번째 부류가 위험할 수 있는 까닭은 그 안에 담긴 비밀이 무시무시한 재앙이 도사린 문을 열어 주기 때문입니다. 이 부류에서 단연 으뜸은 아인슈타인의 상징적인 공식 $E = mc^2$입니다. 평범한 물질 속에 숨은 엄청난 에너지를 가늠하게 해 주기 때문입니다. \\[...\\] 하지만 제가 관심을 두는 것은 알 때가 아니라 모를 때 위험을 드러내는 공식입니다. 곁에 두면 세상을 명확하게 이해하게 해 주지만, 없으면 우리를 위험할 만큼 무지하게 만드는 공식들입니다.\"\n", "\n", "그가 말하는 공식은 바로 드무아브르의 공식(Moivre's equation)입니다.\n", "\n", @@ -274,7 +274,7 @@ "\n", "> 확률은 단순히 주사위의 승산이나 그보다 복잡한 변형을 계산하는 일이 아니다. 확률이란 우리 지식에 확실성이 없음을 받아들이고, 우리의 무지를 다루는 방법을 개발하는 것이다.\n", "\n", - "불확실성을 수치로 나타내는 한 가지 방법은 **추정값의 분산**입니다. 분산은 관측값이 중심값, 즉 가장 그럴듯한 값에서 얼마나 벗어나는지 알려 줍니다. 드무아브르의 공식이 보여 주듯이, 이 불확실성은 관측하는 데이터의 양이 늘어날수록 줄어듭니다. 말이 되죠? 어떤 학교에서 많은 학생이 뛰어난 성적을 낸다면 그 학교가 정말 좋은 학교라고 더 확신할 수 있습니다. 하지만 학생이 10명뿐인 학교에서 8명이 좋은 성적을 냈다면 좀 더 의심해 봐야 합니다. 어쩌다 평균 이상인 학생들이 그 학교에 모였을 수도 있으니까요.\n", + "불확실성을 수치로 나타내는 한 가지 방법은 **추정값의 분산**입니다. 분산은 관측값이 중심값, 즉 가장 그럴듯한 값에서 얼마나 벗어나는지 알려 줍니다. 드무아브르의 공식이 보여 주듯이, 이 불확실성은 관측하는 데이터의 양이 늘어날수록 줄어듭니다. 말이 되죠? 어떤 학교에서 많은 학생이 뛰어난 성적을 낸다면 그 학교가 정말 좋은 학교라고 더 확신할 수 있습니다. 하지만 학생이 10명뿐인 학교에서 8명이 좋은 성적을 냈다면 좀 더 의심해 봐야 합니다. 어쩌다 평균 이상인 학생들이 그 학교에 모였을 수도 있기 때문입니다.\n", "\n", "위에서 본 아름다운 삼각형 그래프가 바로 이 이야기를 들려줍니다. 표본 크기가 작을 때는 학교 성적 추정값의 분산이 아주 크고, 표본 크기가 커질수록 분산이 줄어든다는 것을 보여 줍니다. 학교의 평균 점수만 그런 것이 아닙니다. 우리가 자주 추정하려는 평균 처치효과(ATE)를 포함해 모든 요약 통계량이 마찬가지입니다.\n", "\n", @@ -562,7 +562,7 @@ "\n", "마지막으로 한 가지 주의할 점이 있습니다. 신뢰구간은 언뜻 보기보다 해석하기 까다롭습니다. 예를 들어 이 특정 95% 신뢰구간이 95% 확률로 참 모평균을 포함한다고 말해서는 **안 됩니다**. 신뢰구간을 쓰는 빈도주의 통계학에서는 모평균을 참된 모집단 상수로 봅니다. 그러니 모평균은 우리가 구한 특정 신뢰구간 안에 있거나 없거나 둘 중 하나입니다. 즉, 특정 신뢰구간은 참 평균을 포함하거나 포함하지 않습니다. 포함한다면 포함할 확률은 95%가 아니라 100%이고, 포함하지 않는다면 0%입니다. 신뢰구간에서 95%는 여러 연구에서 계산한 그런 신뢰구간들이 참 평균을 포함하는 빈도를 가리킵니다. 95%는 95% 신뢰구간을 계산하는 알고리즘에 대한 신뢰이지, 특정 구간 자체에 대한 신뢰가 아닙니다.\n", "\n", - "그렇긴 하지만, 경제학자로서(통계학자 여러분은 잠시 눈을 돌려 주세요) 저는 이런 순수주의가 그다지 쓸모 있다고 생각하지 않습니다. 실무에서는 특정 신뢰구간이 95%의 확률로 참 평균을 포함한다고 말하는 사람을 자주 봅니다. 틀린 말이긴 해도 크게 해롭지는 않습니다. 여전히 추정값에 정확한 수준의 불확실성을 부여하기 때문입니다. 게다가 베이지안 통계학으로 넘어가 신뢰구간 대신 확률 구간을 쓰면, 그 구간이 95%의 확률로 분포의 평균을 포함한다고 말할 수 있습니다. 또 제가 실무에서 본 바로는, 표본 크기가 적당히 크면 베이지안 확률 구간은 베이지안도 빈도주의자도 인정하고 싶어 하는 것보다 신뢰구간과 더 비슷합니다. 그러니 제 말에 조금이라도 무게가 있다면, 신뢰구간을 두고 마음대로 말해도 좋습니다. 신뢰구간이 95%의 확률로 참 평균을 포함한다고 말해도 저는 상관하지 않습니다. 다만 추정값에 신뢰구간을 붙이는 일만은 절대 잊지 마세요. 그러지 않으면 우스워 보일 테니까요.\n", + "그렇긴 하지만, 경제학자로서(통계학자 여러분은 잠시 눈을 돌려 주세요) 저는 이런 순수주의가 그다지 쓸모 있다고 생각하지 않습니다. 실무에서는 특정 신뢰구간이 95%의 확률로 참 평균을 포함한다고 말하는 사람을 자주 봅니다. 틀린 말이긴 해도 크게 해롭지는 않습니다. 여전히 추정값에 정확한 수준의 불확실성을 부여하기 때문입니다. 게다가 베이지안 통계학으로 넘어가 신뢰구간 대신 확률 구간을 쓰면, 그 구간이 95%의 확률로 분포의 평균을 포함한다고 말할 수 있습니다. 또 제가 실무에서 본 바로는, 표본 크기가 적당히 크면 베이지안 확률 구간은 베이지안도 빈도주의자도 인정하고 싶어 하는 것보다 신뢰구간과 더 비슷합니다. 그러니 제 말에 조금이라도 무게가 있다면, 신뢰구간을 두고 마음대로 말해도 좋습니다. 신뢰구간이 95%의 확률로 참 평균을 포함한다고 말해도 저는 상관하지 않습니다. 다만 추정값에 신뢰구간을 붙이는 일만은 절대 잊지 마세요. 그러지 않으면 우스워 보일 테니 말입니다.\n", "\n", "> 옮긴이: 위 문단에 나오는 베이지안의 '확률 구간'은 보통 신용구간(credible interval)이라고 부릅니다.\n", "\n", @@ -579,7 +579,7 @@ "N(\\mu_1, \\sigma_1^2) + N(\\mu_2, \\sigma_2^2) = N(\\mu_1 + \\mu_2, \\sigma_1^2 + \\sigma_2^2)\n", "$\n", "\n", - "기억나지 않아도 괜찮습니다. 언제든 코드와 시뮬레이션 데이터로 확인해 볼 수 있으니까요." + "기억나지 않아도 괜찮습니다. 언제든 코드와 시뮬레이션 데이터로 확인해 볼 수 있기 때문입니다." ] }, { diff --git a/causal-inference-for-the-brave-and-true/04-Graphical-Causal-Models.ipynb b/causal-inference-for-the-brave-and-true/04-Graphical-Causal-Models.ipynb index 2ef5f0a..d439a53 100644 --- a/causal-inference-for-the-brave-and-true/04-Graphical-Causal-Models.ipynb +++ b/causal-inference-for-the-brave-and-true/04-Graphical-Causal-Models.ipynb @@ -342,7 +342,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "첫 번째 그래프에서 종속성은 화살표 방향을 따라 흐릅니다. 직관적으로는 조금 덜 와닿지만, 종속성은 대칭이라는 점에 주목하세요. 좀 더 구체적인 예를 들어 보겠습니다. 인과추론을 아는 것이 비즈니스 문제를 푸는 유일한 방법이고, 그 문제를 푸는 것이 승진하는 유일한 방법이라고 해 봅시다. 그러면 인과추론 지식이 있어야 문제를 풀 수 있고, 문제를 풀어야 승진합니다. 이때 승진은 인과추론 지식에 종속되어 있다고 말할 수 있습니다. 인과추론 전문성이 높을수록 승진할 가능성도 커집니다. 반대로 승진할 가능성이 클수록 인과추론 지식을 갖췄을 가능성도 큽니다. 그렇지 않다면 승진하기 어려웠을 테니까요.\n", + "첫 번째 그래프에서 종속성은 화살표 방향을 따라 흐릅니다. 직관적으로는 조금 덜 와닿지만, 종속성은 대칭이라는 점에 주목하세요. 좀 더 구체적인 예를 들어 보겠습니다. 인과추론을 아는 것이 비즈니스 문제를 푸는 유일한 방법이고, 그 문제를 푸는 것이 승진하는 유일한 방법이라고 해 봅시다. 그러면 인과추론 지식이 있어야 문제를 풀 수 있고, 문제를 풀어야 승진합니다. 이때 승진은 인과추론 지식에 종속되어 있다고 말할 수 있습니다. 인과추론 전문성이 높을수록 승진할 가능성도 커집니다. 반대로 승진할 가능성이 클수록 인과추론 지식을 갖췄을 가능성도 큽니다. 그렇지 않다면 승진하기 어려웠을 테니 말입니다.\n", "\n", "이제 중간 변수를 조건부로 둔다고 해 봅시다. 이 경우 종속성은 차단됩니다. 즉, Y가 주어지면 X와 Z는 독립입니다. 위 그래프에서 빨간색은 Y가 조건부로 둔 변수라는 뜻입니다. 마찬가지로 앞의 예시에서 여러분이 문제를 잘 푼다는 사실을 이미 안다면, 인과추론을 안다는 사실은 승진 가능성에 관해 아무런 추가 정보도 주지 않습니다. 수식으로 쓰면 $E[Promotion|Solve \\ problems, Causal \\ knowledge]=E[Promotion|Solve \\ problems]$입니다. 그 반대도 성립합니다. 문제를 얼마나 잘 푸는지 알고 나면, 승진 여부를 알아도 인과추론을 알 가능성에 관해서는 더 알 수 있는 것이 없습니다.\n", "\n", @@ -681,7 +681,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "예를 들어, 승진하는 방법이 두 가지 있다고 해 봅시다. 통계를 잘하거나 상사에게 아부를 잘하면 됩니다. 승진을 조건부로 두지 않는다면, 즉 승진할지 말지 전혀 모른다면, 통계 실력과 아부 실력은 독립입니다. 다시 말해 통계를 얼마나 잘하는지 알아도 상사에게 얼마나 아부를 잘하는지는 알 수 없습니다. 반면에 승진했다면, 갑자기 통계 실력만 알아도 아부 실력을 짐작할 수 있게 됩니다. 통계는 못하는데 승진했다면 아부에 능할 가능성이 큽니다. 그렇지 않았다면 승진하지 못했을 테니까요. 반대로 아부를 못한다면 통계를 잘하는 사람임이 틀림없습니다. 이런 현상을 종종 **다른 원인으로 설명되어 버리는(explaining away)** 현상이라고 부릅니다. 한 원인이 이미 효과를 설명해 버리므로 다른 원인일 가능성이 낮아지기 때문입니다.\n", + "예를 들어, 승진하는 방법이 두 가지 있다고 해 봅시다. 통계를 잘하거나 상사에게 아부를 잘하면 됩니다. 승진을 조건부로 두지 않는다면, 즉 승진할지 말지 전혀 모른다면, 통계 실력과 아부 실력은 독립입니다. 다시 말해 통계를 얼마나 잘하는지 알아도 상사에게 얼마나 아부를 잘하는지는 알 수 없습니다. 반면에 승진했다면, 갑자기 통계 실력만 알아도 아부 실력을 짐작할 수 있게 됩니다. 통계는 못하는데 승진했다면 아부에 능할 가능성이 큽니다. 그렇지 않았다면 승진하지 못했을 테니 말입니다. 반대로 아부를 못한다면 통계를 잘하는 사람임이 틀림없습니다. 이런 현상을 종종 **다른 원인으로 설명되어 버리는(explaining away)** 현상이라고 부릅니다. 한 원인이 이미 효과를 설명해 버리므로 다른 원인일 가능성이 낮아지기 때문입니다.\n", "\n", "일반적으로 충돌부를 조건부로 두면 종속 경로가 열립니다. 조건부로 두지 않으면 경로는 닫힌 채로 남습니다. 즉,\n", "\n", @@ -1769,7 +1769,7 @@ "\n", "이 경우 매개자를 조건부로 두면 음의 편향이 생깁니다. 교육의 효과가 실제보다 작아 보이게 됩니다. 인과효과가 양수이기 때문에 이렇게 됩니다. 효과가 음수였다면 매개자를 조건부로 둘 때 양의 편향이 생겼을 것입니다. 어느 경우든 이렇게 조건부로 두면 효과가 실제보다 약해 보입니다.\n", "\n", - "좀 더 일상적인 예로 말해 보겠습니다. 회사에서 두 지원자 중 한 명을 뽑아야 한다고 해 봅시다. 두 사람의 경력상 성과는 똑같이 인상적인데, 한 사람은 고등교육 학위가 없습니다. 누구를 뽑아야 할까요? 당연히 고등교육을 받지 않은 사람입니다. 불리한 조건을 딛고 다른 사람과 같은 성과를 냈으니까요.\n", + "좀 더 일상적인 예로 말해 보겠습니다. 회사에서 두 지원자 중 한 명을 뽑아야 한다고 해 봅시다. 두 사람의 경력상 성과는 똑같이 인상적인데, 한 사람은 고등교육 학위가 없습니다. 누구를 뽑아야 할까요? 당연히 고등교육을 받지 않은 사람입니다. 불리한 조건을 딛고 다른 사람과 같은 성과를 냈기 때문입니다.\n", "\n", "![image.png](./data/img/causal-graph/three_bias.png)\n", "\n", diff --git a/causal-inference-for-the-brave-and-true/05-The-Unreasonable-Effectiveness-of-Linear-Regression.ipynb b/causal-inference-for-the-brave-and-true/05-The-Unreasonable-Effectiveness-of-Linear-Regression.ipynb index 5667fcd..4ac2138 100644 --- a/causal-inference-for-the-brave-and-true/05-The-Unreasonable-Effectiveness-of-Linear-Regression.ipynb +++ b/causal-inference-for-the-brave-and-true/05-The-Unreasonable-Effectiveness-of-Linear-Regression.ipynb @@ -354,7 +354,7 @@ "지금까지는 무작위 실험 데이터를 다뤘지만, 알다시피 그런 데이터는 구하기 어렵습니다. 실험은 비용이 아주 많이 들거나 아예 불가능한 경우가 많습니다. 예를 들어 맥킨지(McKinsey & Co.)에 무작위로 고른 회사에 무료로 컨설팅을 해 달라고 설득하기는 무척 어렵습니다. 그렇게만 할 수 있다면 맥킨지 컨설팅이 실제로 가져다주는 가치와, 애초에 맥킨지에 돈을 낼 수 있는 회사는 이미 형편이 아주 좋다는 사실을 단번에 구분할 수 있을 것입니다.\n", "\n", "\n", - "그래서 이제부터는 무작위가 아닌 데이터, 즉 관측 데이터(observational data)를 깊이 다뤄 보겠습니다. 다음 예제에서는 교육을 1년 더 받는 것이 시간당 임금에 미치는 영향을 추정합니다. 짐작하셨겠지만 교육으로 실험을 하기는 극도로 어렵습니다. 사람들을 4년, 8년, 12년 교육에 무작위로 배정할 수는 없으니까요. 이럴 때 손에 쥔 것은 관측 데이터뿐입니다.\n", + "그래서 이제부터는 무작위가 아닌 데이터, 즉 관측 데이터(observational data)를 깊이 다뤄 보겠습니다. 다음 예제에서는 교육을 1년 더 받는 것이 시간당 임금에 미치는 영향을 추정합니다. 짐작하셨겠지만 교육으로 실험을 하기는 극도로 어렵습니다. 사람들을 4년, 8년, 12년 교육에 무작위로 배정할 수는 없기 때문입니다. 이럴 때 손에 쥔 것은 관측 데이터뿐입니다.\n", "\n", "먼저 아주 단순한 모델을 추정해 봅시다. 로그 시간당 임금을 교육 연수에 회귀합니다. 로그를 쓰는 이유는 매개변수 추정값을 백분율로 해석할 수 있기 때문입니다(로그의 이 놀라운 성질을 처음 들어 보았고 왜 그런지 궁금하다면 [이 링크](https://stats.stackexchange.com/questions/244199/why-is-it-that-natural-log-changes-are-percentage-changes-what-is-about-logs-th)를 확인해 보세요). 이렇게 하면 교육을 1년 더 받을 때 임금이 x% 오른다고 말할 수 있습니다.\n", "\n", @@ -683,7 +683,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "방금 추정한 계수에 따르면, IQ, 경력, 근속 연수, 나이 등이 같은 사람들 사이에서는 교육을 1년 더 받는 것이 시간당 임금 4.11% 상승과 연관되어 있다고 기대할 수 있습니다. `educ`만 넣은 첫 번째 단순 모델이 편향되었을 것이라는 의심이 맞았던 셈입니다. 그 편향이 교육의 영향을 과대평가하고 있었다는 것도 확인됩니다. 다른 요인을 통제하자 추정된 교육의 영향이 줄어들었으니까요.\n", + "방금 추정한 계수에 따르면, IQ, 경력, 근속 연수, 나이 등이 같은 사람들 사이에서는 교육을 1년 더 받는 것이 시간당 임금 4.11% 상승과 연관되어 있다고 기대할 수 있습니다. `educ`만 넣은 첫 번째 단순 모델이 편향되었을 것이라는 의심이 맞았던 셈입니다. 그 편향이 교육의 영향을 과대평가하고 있었다는 것도 확인됩니다. 다른 요인을 통제하자 추정된 교육의 영향이 줄어들었기 때문입니다.\n", "\n", "모든 것을 직접 코딩하는 대신 다른 사람이 만든 소프트웨어를 쓰는 현명함을 발휘하면, 이 추정값에 신뢰구간까지 붙일 수 있습니다." ] @@ -792,7 +792,7 @@ "times the regression of omitted on included\"\n", "```\n", "\n", - "여기서 짧은 회귀(short)는 변수를 누락한 회귀이고, 긴 회귀(long)는 그 변수들을 포함한 회귀입니다. 이 공식, 혹은 주문은 편향의 본질을 한층 깊이 들여다보게 해 줍니다. 첫째, 누락된 변수가 종속변수 $Y$에 아무 영향을 주지 않으면 편향 항은 0입니다. 지극히 당연한 이야기입니다. 교육이 임금에 미치는 영향을 알고 싶을 때 임금과 무관한 것(들판의 백합 키가 얼마나 되는지 같은 것)까지 통제할 필요는 없으니까요. 둘째, 누락된 변수가 처치변수에 아무 영향을 주지 않을 때도 편향 항은 0입니다. 이 역시 직관적으로 납득이 갑니다. 교육에 영향을 주는 모든 것을 모델에 넣었다면, 추정한 교육의 영향에 '임금에도 영향을 주는 다른 무언가와 교육 사이의 상관관계'가 섞여 들 여지가 없습니다.\n", + "여기서 짧은 회귀(short)는 변수를 누락한 회귀이고, 긴 회귀(long)는 그 변수들을 포함한 회귀입니다. 이 공식, 혹은 주문은 편향의 본질을 한층 깊이 들여다보게 해 줍니다. 첫째, 누락된 변수가 종속변수 $Y$에 아무 영향을 주지 않으면 편향 항은 0입니다. 지극히 당연한 이야기입니다. 교육이 임금에 미치는 영향을 알고 싶을 때 임금과 무관한 것(들판의 백합 키가 얼마나 되는지 같은 것)까지 통제할 필요는 없기 때문입니다. 둘째, 누락된 변수가 처치변수에 아무 영향을 주지 않을 때도 편향 항은 0입니다. 이 역시 직관적으로 납득이 갑니다. 교육에 영향을 주는 모든 것을 모델에 넣었다면, 추정한 교육의 영향에 '임금에도 영향을 주는 다른 무언가와 교육 사이의 상관관계'가 섞여 들 여지가 없습니다.\n", "\n", "![img](data/img/linear-regression/confused_cat.png)\n", "\n", @@ -964,7 +964,7 @@ "\n", "이번에는 음의 편향(negative bias) 예시로, 경찰이 도시 폭력에 미치는 영향을 나타낸 인과 그래프를 생각해 봅시다. 현실에서는 경찰 인력이 많은 도시일수록 폭력 사건도 많은 경우를 흔히 봅니다. 그렇다면 경찰이 폭력을 일으킨다는 뜻일까요? 글쎄요, 그럴 수도 있겠지만 여기서 그 논쟁에 뛰어들 필요는 없을 것 같습니다. 다만 교란 요인 때문에 경찰이 폭력에 미치는 영향을 편향된 모습으로 보고 있을 가능성도 큽니다. 실제로는 경찰 인력을 늘리면 폭력이 줄어들 수도 있습니다. 하지만 세 번째 변수인 범죄가 폭력도 늘리고 경찰 인력도 늘립니다. 범죄를 고려하지 않으면 범죄가 폭력에 미치는 영향이 경찰 인력을 통해 흘러들어서, 경찰이 폭력을 늘리는 것처럼 보이게 됩니다. 이것이 음의 편향의 예입니다.\n", "\n", - "인과 그래프로 회귀분석과 무작위 통제 실험이 각각 어떻게 교란편향을 바로잡는지도 볼 수 있습니다. RCT는 교란 요인과 처치변수 사이의 연결을 끊어서 이 문제를 해결합니다. $T$를 무작위로 정하면, 정의상 그 무엇도 처치의 원인이 될 수 없으니까요." + "인과 그래프로 회귀분석과 무작위 통제 실험이 각각 어떻게 교란편향을 바로잡는지도 볼 수 있습니다. RCT는 교란 요인과 처치변수 사이의 연결을 끊어서 이 문제를 해결합니다. $T$를 무작위로 정하면, 정의상 그 무엇도 처치의 원인이 될 수 없기 때문입니다." ] }, { diff --git a/causal-inference-for-the-brave-and-true/07-Beyond-Confounders.ipynb b/causal-inference-for-the-brave-and-true/07-Beyond-Confounders.ipynb index 087edb7..5e7253a 100644 --- a/causal-inference-for-the-brave-and-true/07-Beyond-Confounders.ipynb +++ b/causal-inference-for-the-brave-and-true/07-Beyond-Confounders.ipynb @@ -909,7 +909,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "그렇다면 병원도 모델에 넣어야 할까요? 어쨌든 병원이 처치의 원인이라는 것은 알고 있으니까요. 맞는 말입니다. 하지만 중증도를 통제하고 나면 병원은 더 이상 결과인 입원 일수와 상관관계가 없습니다. 그리고 교란 요인이 되려면 처치와 결과 모두의 원인이어야 합니다. 지금 병원은 처치의 원인일 뿐입니다.\n", + "그렇다면 병원도 모델에 넣어야 할까요? 어쨌든 병원이 처치의 원인이라는 것은 알고 있기 때문입니다. 맞는 말입니다. 하지만 중증도를 통제하고 나면 병원은 더 이상 결과인 입원 일수와 상관관계가 없습니다. 그리고 교란 요인이 되려면 처치와 결과 모두의 원인이어야 합니다. 지금 병원은 처치의 원인일 뿐입니다.\n", "\n", "그래도 병원을 통제하면 분산이 줄어들지 않을까요? 이번에도 아닙니다. 통제변수가 분산을 줄이려면 처치가 아니라 결과를 잘 예측해야 하는데, 병원은 처치를 잘 예측하는 변수입니다.\n", "\n", @@ -1638,7 +1638,7 @@ "\\end{align*} \n", "$$\n", "\n", - "마지막 등식은 $E[Y_i|Y_i>0, T_i=1]P(Y_i>0|T_i=0)$를 더하고 빼서 항을 다시 정리하면 얻을 수 있습니다. 즉, 평균 차이는 두 부분으로 이루어집니다. 첫째는 결과 $y$가 양수일 확률의 차이입니다. 고객이 지출에 참여할 확률이 얼마나 늘었는지를 측정하므로 참여 효과라고 부릅니다. 둘째는 참여를 조건으로 한 결과의 차이, 즉 COP 효과입니다. 여기까지는 괜찮습니다. 아무 문제도 없습니다. 수학적으로 참이니까요. 문제는 각 부분을 따로 추정하려 할 때 생깁니다.\n", + "마지막 등식은 $E[Y_i|Y_i>0, T_i=1]P(Y_i>0|T_i=0)$를 더하고 빼서 항을 다시 정리하면 얻을 수 있습니다. 즉, 평균 차이는 두 부분으로 이루어집니다. 첫째는 결과 $y$가 양수일 확률의 차이입니다. 고객이 지출에 참여할 확률이 얼마나 늘었는지를 측정하므로 참여 효과라고 부릅니다. 둘째는 참여를 조건으로 한 결과의 차이, 즉 COP 효과입니다. 여기까지는 괜찮습니다. 아무 문제도 없습니다. 수학적으로 참이기 때문입니다. 문제는 각 부분을 따로 추정하려 할 때 생깁니다.\n", "\n", "COP 효과를 더 분해해 보면 문제가 더 분명하게 드러납니다.\n", "\n", diff --git a/causal-inference-for-the-brave-and-true/08-Instrumental-Variables.ipynb b/causal-inference-for-the-brave-and-true/08-Instrumental-Variables.ipynb index c5974e2..abd1989 100644 --- a/causal-inference-for-the-brave-and-true/08-Instrumental-Variables.ipynb +++ b/causal-inference-for-the-brave-and-true/08-Instrumental-Variables.ipynb @@ -14,7 +14,7 @@ "\\log(\\mathrm{wage})_i = \\beta_0 + \\kappa \\ \\mathrm{educ}_i + \\pmb{\\beta}\\mathrm{Ability}_i + u_i\n", "$\n", "\n", - "교육이 $\\log\\mathrm{(wage)}$에 미치는 인과효과 $\\kappa$를 알아내려면 능력 요인 $\\mathrm{Ability}_i$를 통제해야 합니다. 그러지 않으면 편향이 생길 가능성이 큽니다. 능력은 처치인 교육과 결과인 소득 모두에 영향을 주는 교란 요인(confounder)일 테니까요." + "교육이 $\\log\\mathrm{(wage)}$에 미치는 인과효과 $\\kappa$를 알아내려면 능력 요인 $\\mathrm{Ability}_i$를 통제해야 합니다. 그러지 않으면 편향이 생길 가능성이 큽니다. 능력은 처치인 교육과 결과인 소득 모두에 영향을 주는 교란 요인(confounder)이라고 볼 수 있기 때문입니다." ] }, { @@ -248,7 +248,7 @@ "\n", "$W$는 교란 요인이므로 $\\mathrm{Cov}(T, v) \\neq 0$입니다. 지금 가진 것은 긴 식이 아니라 짧은 식입니다. 앞의 예로 말하면 능력이 교육과 상관관계가 있다는 뜻입니다. 이 경우 짧은 회귀식을 돌리면 누락 변수 때문에 $\\kappa$의 추정량이 편향됩니다.\n", "\n", - "이제 도구변수의 마법을 감상할 차례입니다! 도구변수 Z는 T를 거쳐서만 결과와 상관관계를 가지므로 $\\mathrm{Cov}(Z,v) = 0$입니다. 그렇지 않다면 Z에서 W를 거쳐 Y로 가는 두 번째 경로가 있다는 뜻이 되니까요. 이 점을 염두에 두면 다음과 같이 쓸 수 있습니다.\n", + "이제 도구변수의 마법을 감상할 차례입니다! 도구변수 Z는 T를 거쳐서만 결과와 상관관계를 가지므로 $\\mathrm{Cov}(Z,v) = 0$입니다. 그렇지 않다면 Z에서 W를 거쳐 Y로 가는 두 번째 경로가 있다는 뜻이 되기 때문입니다. 이 점을 염두에 두면 다음과 같이 쓸 수 있습니다.\n", "\n", "$\n", "\\mathrm{Cov}(Z,Y) = \\mathrm{Cov}(Z,\\beta_0 + \\kappa\\ T_i + v_i) = \\kappa \\mathrm{Cov}(Z,T) + \\mathrm{Cov}(Z, v) = \\kappa \\mathrm{Cov}(Z,T)\n", @@ -260,7 +260,7 @@ "\\kappa = \\dfrac{\\mathrm{Cov}(Y_i, Z_i)/V(Z_i)}{\\mathrm{Cov}(T_i, Z_i)/V(Z_i)} = \\dfrac{\\text{Reduced Form}}{\\text{1st Stage}} \n", "$\n", "\n", - "분자와 분모가 모두 회귀계수(공분산을 분산으로 나눈 값)라는 점에 주목하세요. 분자는 Y를 Z에 회귀한 결과입니다. 다시 말해 Z가 Y에 미치는 '영향'입니다. 그렇다고 Z가 Y의 원인이라는 말은 아닙니다. Z는 T를 통해서만 Y에 영향을 준다는 조건이 있으니까요. 결국 Z가 T를 거쳐 Y에 미치는 효과가 얼마나 큰지를 담고 있을 뿐입니다. 이 분자는 워낙 유명해서 축약형(reduced form) 계수라는 이름까지 붙어 있습니다.\n", + "분자와 분모가 모두 회귀계수(공분산을 분산으로 나눈 값)라는 점에 주목하세요. 분자는 Y를 Z에 회귀한 결과입니다. 다시 말해 Z가 Y에 미치는 '영향'입니다. 그렇다고 Z가 Y의 원인이라는 말은 아닙니다. Z는 T를 통해서만 Y에 영향을 준다는 조건이 있기 때문입니다. 결국 Z가 T를 거쳐 Y에 미치는 효과가 얼마나 큰지를 담고 있을 뿐입니다. 이 분자는 워낙 유명해서 축약형(reduced form) 계수라는 이름까지 붙어 있습니다.\n", "\n", "분모 역시 회귀계수입니다. 이번에는 T를 Z에 회귀한 것입니다. 이 회귀는 Z가 T에 미치는 영향을 담고 있고, 이것 역시 유명해서 1단계(first stage) 계수라고 부릅니다.\n", "\n", @@ -513,7 +513,7 @@ "1. $\\mathrm{Cov}(Z, T) \\neq 0$. 강한 1단계가 있어야 한다는 조건입니다. 다시 말해 도구변수가 실제로 처치변수에 영향을 주어야 합니다.\n", "2. $Y \\perp Z | T $. 배제 제약으로, 도구변수 Z가 처치 T를 통해서만 결과 Y에 영향을 준다는 뜻입니다.\n", "\n", - "다행히 첫 번째 가정은 검증할 수 있습니다. $\\mathrm{Cov}(Z, T)$가 0이 아님을 데이터로 확인할 수 있으니까요. 이 예에서 출생 분기가 앞서 말한 대로 도구변수 역할을 한다면, 그해 마지막 분기에 태어난 사람이 연초에 태어난 사람보다 교육을 조금 더 오래 받았어야 합니다. 이를 확인하는 통계 검정을 돌리기 전에 먼저 데이터를 그려서 직접 눈으로 보겠습니다." + "다행히 첫 번째 가정은 검증할 수 있습니다. $\\mathrm{Cov}(Z, T)$가 0이 아님을 데이터로 확인할 수 있기 때문입니다. 이 예에서 출생 분기가 앞서 말한 대로 도구변수 역할을 한다면, 그해 마지막 분기에 태어난 사람이 연초에 태어난 사람보다 교육을 조금 더 오래 받았어야 합니다. 이를 확인하는 통계 검정을 돌리기 전에 먼저 데이터를 그려서 직접 눈으로 보겠습니다." ] }, { diff --git a/causal-inference-for-the-brave-and-true/09-Non-Compliance-and-LATE.ipynb b/causal-inference-for-the-brave-and-true/09-Non-Compliance-and-LATE.ipynb index 07f3df1..4c14cb5 100644 --- a/causal-inference-for-the-brave-and-true/09-Non-Compliance-and-LATE.ipynb +++ b/causal-inference-for-the-brave-and-true/09-Non-Compliance-and-LATE.ipynb @@ -162,7 +162,7 @@ "\n", "이제는 잘 알고 있듯이, 이 값은 편향 $E[Y_0|pushAssigned=0] - E[Y_0|pushAssigned=1]$이 0일 때만 $E[Y_1] - E[Y_0]$의 편향되지 않은 추정값입니다. `pushAssigned`는 무작위이므로 편향은 0입니다. 그럼 이걸로 해결된 걸까요? 꼭 그렇지는 않습니다. 이렇게 하면 사실 원래 묻고 싶던 것과는 다른 질문에 답하게 됩니다. 처치 자체의 효과가 아니라 **처치 배정의 인과효과**를 구하게 됩니다. 그렇다면 둘은 다른 것일까요, 아니면 처치 배정의 인과효과를 평균 처치효과(ATE)로 확장해서 볼 수 있을까요? 다시 말해, 처치 배정의 인과효과는 ATE의 편향되지 않은 추정값일까요?\n", "\n", - "결론부터 말하면 아닙니다. 불응 때문에 처치에 배정된 사람들의 결과가 대조군에 배정된 사람들의 결과 쪽으로 끌려갑니다. 불응은 의도치 않게 처치를 뒤집어서, 실험군과 대조군의 결과를 서로 비슷하게 만듭니다. 이것을 변수가 비슷한 것과 혼동하지 마세요. 실험군과 대조군은 변수 면에서는 비슷하길 바랍니다. 그래야 둘을 비교할 수 있으니까요. 바라지 않는 것은, 실제로 처치효과가 있는데도 두 그룹의 결과가 비슷해지는 것입니다.\n", + "결론부터 말하면 아닙니다. 불응 때문에 처치에 배정된 사람들의 결과가 대조군에 배정된 사람들의 결과 쪽으로 끌려갑니다. 불응은 의도치 않게 처치를 뒤집어서, 실험군과 대조군의 결과를 서로 비슷하게 만듭니다. 이것을 변수가 비슷한 것과 혼동하지 마세요. 실험군과 대조군은 변수 면에서는 비슷하길 바랍니다. 그래야 둘을 비교할 수 있기 때문입니다. 바라지 않는 것은, 실제로 처치효과가 있는데도 두 그룹의 결과가 비슷해지는 것입니다.\n", "\n", "이를 이해하기 위해 먼저 항시 참여자가 있다고 해 봅시다. 이들 중 일부는 우연히 대조군에 배정됩니다. 하지만 대조군에 배정된 사람들도 어차피 처치를 받습니다. 그러면 이들은 사실상 대조군에 섞여 든 실험군이 됩니다. 이렇게 섞이기 때문에, 불응이 있으면 인과효과를 찾아내기가 더 어려워집니다.\n", "\n", diff --git a/causal-inference-for-the-brave-and-true/11-Propensity-Score.ipynb b/causal-inference-for-the-brave-and-true/11-Propensity-Score.ipynb index 1c4d321..7e84993 100644 --- a/causal-inference-for-the-brave-and-true/11-Propensity-Score.ipynb +++ b/causal-inference-for-the-brave-and-true/11-Propensity-Score.ipynb @@ -8,7 +8,7 @@ "\n", "## 성장의 심리학\n", "\n", - "긍정심리학은 어떤 행동이 훌륭한 삶으로 이어지는지 연구하는 분야입니다. 자기계발서에 통계학의 학문적 엄밀함을 더한 분야라고 생각하면 됩니다. 긍정심리학의 유명한 발견 중 하나가 **성장 마인드셋**(growth mindset)입니다. 사람은 고정 마인드셋을 가질 수도 있고 성장 마인드셋을 가질 수도 있다는 생각입니다. 고정 마인드셋을 가진 사람은 능력이 타고나거나 어린 시절에 정해진다고 믿습니다. 그러니 지능은 고정되어 있고 평생 바뀌지 않습니다. 지금까지 갖추지 못했다면 앞으로도 얻을 수 없습니다. 이 생각을 따라가면, 자신이 뛰어나지 않은 분야에는 시간을 낭비하지 말아야 한다는 결론에 이릅니다. 어차피 그 분야를 다루는 법은 영영 배우지 못할 테니까요. 반면 성장 마인드셋을 가진 사람은 지능을 키울 수 있다고 믿습니다. 그래서 실패를 끈기가 부족한 탓으로 보지 않고 배움의 한 과정으로 받아들입니다.\n", + "긍정심리학은 어떤 행동이 훌륭한 삶으로 이어지는지 연구하는 분야입니다. 자기계발서에 통계학의 학문적 엄밀함을 더한 분야라고 생각하면 됩니다. 긍정심리학의 유명한 발견 중 하나가 **성장 마인드셋**(growth mindset)입니다. 사람은 고정 마인드셋을 가질 수도 있고 성장 마인드셋을 가질 수도 있다는 생각입니다. 고정 마인드셋을 가진 사람은 능력이 타고나거나 어린 시절에 정해진다고 믿습니다. 그러니 지능은 고정되어 있고 평생 바뀌지 않습니다. 지금까지 갖추지 못했다면 앞으로도 얻을 수 없습니다. 이 생각을 따라가면, 자신이 뛰어나지 않은 분야에는 시간을 낭비하지 말아야 한다는 결론에 이릅니다. 어차피 그 분야를 다루는 법은 영영 배우지 못할 테니 말입니다. 반면 성장 마인드셋을 가진 사람은 지능을 키울 수 있다고 믿습니다. 그래서 실패를 끈기가 부족한 탓으로 보지 않고 배움의 한 과정으로 받아들입니다.\n", "\n", "두 마인드셋 중 어느 쪽이 옳은지 따지려는 것은 아닙니다(아마 진실은 그 중간 어디쯤에 있을 것입니다). 지금 목적에는 그다지 중요하지 않습니다. 중요한 것은 성장 마인드셋을 가진 사람이 삶에서 더 좋은 성과를 내는 경향이 있다는 사실을 심리학자들이 발견했다는 점입니다. 이들은 스스로 세운 목표를 이룰 가능성이 더 높았습니다.\n", "\n", diff --git a/causal-inference-for-the-brave-and-true/12-Doubly-Robust-Estimation.ipynb b/causal-inference-for-the-brave-and-true/12-Doubly-Robust-Estimation.ipynb index 5e44cd0..9da9a79 100644 --- a/causal-inference-for-the-brave-and-true/12-Doubly-Robust-Estimation.ipynb +++ b/causal-inference-for-the-brave-and-true/12-Doubly-Robust-Estimation.ipynb @@ -692,7 +692,7 @@ "source": [ "다시 한번, 조건부 평균 모델만 엉망으로 만들었을 때도 ATE는 조금 달라질 뿐입니다. 이 정도면 이중 강건 추정의 위력이 충분히 와닿았기를 바랍니다. 이런 마법이 일어나는 이유는 인과추론에서 인과 추정값의 편향을 없애는 방법이 두 가지이기 때문입니다. 처치 메커니즘을 모델링하거나 결과 메커니즘을 모델링하는 것입니다. 둘 중 하나만 맞으면 됩니다.\n", "\n", - "다만 한 가지 주의할 점이 있습니다. 실무에서는 둘 중 어느 쪽도 정확하게 모델링하기가 매우 어렵습니다. 실제로는 성향점수 모델도 결과 모델도 100% 맞지 않는 경우가 더 흔합니다. 둘 다 틀리는데, 틀리는 방식이 서로 다릅니다. 이럴 때는 단일 모델을 쓰는 편이 나은지 이중 강건 추정을 쓰는 편이 나은지 아직 명확하게 결론 나지 않았습니다 [\\[1\\]](https://www.stat.cmu.edu/~ryantibs/journalclub/kang_2007.pdf) [\\[2\\]](https://arxiv.org/pdf/0804.2969.pdf) [\\[3\\]](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC2798744/). 저는 그래도 이중 강건 추정을 즐겨 씁니다. 적어도 맞힐 기회가 두 번은 생기니까요.\n", + "다만 한 가지 주의할 점이 있습니다. 실무에서는 둘 중 어느 쪽도 정확하게 모델링하기가 매우 어렵습니다. 실제로는 성향점수 모델도 결과 모델도 100% 맞지 않는 경우가 더 흔합니다. 둘 다 틀리는데, 틀리는 방식이 서로 다릅니다. 이럴 때는 단일 모델을 쓰는 편이 나은지 이중 강건 추정을 쓰는 편이 나은지 아직 명확하게 결론 나지 않았습니다 [\\[1\\]](https://www.stat.cmu.edu/~ryantibs/journalclub/kang_2007.pdf) [\\[2\\]](https://arxiv.org/pdf/0804.2969.pdf) [\\[3\\]](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC2798744/). 저는 그래도 이중 강건 추정을 즐겨 씁니다. 적어도 맞힐 기회가 두 번은 생기기 때문입니다.\n", "\n", "> 옮긴이: 이 추정량은 역확률 가중치(IPW) 추정량에 결과 모델로 만든 보정 항을 덧붙인 형태라서 Augmented IPW(AIPW)라고도 부릅니다.\n", "\n", diff --git a/causal-inference-for-the-brave-and-true/14-Panel-Data-and-Fixed-Effects.ipynb b/causal-inference-for-the-brave-and-true/14-Panel-Data-and-Fixed-Effects.ipynb index a4b5339..cd0f446 100644 --- a/causal-inference-for-the-brave-and-true/14-Panel-Data-and-Fixed-Effects.ipynb +++ b/causal-inference-for-the-brave-and-true/14-Panel-Data-and-Fixed-Effects.ipynb @@ -67,7 +67,7 @@ "Y_d \\perp D\n", "$$\n", " \n", - "즉, 결과가 높은 대상에 처치를 더 많이 주거나(이러면 효과 추정에 상향 편향이 생깁니다) 결과가 낮은 대상에 처치를 더 많이 주지(하향 편향이 생깁니다) 않는다는 뜻입니다. 덜 추상적으로, 예제에 대입해 보겠습니다. 마케팅 매니저가 이미 예금이 아주 많은 도시에만 광고판을 설치하기로 했다고 해 봅시다. 그러면 나중에 광고판을 설치한 도시에서 예금이 더 많이 나왔으니 마케팅 캠페인은 당연히 대성공이었다고 자랑할 수 있습니다. 도덕적인 문제는 일단 제쳐 두더라도, 이것이 독립성 가정을 위반한다는 것은 알 수 있을 겁니다. $Y_0$가 높은 도시에 처치를 주고 있으니까요. 그리고 이 가정을 자연스럽게 확장한 것이 조건부 독립성 가정(conditional independence assumption)이라는 것도 기억해 두세요. 이 가정에서는 잠재적 결과가 처음에는 처치와 독립이 아니어도 괜찮지만, 교란 요인(confounder) $X$로 조건화하고 나면 독립이어야 합니다.\n", + "즉, 결과가 높은 대상에 처치를 더 많이 주거나(이러면 효과 추정에 상향 편향이 생깁니다) 결과가 낮은 대상에 처치를 더 많이 주지(하향 편향이 생깁니다) 않는다는 뜻입니다. 덜 추상적으로, 예제에 대입해 보겠습니다. 마케팅 매니저가 이미 예금이 아주 많은 도시에만 광고판을 설치하기로 했다고 해 봅시다. 그러면 나중에 광고판을 설치한 도시에서 예금이 더 많이 나왔으니 마케팅 캠페인은 당연히 대성공이었다고 자랑할 수 있습니다. 도덕적인 문제는 일단 제쳐 두더라도, 이것이 독립성 가정을 위반한다는 것은 알 수 있을 겁니다. $Y_0$가 높은 도시에 처치를 주고 있기 때문입니다. 그리고 이 가정을 자연스럽게 확장한 것이 조건부 독립성 가정(conditional independence assumption)이라는 것도 기억해 두세요. 이 가정에서는 잠재적 결과가 처음에는 처치와 독립이 아니어도 괜찮지만, 교란 요인(confounder) $X$로 조건화하고 나면 독립이어야 합니다.\n", " \n", "$\n", "Y_d \\perp D | X\n", @@ -377,7 +377,7 @@ "\n", "2. $\\ddot{Y}_{it}$를 $\\ddot{X}_{it}$에 회귀합니다.\n", "\n", - "> 옮긴이: 원문은 바로 위 문단에서 '개인 더미를 다른 변수들에 회귀한다'고 회귀 방향을 반대로 적었습니다. 고정효과 모델에서 더미는 설명변수이므로, 아래 추정 절차와 맞도록 '다른 변수들을 개인 더미에 회귀한다'로 옮겼습니다.\n", + "> 옮긴이: 원문은 바로 위 문단에서 '개인 더미를 다른 변수들에 회귀한다'고 회귀 방향을 반대로 적었습니다. 고정효과모델에서 더미는 설명변수이므로, 아래 추정 절차와 맞도록 '다른 변수들을 개인 더미에 회귀한다'로 옮겼습니다.\n", "\n", "\n", "\n", @@ -868,7 +868,7 @@ "\n", "## 고정효과 시각화하기\n", "\n", - "고정효과모델이 어떻게 작동하는지 직관을 넓히기 위해 잠시 다른 예제로 넘어가 보겠습니다. 대형 테크 기업에서 일하면서 광고판 마케팅 캠페인이 인앱 구매에 미치는 효과를 추정하려 한다고 해 봅시다. 과거 데이터를 보니 마케팅 부서는 구매 수준이 낮은 도시일수록 광고판 설치에 돈을 더 많이 쓰는 경향이 있습니다. 말이 되죠? 매출이 치솟고 있다면 굳이 광고를 많이 할 필요가 없을 테니까요. 이 데이터로 회귀 모델을 돌리면 마케팅 비용이 클수록 인앱 구매가 줄어드는 것처럼 보입니다. 하지만 이는 마케팅 투자가 소비가 적은 지역에 쏠려 있기 때문일 뿐입니다." + "고정효과모델이 어떻게 작동하는지 직관을 넓히기 위해 잠시 다른 예제로 넘어가 보겠습니다. 대형 테크 기업에서 일하면서 광고판 마케팅 캠페인이 인앱 구매에 미치는 효과를 추정하려 한다고 해 봅시다. 과거 데이터를 보니 마케팅 부서는 구매 수준이 낮은 도시일수록 광고판 설치에 돈을 더 많이 쓰는 경향이 있습니다. 말이 되죠? 매출이 치솟고 있다면 굳이 광고를 많이 할 필요가 없을 테니 말입니다. 이 데이터로 회귀 모델을 돌리면 마케팅 비용이 클수록 인앱 구매가 줄어드는 것처럼 보입니다. 하지만 이는 마케팅 투자가 소비가 적은 지역에 쏠려 있기 때문일 뿐입니다." ] }, { diff --git a/causal-inference-for-the-brave-and-true/17-Predictive-Models-101.ipynb b/causal-inference-for-the-brave-and-true/17-Predictive-Models-101.ipynb index 0e90422..312039b 100644 --- a/causal-inference-for-the-brave-and-true/17-Predictive-Models-101.ipynb +++ b/causal-inference-for-the-brave-and-true/17-Predictive-Models-101.ipynb @@ -1248,7 +1248,7 @@ " \n", "## 참고 자료\n", " \n", - "여기 쓴 내용은 대부분 제 머릿속에서 나온 것입니다. 경험으로 배운 것들입니다. 그래서 직접 소개할 참고 문헌이 없습니다. 이는 좋은 과학이라면 보통 거치는 학계의 엄밀한 검증을 이 내용이 통과하지 **않았다**는 뜻이기도 합니다. 대신 실무에서 통하는 것들을 이야기하면서도 왜 그런지 설명하는 데는 시간을 많이 들이지 않았다는 점을 눈여겨보세요. 말하자면 길거리 과학인 셈입니다. 하지만 이 내용을 공개해 누구나 검토할 수 있게 해 두었으니, 터무니없는 내용을 발견하면 주저하지 말고 이슈를 열어 주세요. 최선을 다해 답하겠습니다.\n", + "여기 쓴 내용은 대부분 제 머릿속에서 나온 것으로, 경험으로 배운 것들입니다. 그래서 직접 소개할 참고 문헌이 없고, 좋은 과학이라면 보통 거치는 학계의 엄밀한 검증도 통과하지 **않았습니다**. 실무에서 통하는 것들을 이야기하면서도 왜 그런지는 길게 설명하지 않았다는 점을 눈여겨보세요. 말하자면 길거리 과학인 셈입니다. 대신 누구나 검토할 수 있게 공개해 두었으니, 터무니없는 내용을 발견하면 주저하지 말고 이슈를 열어 주세요. 최선을 다해 답하겠습니다.\n", " \n", "마지막으로, 머신러닝을 포괄적이고 자세하게 소개해 주기를 기대한 분들에게는 너무 빨리 지나갔을지도 모르겠습니다. 솔직히 말하면, 제가 정말 가치를 만들어 낼 수 있는 분야는 머신러닝이 아니라 인과추론을 가르치는 일이라고 생각합니다. 머신러닝에 관해서는 제가 꿈꿀 수 있는 것보다 훨씬 좋은 온라인 자료가 넘쳐납니다. 고전으로는 [Andrew Ng의 머신러닝 강좌](https://www.coursera.org/learn/machine-learning)가 있으니, 머신러닝이 처음이라면 꼭 한번 살펴보기를 권합니다.\n", " \n", diff --git a/causal-inference-for-the-brave-and-true/18-Heterogeneous-Treatment-Effects-and-Personalization.ipynb b/causal-inference-for-the-brave-and-true/18-Heterogeneous-Treatment-Effects-and-Personalization.ipynb index b8bdb5f..b703df2 100644 --- a/causal-inference-for-the-brave-and-true/18-Heterogeneous-Treatment-Effects-and-Personalization.ipynb +++ b/causal-inference-for-the-brave-and-true/18-Heterogeneous-Treatment-Effects-and-Personalization.ipynb @@ -117,7 +117,7 @@ "\\frac{\\delta y_i}{\\delta t_i} = \\beta_1 \n", "$$\n", " \n", - "위 모델을 추정하면 $\\hat{\\beta_1}$을 얻을 수 있으니, 과감하게 **민감도를 관측할 수 없어도 예측할 수는 있다**고 말할 수도 있겠습니다. 다만 위의 경우는 꽤 단순한 예측입니다. 모든 대상에게 같은 상수 $\\hat{\\beta_1}$을 예측하니까요. 그것만으로도 의미는 있지만 아직 원하는 것은 아닙니다. 이건 CATE가 아니라 ATE입니다. 모든 대상이 똑같은 민감도 예측값을 받으므로, 처치에 반응하는 정도에 따라 개체를 묶는 작업에는 도움이 되지 않습니다. 하지만 다음처럼 간단히 바꿔 볼 수 있습니다.\n", + "위 모델을 추정하면 $\\hat{\\beta_1}$을 얻을 수 있으니, 과감하게 **민감도를 관측할 수 없어도 예측할 수는 있다**고 말할 수도 있겠습니다. 다만 위의 경우는 꽤 단순한 예측입니다. 모든 대상에게 같은 상수 $\\hat{\\beta_1}$을 예측하기 때문입니다. 그것만으로도 의미는 있지만 아직 원하는 것은 아닙니다. 이건 CATE가 아니라 ATE입니다. 모든 대상이 똑같은 민감도 예측값을 받으므로, 처치에 반응하는 정도에 따라 개체를 묶는 작업에는 도움이 되지 않습니다. 하지만 다음처럼 간단히 바꿔 볼 수 있습니다.\n", " \n", "$$\n", "y_i = \\beta_0 + \\beta_1 t_i + \\beta_2 X_i + \\beta_3 t_i X_i + e_i\n", @@ -621,7 +621,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "$m1$으로 민감도를 예측하는 건 그다지 재미가 없습니다. 보다시피 모든 날에 똑같은 값을 예측합니다. 이 모델에는 상호작용 항이 없으니까요. 하지만 $m3$로 예측하면 날마다 다른 민감도 예측값이 나옵니다. 이제는 민감도, 즉 처치효과가 그날그날의 특성에 따라 달라지기 때문입니다." + "$m1$으로 민감도를 예측하는 건 그다지 재미가 없습니다. 보다시피 모든 날에 똑같은 값을 예측합니다. 이 모델에는 상호작용 항이 없기 때문입니다. 하지만 $m3$로 예측하면 날마다 다른 민감도 예측값이 나옵니다. 이제는 민감도, 즉 처치효과가 그날그날의 특성에 따라 달라지기 때문입니다." ] }, { @@ -1014,7 +1014,7 @@ " \n", "## 참고 자료 \n", " \n", - "여기 쓴 내용은 대부분 제 머릿속에서 나온 것입니다. 경험으로 배운 것들입니다. 그래서 직접 소개할 참고 문헌이 없습니다. 이는 좋은 과학이라면 보통 거치는 학계의 엄밀한 검증을 이 내용이 통과하지 **않았다**는 뜻이기도 합니다. 대신 실무에서 통하는 것들을 이야기하면서도 왜 그런지 설명하는 데는 시간을 많이 들이지 않았다는 점을 눈여겨보세요. 말하자면 길거리 과학인 셈입니다. 하지만 이 내용을 공개해 누구나 검토할 수 있게 해 두었으니, 터무니없는 내용을 발견하면 주저하지 말고 이슈를 열어 주세요. 최선을 다해 답하겠습니다.\n", + "여기 쓴 내용은 대부분 제 머릿속에서 나온 것으로, 경험으로 배운 것들입니다. 그래서 직접 소개할 참고 문헌이 없고, 좋은 과학이라면 보통 거치는 학계의 엄밀한 검증도 통과하지 **않았습니다**. 실무에서 통하는 것들을 이야기하면서도 왜 그런지는 길게 설명하지 않았다는 점을 눈여겨보세요. 말하자면 길거리 과학인 셈입니다. 대신 누구나 검토할 수 있게 공개해 두었으니, 터무니없는 내용을 발견하면 주저하지 말고 이슈를 열어 주세요. 최선을 다해 답하겠습니다.\n", " \n", "## 기여하기\n", "\n", diff --git a/causal-inference-for-the-brave-and-true/19-Evaluating-Causal-Models.ipynb b/causal-inference-for-the-brave-and-true/19-Evaluating-Causal-Models.ipynb index bdcb201..2a10610 100644 --- a/causal-inference-for-the-brave-and-true/19-Evaluating-Causal-Models.ipynb +++ b/causal-inference-for-the-brave-and-true/19-Evaluating-Causal-Models.ipynb @@ -537,7 +537,7 @@ "source": [ "먼저 무작위 모델(`rand_m`)을 봅시다. 모든 구간에서 추정된 민감도가 거의 같습니다. 그래프만 봐도 이 모델은 가격 민감도가 높은 날과 낮은 날을 구분하지 못하니 개인화에 별 도움이 안 되리라는 걸 알 수 있습니다. 다음은 예측 모델 `pred_m`입니다. 이 모델은 의외로 꽤 유망합니다! 민감도가 높은 그룹과 낮은 그룹을 만들어 내는데, 바로 지금 필요한 것입니다.\n", "\n", - "마지막으로 인과 모델 `sensitivity_m`은 조금 이상해 보입니다. 이 모델은 민감도가 아주 낮은 그룹을 찾아내는데, 여기서 낮다는 건 사실 가격 민감도가 높다는 뜻입니다(가격을 올리면 판매량이 크게 줄어듭니다). 가격 민감도가 높은 날을 찾아내는 건 아주 유용합니다. 언제가 그런 날인지 알면 그날만큼은 가격을 계속 올리지 않도록 조심할 수 있으니까요. 인과 모델은 덜 민감한 영역도 일부 찾아내므로 민감도가 높은 경우와 낮은 경우를 제대로 구분합니다. 하지만 정렬 순서는 예측 모델만큼 좋지 않습니다.\n", + "마지막으로 인과 모델 `sensitivity_m`은 조금 이상해 보입니다. 이 모델은 민감도가 아주 낮은 그룹을 찾아내는데, 여기서 낮다는 건 사실 가격 민감도가 높다는 뜻입니다(가격을 올리면 판매량이 크게 줄어듭니다). 가격 민감도가 높은 날을 찾아내는 건 아주 유용합니다. 언제가 그런 날인지 알면 그날만큼은 가격을 계속 올리지 않도록 조심할 수 있기 때문입니다. 인과 모델은 덜 민감한 영역도 일부 찾아내므로 민감도가 높은 경우와 낮은 경우를 제대로 구분합니다. 하지만 정렬 순서는 예측 모델만큼 좋지 않습니다.\n", "\n", "그렇다면 어떻게 결정해야 할까요? 예측 모델과 인과 모델 중 어느 쪽이 더 쓸모 있을까요? 예측 모델은 정렬이 더 낫지만, 인과 모델은 극단을 더 잘 찾아냅니다. 구간별 민감도 그래프는 첫 점검용으로는 좋지만, 어느 모델이 더 나은지 정확히 답해 주지는 못합니다. 좀 더 정교한 방법이 필요합니다.\n", "\n", @@ -762,7 +762,7 @@ "source": [ "이제 인과 모델(`sensitivity_m`)이 나머지 두 모델보다 훨씬 낫다는 게 분명히 드러납니다. `rand_m`이나 `pred_m`보다 무작위 직선에서 훨씬 크게 벗어납니다. 또 실제 무작위 모델이 이론적 무작위 모델을 아주 가깝게 따라간다는 점에도 주목하세요. 둘의 차이는 아마 무작위 잡음에 불과할 것입니다.\n", "\n", - "이렇게 해서 인과 모델을 평가하는 아주 멋진 아이디어 몇 가지를 살펴봤습니다. 이것만으로도 대단한 성과입니다. 비교할 참값이 없는데도 모델이 민감도를 얼마나 잘 정렬하는지 평가해 냈으니까요. 이제 빠진 것은 딱 하나, 이 측정값에 신뢰구간(confidence interval)을 붙이는 일입니다. 우리가 야만인은 아니지 않습니까?\n", + "이렇게 해서 인과 모델을 평가하는 아주 멋진 아이디어 몇 가지를 살펴봤습니다. 이것만으로도 대단한 성과입니다. 비교할 참값이 없는데도 모델이 민감도를 얼마나 잘 정렬하는지 평가해 냈기 때문입니다. 이제 빠진 것은 딱 하나, 이 측정값에 신뢰구간(confidence interval)을 붙이는 일입니다. 우리가 야만인은 아니지 않습니까?\n", "\n", "![img](./data/img/evaluate-causal-models/uncivilised.png)\n", "\n", @@ -907,7 +907,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "인과 모델로 그려 보면 다음과 같습니다. 이번에는 곡선 초반의 표본 크기가 더 작은데도 신뢰구간이 좁게 시작한다는 점에 주목하세요. 정규화 계수 $\\frac{k}{N}$이 ATE 추정값을 축소하면서 그 신뢰구간도 함께 축소하기 때문입니다. 이 곡선은 모델을 비교하는 데 쓰는 것이므로 문제가 되지 않습니다. 평가하는 모든 모델에 이 축소 계수가 똑같이 적용되니까요." + "인과 모델로 그려 보면 다음과 같습니다. 이번에는 곡선 초반의 표본 크기가 더 작은데도 신뢰구간이 좁게 시작한다는 점에 주목하세요. 정규화 계수 $\\frac{k}{N}$이 ATE 추정값을 축소하면서 그 신뢰구간도 함께 축소하기 때문입니다. 이 곡선은 모델을 비교하는 데 쓰는 것이므로 문제가 되지 않습니다. 평가하는 모든 모델에 이 축소 계수가 똑같이 적용되기 때문입니다." ] }, { @@ -967,7 +967,7 @@ "\n", "## 참고 자료\n", "\n", - "여기 쓴 내용은 대부분 제 머릿속에서 나온 것입니다. 경험으로 배운 것들입니다. 즉, 좋은 과학이라면 보통 거치는 학계의 엄밀한 검증을 통과하지 **않았다**는 뜻입니다. 대신 실무에서 통하는 것들을 이야기하면서도 왜 그런지 설명하는 데는 시간을 많이 들이지 않았다는 점을 눈여겨보세요. 말하자면 길거리 과학인 셈입니다. 하지만 이 내용을 공개해 누구나 검토할 수 있게 해 두었으니, 터무니없는 내용을 발견하면 주저하지 말고 이슈를 열어 주세요. 최선을 다해 답하겠습니다.\n", + "여기 쓴 내용은 대부분 제 머릿속에서 나온 것으로, 경험으로 배운 것들입니다. 즉, 좋은 과학이라면 보통 거치는 학계의 엄밀한 검증을 통과하지 **않았습니다**. 실무에서 통하는 것들을 이야기하면서도 왜 그런지는 길게 설명하지 않았다는 점을 눈여겨보세요. 말하자면 길거리 과학인 셈입니다. 대신 누구나 검토할 수 있게 공개해 두었으니, 터무니없는 내용을 발견하면 주저하지 말고 이슈를 열어 주세요. 최선을 다해 답하겠습니다.\n", "\n", "이 장의 아이디어는 Pierre Gutierrez와 Jean-Yves G'erardy의 논문 *Causal Inference and Uplift Modeling A review of the literature*에서 얻었습니다. 저자들은 Qini 곡선이라는 개념을 설명합니다. 찾아보면 업리프트 모델링(uplift modeling)에서 쓰는 기법이라는 걸 알 수 있는데, 업리프트 모델링은 처치가 이진일 때의 인과추론이라고 생각하면 됩니다. 여기서는 Qini 곡선의 아이디어를 가져와 연속형 처치로 일반화했습니다. 여기서 소개한 방법은 연속형과 이진형 모두에 통한다고 생각합니다. 다만 다른 곳에서 이런 방법을 본 적은 없으니 그 점은 염두에 두세요.\n", "\n", diff --git a/causal-inference-for-the-brave-and-true/20-Plug-and-Play-Estimators.ipynb b/causal-inference-for-the-brave-and-true/20-Plug-and-Play-Estimators.ipynb index 6e3d7c8..f62e428 100644 --- a/causal-inference-for-the-brave-and-true/20-Plug-and-Play-Estimators.ipynb +++ b/causal-inference-for-the-brave-and-true/20-Plug-and-Play-Estimators.ipynb @@ -97,7 +97,7 @@ "\n", "즉, 처치를 받은 분석단위라면 결과에 2를 곱하고, 처치를 받지 않았다면 -2를 곱합니다. 예를 들어 어떤 고객이 이메일을 받고 2,000헤알(BRL)을 투자했다면 변환된 목표는 4,000이 됩니다. 하지만 이메일을 받지 않았다면 -4,000이 됩니다.\n", "\n", - "이메일의 효과가 음수일 수도 있다고 말하는 셈이니 무척 이상해 보이겠지만, 조금만 참고 따라와 주세요. 수학을 조금만 해 보면 이 변환된 목표가 평균적으로, 즉 기댓값으로 보면 처치효과와 같다는 것을 알 수 있습니다. 놀랍다는 말로도 부족합니다. 조금 엉뚱한 이 변환을 적용하기만 하면 관측할 수조차 없는 값을 추정할 수 있다는 말이니까요.\n", + "이메일의 효과가 음수일 수도 있다고 말하는 셈이니 무척 이상해 보이겠지만, 조금만 참고 따라와 주세요. 수학을 조금만 해 보면 이 변환된 목표가 평균적으로, 즉 기댓값으로 보면 처치효과와 같다는 것을 알 수 있습니다. 놀랍다는 말로도 부족합니다. 조금 엉뚱한 이 변환을 적용하기만 하면 관측할 수조차 없는 값을 추정할 수 있다는 뜻입니다.\n", "\n", "이를 이해하려면 수학이 조금 필요합니다. 무작위 배정 덕분에 $T \\perp Y(0), Y(1)$이 성립합니다. 우리의 오랜 친구인 비교란성(unconfoundedness)입니다. 그리고 독립성에서 바로 $E[T, Y(t)]=E[T]*E[Y(t)]$가 따라 나옵니다.\n", "\n", @@ -975,7 +975,7 @@ "\n", "## 참고 자료\n", "\n", - "여기 쓴 내용은 대부분 제 머릿속에서 나온 것입니다. 경험으로 배운 것들입니다. 즉, 좋은 과학이라면 보통 거치는 학계의 엄밀한 검증을 통과하지 **않았다**는 뜻입니다. 대신 실무에서 통하는 것들을 이야기하면서도 왜 그런지 설명하는 데는 시간을 많이 들이지 않았다는 점을 눈여겨보세요. 말하자면 길거리 과학인 셈입니다. 하지만 이 내용을 공개해 누구나 검토할 수 있게 해 두었으니, 터무니없는 내용을 발견하면 주저하지 말고 이슈를 열어 주세요. 최선을 다해 답하겠습니다.\n", + "여기 쓴 내용은 대부분 제 머릿속에서 나온 것으로, 경험으로 배운 것들입니다. 즉, 좋은 과학이라면 보통 거치는 학계의 엄밀한 검증을 통과하지 **않았습니다**. 실무에서 통하는 것들을 이야기하면서도 왜 그런지는 길게 설명하지 않았다는 점을 눈여겨보세요. 말하자면 길거리 과학인 셈입니다. 대신 누구나 검토할 수 있게 공개해 두었으니, 터무니없는 내용을 발견하면 주저하지 말고 이슈를 열어 주세요. 최선을 다해 답하겠습니다.\n", "\n", "이 장의 대부분은 Susan Athey와 Guido W. Imbens의 논문 *Machine Learning Methods for Estimating Heterogeneous Causal Effects*에서 가져왔습니다. 목표 변환에 관한 내용 일부는 Pierre Gutierrez와 Jean-Yves Gérardy의 논문 *Causal Inference and Uplift Modeling: A review of the literature*에서도 찾을 수 있습니다. 두 논문 모두 이진 처치만 다룬다는 점에 유의하세요. F 러너를 언급하는, CATE 추정용 인과 모델에 관한 또 다른 리뷰로는 Künzel et al.(2019)의 *Meta-learners for Estimating Heterogeneous Treatment Effects using Machine Learning*이 있습니다.\n", "\n", diff --git a/causal-inference-for-the-brave-and-true/21-Meta-Learners.ipynb b/causal-inference-for-the-brave-and-true/21-Meta-Learners.ipynb index 89fad21..4bd6b9f 100644 --- a/causal-inference-for-the-brave-and-true/21-Meta-Learners.ipynb +++ b/causal-inference-for-the-brave-and-true/21-Meta-Learners.ipynb @@ -651,7 +651,7 @@ "\n", "## 참고 자료\n", "\n", - "여기 쓴 내용은 대부분 제 머릿속에서 나온 것입니다. 경험으로 배운 것들입니다. 즉, 좋은 과학이라면 보통 거치는 학계의 엄밀한 검증을 통과하지 **않았다**는 뜻입니다. 대신 실무에서 통하는 것들을 이야기하면서도 왜 그런지 설명하는 데는 시간을 많이 들이지 않았다는 점을 눈여겨보세요. 말하자면 길거리 과학인 셈입니다. 하지만 이 내용을 공개해 누구나 검토할 수 있게 해 두었으니, 터무니없는 내용을 발견하면 주저하지 말고 이슈를 열어 주세요. 최선을 다해 답하겠습니다.\n", + "여기 쓴 내용은 대부분 제 머릿속에서 나온 것으로, 경험으로 배운 것들입니다. 즉, 좋은 과학이라면 보통 거치는 학계의 엄밀한 검증을 통과하지 **않았습니다**. 실무에서 통하는 것들을 이야기하면서도 왜 그런지는 길게 설명하지 않았다는 점을 눈여겨보세요. 말하자면 길거리 과학인 셈입니다. 대신 누구나 검토할 수 있게 공개해 두었으니, 터무니없는 내용을 발견하면 주저하지 말고 이슈를 열어 주세요. 최선을 다해 답하겠습니다.\n", "\n", "이 장을 쓰면서 Uber의 *causalml* 라이브러리와 메타러너에 관한 문서를 참고했습니다. 이미지와 개념은 Kunzela 등(2019)의 *Metalearners for estimating heterogeneous treatment effects using machine learning*에서 많이 가져왔습니다. 마지막으로 S 러너가 0 쪽으로 편향된다는 논의는 Chernozhukov 등(2017)의 *Double/Debiased Machine Learning for Treatment and Causal Parameters*에서 가져왔습니다.\n", "\n", diff --git a/causal-inference-for-the-brave-and-true/22-Debiased-Orthogonal-Machine-Learning.ipynb b/causal-inference-for-the-brave-and-true/22-Debiased-Orthogonal-Machine-Learning.ipynb index 85304f7..f28380e 100644 --- a/causal-inference-for-the-brave-and-true/22-Debiased-Orthogonal-Machine-Learning.ipynb +++ b/causal-inference-for-the-brave-and-true/22-Debiased-Orthogonal-Machine-Learning.ipynb @@ -580,7 +580,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "보다시피 잔차화한, 즉 직교화한 판매량과 가격을 쓰면 가격과 판매량의 관계가 음이라고 매우 확신할 수 있습니다. 충분히 납득이 가는 결과입니다. 가격을 올리면 아이스크림 수요는 줄어야 하니까요.\n", + "보다시피 잔차화한, 즉 직교화한 판매량과 가격을 쓰면 가격과 판매량의 관계가 음이라고 매우 확신할 수 있습니다. 충분히 납득이 가는 결과입니다. 가격을 올리면 아이스크림 수요는 줄어야 하기 때문입니다.\n", " \n", "하지만 잔차화하지 않은 원래 데이터에서 가격과 판매량의 관계를 보면, 편향 때문에 양의 관계가 나타납니다. 판매량이 많을 것을 예상하고 가격을 올리기 때문입니다." ] @@ -1009,7 +1009,7 @@ "\\tilde{Y}_i = \\tau(X_i) \\tilde{T}_i + e_i\n", "$\n", " \n", - "말로 풀면, 잔차화한 결과는 잔차화한 처치에 조건부 처치효과를 곱한 값과 같다는 뜻입니다. 즉, **처치가 결과에 선형으로 영향을 준다**는 것입니다. 여기에는 비선형성이 없습니다. 위 모델에 따르면 처치를 1에서 10으로 올리든 100에서 110으로 올리든 결과는 고정된 양 $\\tau(X_i) $만큼 늘어납니다. 단순한 곱셈이니까요.\n", + "말로 풀면, 잔차화한 결과는 잔차화한 처치에 조건부 처치효과를 곱한 값과 같다는 뜻입니다. 즉, **처치가 결과에 선형으로 영향을 준다**는 것입니다. 여기에는 비선형성이 없습니다. 위 모델에 따르면 처치를 1에서 10으로 올리든 100에서 110으로 올리든 결과는 고정된 양 $\\tau(X_i) $만큼 늘어납니다. 단순한 곱셈일 뿐입니다.\n", " \n", "그럼 비모수 모델로는 처치효과의 비선형성을 잡아낼 수 없다는 뜻일까요? 이번에도 꼭 그렇지는 않습니다... 실제로는 이중 머신러닝이 **비선형 CATE의 국소 선형 근사를 찾습니다**. 다시 말해 해당 처치 수준에서, 또는 그 근처에서 처치에 대한 결과의 도함수를 찾습니다. 이는 처치 지점에서 결과 함수에 접하는 직선의 기울기를 찾는 것과 같습니다.\n", " \n", @@ -1909,7 +1909,7 @@ " \n", "## 참고 자료\n", " \n", - "여기 쓴 내용은 대부분 제 머릿속에서 나온 것으로, 경험을 통해 배운 것들입니다. 즉, 좋은 과학이 보통 거치는 학계의 검증을 통과하지 **않았습니다**. 실제로 잘 통하는 것들을 이야기하면서도 왜 그런지는 그다지 설명하지 않았다는 점을 눈치챘을 겁니다. 말하자면 길거리 과학인 셈입니다. 그래도 이 글을 공개해 누구나 검토할 수 있게 해 두었으니, 터무니없는 내용을 발견하면 언제든 이슈를 열어 주세요. 최선을 다해 답하겠습니다.\n", + "여기 쓴 내용은 대부분 제 머릿속에서 나온 것으로, 경험으로 배운 것들입니다. 즉, 좋은 과학이라면 보통 거치는 학계의 엄밀한 검증을 통과하지 **않았습니다**. 실무에서 통하는 것들을 이야기하면서도 왜 그런지는 길게 설명하지 않았다는 점을 눈여겨보세요. 말하자면 길거리 과학인 셈입니다. 대신 누구나 검토할 수 있게 공개해 두었으니, 터무니없는 내용을 발견하면 주저하지 말고 이슈를 열어 주세요. 최선을 다해 답하겠습니다.\n", " \n", "이 장을 쓰면서 Chernozhukov et al (2016), *Double/Debiased Machine Learning for Treatment and Causal Parameters*, D. Foster and V. Syrgkanis (2019) *Orthogonal Statistical Learning*, 그리고 *econml* 라이브러리 문서를 참고했습니다. 직교화 머신러닝은 요즘 큰 관심을 받고 있어서 이 밖에도 참고 자료가 많습니다. 몇 가지만 꼽자면 Nie and Wager (Draft, 2020)는 R 손실을 잘 설명하고, Athey et al (2019)는 인과 의사결정 나무의 맥락에서 이를 다루며, Chernozhukov가 이 주제를 더 발전시킨 후속 논문도 여럿 있습니다.\n", " \n", diff --git a/causal-inference-for-the-brave-and-true/24-The-Diff-in-Diff-Saga.ipynb b/causal-inference-for-the-brave-and-true/24-The-Diff-in-Diff-Saga.ipynb index ee2c07a..d6a362f 100644 --- a/causal-inference-for-the-brave-and-true/24-The-Diff-in-Diff-Saga.ipynb +++ b/causal-inference-for-the-brave-and-true/24-The-Diff-in-Diff-Saga.ipynb @@ -380,7 +380,7 @@ "source": [ "## 2) 죽음: 효과 이질성 앞에서 무너지다\n", "\n", - "방금 본 것처럼 DID와 TWFE에는 장점이 있습니다. 시간별 변동과 대상별 변동을 모두 반영하면서 반사실을 꽤 잘 추정합니다. 그래서 강력한 인과추론 기법입니다. 하지만 이게 전부였다면 이 장은 필요 없었을 것입니다. 이 책의 1부에서 충분히 다뤘으니까요. 그런데 최근 많은 학자가 2×2 DID를 TWFE로 여러 기간에 확장하는 일이 처음 생각만큼 간단하지 않다는 것을 알아챘습니다. 실제로 **흔히 쓰는 형태의 TWFE는 현실의 많은 응용에서 편향된 것으로 드러났습니다**. 이 일로 이 기법에 기댄 경제학 연구 여러 편이 줄줄이 재검토되었습니다. 이 모든 것을 이해하려면 밑에 깔린 가정부터 짚는 것이 가장 좋습니다.\n", + "방금 본 것처럼 DID와 TWFE에는 장점이 있습니다. 시간별 변동과 대상별 변동을 모두 반영하면서 반사실을 꽤 잘 추정합니다. 그래서 강력한 인과추론 기법입니다. 하지만 이게 전부였다면 이 장은 필요 없었을 것입니다. 이 책의 1부에서 충분히 다뤘기 때문입니다. 그런데 최근 많은 학자가 2×2 DID를 TWFE로 여러 기간에 확장하는 일이 처음 생각만큼 간단하지 않다는 것을 알아챘습니다. 실제로 **흔히 쓰는 형태의 TWFE는 현실의 많은 응용에서 편향된 것으로 드러났습니다**. 이 일로 이 기법에 기댄 경제학 연구 여러 편이 줄줄이 재검토되었습니다. 이 모든 것을 이해하려면 밑에 깔린 가정부터 짚는 것이 가장 좋습니다.\n", "\n", "![img](data/img/did-saga/death.png)\n", "\n", @@ -1100,7 +1100,7 @@ "source": [ "![img](data/img/did-saga/awful.jpeg)\n", "\n", - "그래도 이 반사실은 조금 나아졌습니다. 실제로 관측된 결과 $Y_1$보다 위에 있으니까요. 그 덕분에 적어도 효과를 제대로 음수로 추정하기는 합니다. 이를 확인하기 위해 각 더미에 해당하는 매개변수를 뽑은 다음, 상대 일수 -1(기준점)에 해당하는 매개변수를 빼서 추정된 효과를 그려 보겠습니다." + "그래도 이 반사실은 조금 나아졌습니다. 실제로 관측된 결과 $Y_1$보다 위에 있기 때문입니다. 그 덕분에 적어도 효과를 제대로 음수로 추정하기는 합니다. 이를 확인하기 위해 각 더미에 해당하는 매개변수를 뽑은 다음, 상대 일수 -1(기준점)에 해당하는 매개변수를 빼서 추정된 효과를 그려 보겠습니다." ] }, { diff --git a/causal-inference-for-the-brave-and-true/Debiasing-with-Orthogonalization.ipynb b/causal-inference-for-the-brave-and-true/Debiasing-with-Orthogonalization.ipynb index b9460a1..3af18d8 100644 --- a/causal-inference-for-the-brave-and-true/Debiasing-with-Orthogonalization.ipynb +++ b/causal-inference-for-the-brave-and-true/Debiasing-with-Orthogonalization.ipynb @@ -908,7 +908,7 @@ "\n", "## 참고 자료\n", "\n", - "여기에 쓴 내용은 대부분 제 머릿속에서 나왔습니다. 경험으로 익힌 것들입니다. 그러니 좋은 과학이 보통 거치는 학계의 엄격한 검증을 통과하지 **않았습니다**. 실무에서 잘 통하는 방법을 이야기하면서도 왜 그런지 설명하는 데는 시간을 많이 들이지 않았다는 점을 눈치챘을 겁니다. 말하자면 길거리 과학인 셈입니다. 그래도 이 글을 공개해 누구나 검토할 수 있게 했으니, 터무니없는 내용을 발견하면 언제든 이슈를 열어 주세요. 최선을 다해 답하겠습니다.\n", + "여기 쓴 내용은 대부분 제 머릿속에서 나온 것으로, 경험으로 배운 것들입니다. 즉, 좋은 과학이라면 보통 거치는 학계의 엄밀한 검증을 통과하지 **않았습니다**. 실무에서 통하는 것들을 이야기하면서도 왜 그런지는 길게 설명하지 않았다는 점을 눈여겨보세요. 말하자면 길거리 과학인 셈입니다. 대신 누구나 검토할 수 있게 공개해 두었으니, 터무니없는 내용을 발견하면 주저하지 말고 이슈를 열어 주세요. 최선을 다해 답하겠습니다.\n", "\n", "이 장은 Victor Chernozhukov 등의 2016년 논문 Double/Debiased Machine Learning for Treatment and Causal Parameters를 바탕으로 했습니다. Frisch, Ragnar와 Waugh, Frederick V.의 1933년 원 논문 Partial Time Regressions as Compared with Individual Trends도 참고할 수 있습니다.\n", "\n", diff --git a/causal-inference-for-the-brave-and-true/Debiasing-with-Propensity-Score.ipynb b/causal-inference-for-the-brave-and-true/Debiasing-with-Propensity-Score.ipynb index a928cd4..99e6d66 100644 --- a/causal-inference-for-the-brave-and-true/Debiasing-with-Propensity-Score.ipynb +++ b/causal-inference-for-the-brave-and-true/Debiasing-with-Propensity-Score.ipynb @@ -327,7 +327,7 @@ " \n", "![img](./data/img/debias-ps/again.png)\n", " \n", - "성향점수를 이용한 편향 제거의 아이디어를 다시 정리해 보겠습니다(성향점수 장에서 이미 본 내용입니다). 이 아이디어에서 눈여겨볼 대상은 바로 위와 같은 고객들입니다. 이들은 `em1`을 받은 고객과 아주 비슷합니다. 어쨌든 이메일을 받을 확률이 높았으니까요. 그런데도 이메일을 받지 않았습니다. 그래서 반사실적 결과(counterfactual outcome) $Y_0|em1=1$을 추정하는 데 안성맞춤인 후보입니다.\n", + "성향점수를 이용한 편향 제거의 아이디어를 다시 정리해 보겠습니다(성향점수 장에서 이미 본 내용입니다). 이 아이디어에서 눈여겨볼 대상은 바로 위와 같은 고객들입니다. 이들은 `em1`을 받은 고객과 아주 비슷합니다. 어쨌든 이메일을 받을 확률이 높았기 때문입니다. 그런데도 이메일을 받지 않았습니다. 그래서 반사실적 결과(counterfactual outcome) $Y_0|em1=1$을 추정하는 데 안성맞춤인 후보입니다.\n", " \n", "실험군(treated)처럼 보이지만 처치를 받지 않은 고객은 직관적으로 중요하게 다루고 싶습니다. 성향점수 편향 제거는 이 중요도를 수치로 반영합니다. 마찬가지로 대조군(untreated)처럼 보이지만 처치를 받은 고객에게도 높은 중요도를 줍니다. 아이디어는 아주 간단합니다. **각 대상에, 그 대상이 실제로 받은 처치 확률의 역수를 가중치로 주면 됩니다**. 처치를 받은 대상에는 $1/P(treatment=1)$로, 처치를 받지 않은 대상에는 $1/P(treatment=0)$, 즉 $1/P(control)$로 가중치를 줍니다. 처치가 이진형이라면 간단히 다음과 같습니다.\n", " \n", @@ -1506,7 +1506,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "`em3`은 40세보다 나이가 많은 고객에게만 보낸 것으로 보입니다. 아주 큰 문제입니다. 대조군에는 젊은 사람이 있는데 실험군에는 없다면, 반사실 $Y_0|T=1, age<40$을 추정할 방법이 없습니다. 젊은 고객이 이 이메일에 어떻게 반응할지 전혀 알 수 없으니까요.\n", + "`em3`은 40세보다 나이가 많은 고객에게만 보낸 것으로 보입니다. 아주 큰 문제입니다. 대조군에는 젊은 사람이 있는데 실험군에는 없다면, 반사실 $Y_0|T=1, age<40$을 추정할 방법이 없습니다. 젊은 고객이 이 이메일에 어떻게 반응할지 전혀 알 수 없기 때문입니다.\n", " \n", "어떻게 되는지 보여 드리기 위해 일단 성향점수 편향 제거를 해 보겠습니다." ] @@ -1683,7 +1683,7 @@ " \n", "## 참고 자료\n", " \n", - "여기에 쓴 내용은 대부분 제 머릿속에서 나왔습니다. 경험으로 익힌 것들입니다. 그러니 좋은 과학이 보통 거치는 학계의 엄격한 검증을 통과하지 **않았습니다**. 실무에서 잘 통하는 방법을 이야기하면서도 왜 그런지 설명하는 데는 시간을 많이 들이지 않았다는 점을 눈치챘을 겁니다. 말하자면 길거리 과학인 셈입니다. 그래도 이 글을 공개해 누구나 검토할 수 있게 했으니, 터무니없는 내용을 발견하면 언제든 이슈를 열어 주세요. 최선을 다해 답하겠습니다.\n", + "여기 쓴 내용은 대부분 제 머릿속에서 나온 것으로, 경험으로 배운 것들입니다. 즉, 좋은 과학이라면 보통 거치는 학계의 엄밀한 검증을 통과하지 **않았습니다**. 실무에서 통하는 것들을 이야기하면서도 왜 그런지는 길게 설명하지 않았다는 점을 눈여겨보세요. 말하자면 길거리 과학인 셈입니다. 대신 누구나 검토할 수 있게 공개해 두었으니, 터무니없는 내용을 발견하면 주저하지 말고 이슈를 열어 주세요. 최선을 다해 답하겠습니다.\n", " \n", "이 장의 내용은 대부분 Guido W. Imbens의 Causal Inference for Statistics, Social, and Biomedical Sciences에서 가져왔습니다. 이 책에서 성향점수에 대한 폭넓은 논의를 찾아볼 수 있습니다. 다만 양수성에 관한 논의는 회사에서 동료들과 수없이 벌인 토론에서 나온 제 생각입니다.\n", " \n", diff --git a/causal-inference-for-the-brave-and-true/When-Prediction-Fails.ipynb b/causal-inference-for-the-brave-and-true/When-Prediction-Fails.ipynb index 18db309..77e2c09 100644 --- a/causal-inference-for-the-brave-and-true/When-Prediction-Fails.ipynb +++ b/causal-inference-for-the-brave-and-true/When-Prediction-Fails.ipynb @@ -853,7 +853,7 @@ "\n", "최적 금액이 다른 고객을 찾아낼 수 있다면, 위에서 만든 단순한 전략보다 나은 쿠폰 전략을 세울 수 있습니다.\n", "\n", - "이런 문제를 개인화(personalization) 문제라고 합니다. 선택할 수 있는 전략이 둘 이상이고, 그중 적어도 하나가 전체로 보면 최선이 아니지만 대상 집단의 일부에서는 최선일 때 개인화를 활용할 수 있습니다. 정의가 좀 복잡하지만 직관은 간단합니다. 전략이 하나뿐이라면 개인화가 아닙니다. 모든 고객에게 똑같이 하는 것이니까요. 전략이 여럿이더라도 그중 하나가 고객 한 명 한 명 모두에게 더 낫다면 굳이 개인화할 이유가 있을까요? 그 최선의 전략 하나만 쓰면 됩니다. 개인화는 어떤 전략이 집단의 한 부분에서 더 잘 통하고, 다른 전략이 다른 부분에서 더 잘 통할 때만 합니다.\n", + "이런 문제를 개인화(personalization) 문제라고 합니다. 선택할 수 있는 전략이 둘 이상이고, 그중 적어도 하나가 전체로 보면 최선이 아니지만 대상 집단의 일부에서는 최선일 때 개인화를 활용할 수 있습니다. 정의가 좀 복잡하지만 직관은 간단합니다. 전략이 하나뿐이라면 개인화가 아닙니다. 모든 고객에게 똑같이 하는 것이기 때문입니다. 전략이 여럿이더라도 그중 하나가 고객 한 명 한 명 모두에게 더 낫다면 굳이 개인화할 이유가 있을까요? 그 최선의 전략 하나만 쓰면 됩니다. 개인화는 어떤 전략이 집단의 한 부분에서 더 잘 통하고, 다른 전략이 다른 부분에서 더 잘 통할 때만 합니다.\n", "\n", "다시 예제로 돌아갑시다. 먼저 예측 모델을 학습시키고 예측값을 예측값 구간으로 나누는 함수가 필요합니다. 이 함수는 또 다른 함수를 반환하는데, 데이터프레임을 받아 예측값 열과 구간 열을 추가하는 예측 함수입니다." ] @@ -1758,9 +1758,9 @@ "\n", "![img](./data/img/when-prediction-fails/model-opt.png)\n", "\n", - "예측이 좋을수록 이 공간 분할은 목표 변수 `net_income`으로 분할하는 것에 가까워집니다. 그렇게 할 때 무슨 일이 일어나는지 아주 주의 깊게 보세요. 본질적으로 고객을, 예측 대상인 `net_value`가 변하지 않는 집합들로 나누는 셈입니다! 예측 관점에서는 완벽하게 말이 됩니다. 모델이 예측을 잘한다면, 예측값이 같은 점들의 그룹은 `net_value`도 같을 테니까요.\n", + "예측이 좋을수록 이 공간 분할은 목표 변수 `net_income`으로 분할하는 것에 가까워집니다. 그렇게 할 때 무슨 일이 일어나는지 아주 주의 깊게 보세요. 본질적으로 고객을, 예측 대상인 `net_value`가 변하지 않는 집합들로 나누는 셈입니다! 예측 관점에서는 완벽하게 말이 됩니다. 모델이 예측을 잘한다면, 예측값이 같은 점들의 그룹은 `net_value`도 같을 테니 말입니다.\n", "\n", - "여기까지는 좋습니다. 하지만 이렇게 하면 쿠폰에 따른 `net_value` 함수가 어떻게 보이게 되는지(초록색 선) 살펴보세요. 기울기가 하나도 없이 납작해집니다. 예측 관점에서는 훌륭한 일입니다. 모델이 `net_income`의 변동을 모두 잡아냈다는 뜻이니까요. 하지만 정책 관점에서는 끔찍한 일입니다. 쿠폰 금액에 따라 `net_income`이 어떻게 달라질지 볼 수 있을 만한 변동이 하나도 남지 않기 때문입니다. `net_income`에 이런 변동이 없으면 쿠폰 금액을 바꿔도 `net_income`에 아무 효과가 없는 것처럼 보이고, 최적화할 여지가 사라집니다. 덧붙이자면 이건 여기서 쓰는 특정한 이차 함수 모양과는 상관없는 일반적인 현상입니다. 좀 더 구체적으로 보여 드리려고 예를 든 것뿐입니다.\n", + "여기까지는 좋습니다. 하지만 이렇게 하면 쿠폰에 따른 `net_value` 함수가 어떻게 보이게 되는지(초록색 선) 살펴보세요. 기울기가 하나도 없이 납작해집니다. 예측 관점에서는 훌륭한 일입니다. 모델이 `net_income`의 변동을 모두 잡아냈다는 뜻이기 때문입니다. 하지만 정책 관점에서는 끔찍한 일입니다. 쿠폰 금액에 따라 `net_income`이 어떻게 달라질지 볼 수 있을 만한 변동이 하나도 남지 않기 때문입니다. `net_income`에 이런 변동이 없으면 쿠폰 금액을 바꿔도 `net_income`에 아무 효과가 없는 것처럼 보이고, 최적화할 여지가 사라집니다. 덧붙이자면 이건 여기서 쓰는 특정한 이차 함수 모양과는 상관없는 일반적인 현상입니다. 좀 더 구체적으로 보여 드리려고 예를 든 것뿐입니다.\n", "\n", "![img](./data/img/when-prediction-fails/flat-curves.png)\n", "\n", @@ -1807,7 +1807,7 @@ "\n", "![img](./data/img/when-prediction-fails/graph-1.png)\n", "\n", - "그러면 가운데와 오른쪽 그래프와 비슷한 것을 얻게 됩니다(엄밀히 말하면 더는 인과 그래프가 아닙니다. 모델이 결과를 일으키지는 않으니까요. 모델은 특성에서 결과로 가는 매핑 함수를 학습할 뿐이지만, 그렇다고 지금부터 할 이야기가 틀려지지는 않습니다). 이 모델로 세분화하는 것은 모델 노드를 조건부로 두는 것과 같습니다. 각 세그먼트 안에서 $M(T, X)$를 고정하는 것입니다. 그렇게 해 놓고 $M(T, X)$를 조건부로 둔 채 $T$와 $Y$의 관계를 알아내려 하면, 1부에서 나쁜 통제변수(bad control)를 다루며 본 상황에 빠집니다. 기억나지 않는 분을 위해 다시 말하면, 처치와 결과 사이 경로에 있는 무언가를 통제하면 처치가 결과에 영향을 주는 경로를 막게 됩니다. 그 결과 겉으로 보이는 효과가 실제 효과보다 작아집니다. 자, 바로 이겁니다. 다른 설명으로도 앞에서와 정확히 같은 결론에 도달했습니다. 예측 모델로 분석단위를 세분화하면 인과효과를 식별하는 능력이 떨어집니다.\n", + "그러면 가운데와 오른쪽 그래프와 비슷한 것을 얻게 됩니다(엄밀히 말하면 더는 인과 그래프가 아닙니다. 모델이 결과를 일으키지는 않기 때문입니다. 모델은 특성에서 결과로 가는 매핑 함수를 학습할 뿐이지만, 그렇다고 지금부터 할 이야기가 틀려지지는 않습니다). 이 모델로 세분화하는 것은 모델 노드를 조건부로 두는 것과 같습니다. 각 세그먼트 안에서 $M(T, X)$를 고정하는 것입니다. 그렇게 해 놓고 $M(T, X)$를 조건부로 둔 채 $T$와 $Y$의 관계를 알아내려 하면, 1부에서 나쁜 통제변수(bad control)를 다루며 본 상황에 빠집니다. 기억나지 않는 분을 위해 다시 말하면, 처치와 결과 사이 경로에 있는 무언가를 통제하면 처치가 결과에 영향을 주는 경로를 막게 됩니다. 그 결과 겉으로 보이는 효과가 실제 효과보다 작아집니다. 자, 바로 이겁니다. 다른 설명으로도 앞에서와 정확히 같은 결론에 도달했습니다. 예측 모델로 분석단위를 세분화하면 인과효과를 식별하는 능력이 떨어집니다.\n", "\n", "> 옮긴이: 원문에는 '왼쪽 그래프들'이라고 되어 있지만, 그림에서 모델 노드가 들어간 것은 가운데와 오른쪽 그래프라서 바로잡았습니다.\n", "\n", @@ -1844,7 +1844,7 @@ "\n", "## 참고 자료 \n", "\n", - "여기 쓴 내용은 대부분 제 머릿속에서 나온 것입니다. 경험으로 배운 것들입니다. 그래서 직접 소개할 참고 문헌이 없습니다. 이는 좋은 과학이라면 보통 거치는 학계의 엄밀한 검증을 이 내용이 통과하지 **않았다**는 뜻이기도 합니다. 대신 실무에서 통하는 것들을 이야기하면서도 왜 그런지 설명하는 데는 시간을 많이 들이지 않았다는 점을 눈여겨보세요. 말하자면 길거리 과학인 셈입니다. 하지만 이 내용을 공개해 누구나 검토할 수 있게 해 두었으니, 터무니없는 내용을 발견하면 주저하지 말고 이슈를 열어 주세요. 최선을 다해 답하겠습니다.\n", + "여기 쓴 내용은 대부분 제 머릿속에서 나온 것으로, 경험으로 배운 것들입니다. 그래서 직접 소개할 참고 문헌이 없고, 좋은 과학이라면 보통 거치는 학계의 엄밀한 검증도 통과하지 **않았습니다**. 실무에서 통하는 것들을 이야기하면서도 왜 그런지는 길게 설명하지 않았다는 점을 눈여겨보세요. 말하자면 길거리 과학인 셈입니다. 대신 누구나 검토할 수 있게 공개해 두었으니, 터무니없는 내용을 발견하면 주저하지 말고 이슈를 열어 주세요. 최선을 다해 답하겠습니다.\n", "\n", "이 장과 관련해 소개할 자료는 많지 않습니다. 인과추론으로 풀려는 개인화 문제를 정식화한 훌륭한 논문 하나가 있을 뿐입니다. *Recursive Partitioning for Heterogeneous Causal Effects, Susan Athey and Guido Imbens, 2016*. 그리고 첫 번째 이미지는 Siraj Raval의 유튜브 영상에서 가져왔습니다.\n", "\n", From b8c03641983024dd1152512a378f79207efe9d7d Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 31 Oct 2026 02:27:42 +0000 Subject: [PATCH 2/2] Tidy the landing page, sidebar and mobile layout - Add book details to the landing page, the sidebar and the footer, with structured data for the landing page. - On narrow screens, show the landing page's section list below the cover and folded. - Let an inline formula that is wider than its line scroll on its own instead of pushing the whole page sideways. - Keep the mobile contents button on one line. - Call the hub levels Level 0-4 as the hub does. --- README.md | 6 +- book/_quarto.yml | 6 +- book/chapter-toc.html | 6 +- book/index.qmd | 55 +++++++++++++++++- book/reader.html | 22 +++++++- book/styles-dark.scss | 22 ++++++++ book/styles.scss | 128 ++++++++++++++++++++++++++++++++++++++++++ 7 files changed, 236 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 61c0043..e1dcd7d 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,8 @@ # Python으로 하는 인과추론: 개념부터 실습까지 -Matheus Facure의 [Causal Inference for The Brave and True](https://matheusfacure.github.io/python-causality-handbook/landing-page.html) 한국어판입니다. +[Causal Inference for The Brave and True](https://matheusfacure.github.io/python-causality-handbook/landing-page.html)의 한국어판입니다. + +Matheus Facure 지음 · [신진수](https://www.linkedin.com/in/jinsoo-shin-436060162/)와 [가짜연구소](https://pseudo-lab.com/) 인과추론팀 옮김

Python으로 하는 인과추론 웹북 @@ -34,7 +36,7 @@ Matheus Facure의 [Causal Inference for The Brave and True](https://matheusfacur 번역은 전문 번역가가 아니라 데이터 분석가, 데이터 과학자, 연구자들이 함께 했습니다. 용어는 『실무로 통하는 인과추론 with 파이썬』(한빛미디어)과 맞췄고, 핵심 용어는 처음 나올 때 영어를 함께 적었습니다. 어색한 문장이나 잘못된 번역을 발견하면 언제든 알려 주세요. -이 책은 인과추론팀의 오픈소스와 자료를 L0–L4 커리큘럼으로 엮은 [Causal Inference Hub](https://causalinferencelab.github.io/)의 L1 중심 자료입니다. [허브에서 이 책의 자리](https://causalinferencelab.github.io/#station=Causal-Inference-with-Python)를 열면 앞뒤로 이어지는 자료를 볼 수 있습니다. +이 책은 인과추론팀의 오픈소스와 자료를 Level 0–4 커리큘럼으로 엮은 [Causal Inference Hub](https://causalinferencelab.github.io/)의 Level 1 중심 자료입니다. [허브에서 이 책의 자리](https://causalinferencelab.github.io/#station=Causal-Inference-with-Python)를 열면 앞뒤로 이어지는 자료를 볼 수 있습니다.
diff --git a/book/_quarto.yml b/book/_quarto.yml index 210e110..e603e2b 100644 --- a/book/_quarto.yml +++ b/book/_quarto.yml @@ -18,6 +18,9 @@ book: author: - name: Matheus Facure role: 지은이 + - name: 신진수 + role: 옮긴이 + url: https://www.linkedin.com/in/jinsoo-shin-436060162/ - name: 가짜연구소 인과추론팀 role: 옮긴이 site-url: https://causalinferencelab.github.io/Causal-Inference-with-Python/ @@ -43,8 +46,9 @@ book: 인과추론팀 Causal-Lab + Matheus Facure 지음 · 신진수 외 옮김 page-footer: - left: "[가짜연구소](https://pseudo-lab.com/) 인과추론팀 옮김 · 원서 © [Matheus Facure](https://matheusfacure.github.io/python-causality-handbook/landing-page.html)" + left: "[Matheus Facure](https://matheusfacure.github.io/python-causality-handbook/landing-page.html) 지음 · [신진수](index.html#authors)와 [가짜연구소](https://pseudo-lab.com/) 인과추론팀 옮김" center: - text: 인과추론 허브 href: https://causalinferencelab.github.io/ diff --git a/book/chapter-toc.html b/book/chapter-toc.html index 4ca827d..910927c 100644 --- a/book/chapter-toc.html +++ b/book/chapter-toc.html @@ -6,7 +6,9 @@ if (!toc || !header || !document.querySelector("main h2")) return; var box = document.createElement("details"); box.className = "inline-toc"; - box.open = true; + // 첫 화면은 표지(hero)가 먼저 보이도록 표지 아래에 접어 둔다 + var hero = document.querySelector("main .hero"); + box.open = !hero; var summary = document.createElement("summary"); summary.textContent = "이 장의 내용"; box.appendChild(summary); @@ -17,6 +19,6 @@ list.querySelectorAll("[id]").forEach(function (el) { el.removeAttribute("id"); }); list.querySelectorAll("a").forEach(function (a) { a.classList.remove("active"); a.removeAttribute("data-scroll-target"); }); box.appendChild(list); - header.insertAdjacentElement("afterend", box); + (hero || header).insertAdjacentElement("afterend", box); }); diff --git a/book/index.qmd b/book/index.qmd index 9a5bb6f..db29969 100644 --- a/book/index.qmd +++ b/book/index.qmd @@ -14,6 +14,7 @@ aliases:

Python으로 하는
인과추론

Causal Inference for The Brave and True 한국어판. 인과추론의 기초부터 실무 응용까지, 모든 실습을 파이썬으로.

+

Matheus Facure 지음 · 신진수와 가짜연구소 인과추론팀 옮김

1장부터 읽기 인과추론 허브 @@ -95,15 +96,15 @@ aliases: 가짜연구소 인과추론팀 Causal Inference Hub - 웹북, 영상, 스터디 자료, 데이터 에이전트까지. 팀이 만든 오픈소스를 L0–L4 커리큘럼으로 엮었습니다. + 웹북, 영상, 스터디 자료, 데이터 에이전트까지. 팀이 만든 오픈소스를 Level 0–4 커리큘럼으로 엮었습니다. 허브 둘러보기 ``` -이 책은 가짜연구소 인과추론팀의 [Causal Inference Hub](https://causalinferencelab.github.io/)에 있는 자료입니다. 허브는 팀이 2022년부터 만든 오픈소스와 자료를 L0부터 L4까지 커리큘럼으로 엮어 둔 곳이고, 이 책은 L1('어떻게 추정하나')의 중심 자료입니다. 허브에서는 이 책을 'Brave & True 인과추론 번역서'로 소개합니다. +이 책은 가짜연구소 인과추론팀의 [Causal Inference Hub](https://causalinferencelab.github.io/)에 있는 자료입니다. 허브는 팀이 2022년부터 만든 오픈소스와 자료를 Level 0부터 4까지 커리큘럼으로 엮어 둔 곳이고, 이 책은 Level 1('어떻게 추정하나')의 중심 자료입니다. 허브에서는 이 책을 'Brave & True 인과추론 번역서'로 소개합니다. -인과추론이 처음이라면 L0의 [영상으로 여는 인과추론](https://causalinferencelab.github.io/causal-studio/)으로 먼저 감을 잡고 넘어와도 좋습니다. 책을 마친 뒤에는 관심에 따라 이렇게 이어 갈 수 있습니다. +인과추론이 처음이라면 Level 0의 [영상으로 여는 인과추론](https://causalinferencelab.github.io/causal-studio/)으로 먼저 감을 잡고 넘어와도 좋습니다. 책을 마친 뒤에는 관심에 따라 이렇게 이어 갈 수 있습니다. - 내 데이터에 적용해 보고 싶다면: [산업 사례 템플릿](https://causalinferencelab.github.io/#station=causal-inference-practice), [책 예제 코드](https://causalinferencelab.github.io/#station=causal-inference-in-python-code) - 메타러너와 이중 머신러닝을 코드로 더 익히고 싶다면: ML 트랙의 [CausalML 스터디](https://causalinferencelab.github.io/#station=causal-inference-with-causalML) @@ -124,6 +125,10 @@ aliases: 한국어 번역에 흔쾌히 동의해 준 Matheus Facure와, 번역과 실습 자료를 함께 만든 인과추론팀 멤버들에게 감사드립니다. +```{=html} +

2026년 10월
옮긴이 신진수

+``` + ## 원저자의 감사의 말 > 이 시리즈 전체를 Joshua Angrist, Alberto Abadie, Christopher Walters의 훌륭한 계량경제학 강의에 바치는 헌사로 생각합니다. 1부의 아이디어는 대부분 이들이 미국경제학회(American Economic Association)에서 한 강의에서 가져왔습니다. Angrist의 책들은 계량경제학이 아주 유용할 뿐 아니라 무척 재미있다는 것을 알려 주었고, Miguel Hernan과 Jamie Robins의 책은 가장 까다로운 인과적 질문 앞에서 늘 믿고 기댄 동반자였습니다. @@ -133,3 +138,47 @@ aliases: - [Causal Inference: What If](https://miguelhernan.org/whatifbook) 원서는 누구나 무료로 볼 수 있는 오픈소스 자료입니다. 원서가 도움이 되었다면 저자의 [Patreon](https://www.patreon.com/causal_inference_for_the_brave_and_true)을 후원하거나 [원서 저장소에 스타](https://github.com/matheusfacure/python-causality-handbook/stargazers)를 남겨 주세요. + +## 지은이와 옮긴이 {#authors} + +```{=html} +
+
+

지은이

+

Matheus Facure

+

브라질 핀테크 Nubank의 경제학자이자 데이터 과학자로, 신용카드와 대출, 마케팅 문제에 인과추론을 적용해 왔습니다. 이 책을 누구나 무료로 볼 수 있게 공개했고, 이후 『Causal Inference in Python』(O'Reilly, 2023)을 썼습니다.

+ +
+
+

옮긴이

+

신진수

+

크래프톤 시니어 데이터 분석가로 크리에이터 생태계 분석과 마케팅 효과 측정을 맡고 있습니다. 가짜연구소 이사로 인과추론팀을 이끌고 있으며, 『실무로 통하는 인과추론 with 파이썬』(한빛미디어) 번역을 주도했습니다. Korea Business Experimentation Symposium(KBES)과 데이터 포럼처럼 학계와 산업을 잇는 자리도 함께 만들고 있습니다.

+ +
+
+

함께 옮긴 사람들

+

가짜연구소 인과추론팀

+

데이터 분석가, 데이터 과학자, 연구자가 모인 팀입니다. 2022년부터 가짜연구소 4기에서 6기에 걸쳐 스터디를 하며 이 책을 처음 옮겼고, 이번 개정까지 함께했습니다.

+ +
+
+ + +``` diff --git a/book/reader.html b/book/reader.html index 2edbe37..e3d61ee 100644 --- a/book/reader.html +++ b/book/reader.html @@ -48,6 +48,10 @@ var page = slug(location.pathname); var main = document.getElementById("quarto-document-content"); + // 지은이·옮긴이 한 줄은 책 제목 바로 아래로 + var credit = document.querySelector("#quarto-sidebar .sidebar-credit"), stitle = document.querySelector("#quarto-sidebar .sidebar-title"); + if (credit && stitle) { stitle.insertAdjacentElement("afterend", credit); credit.classList.add("is-under-title"); } + // 책의 장 목록: 왼쪽 목차 순서(들어가며·용어집 제외) var chapters = [], seen = {}; document.querySelectorAll("#quarto-sidebar a.sidebar-link[href]").forEach(function (a) { @@ -80,7 +84,7 @@ bar0.innerHTML = '' + 'Causal Inference Hub가짜연구소 인과추론팀' + - '이 책은 허브 커리큘럼의 L1 자료입니다' + + '이 책은 허브 커리큘럼 Level 1 자료입니다' + '"; @@ -267,5 +271,21 @@ io.observe(sentinel); } }); + + // 줄보다 긴 인라인 수식은 그 줄 안에서만 옆으로 밀어 보게 한다(좁은 화면에서 페이지 전체가 밀리지 않도록) + function fitMath() { + document.querySelectorAll("main span.math.inline").forEach(function (s) { + var c = s.querySelector("mjx-container"), box = s.closest("p, li, td, dd") || s.parentElement; + if (!c || !box) return; + s.classList.remove("math-wide"); + if (c.getBoundingClientRect().width > box.clientWidth) s.classList.add("math-wide"); + }); + } + window.addEventListener("load", function () { + var mj = window.MathJax && window.MathJax.startup && window.MathJax.startup.promise; + (mj || Promise.resolve()).then(fitMath); + var t; + window.addEventListener("resize", function () { clearTimeout(t); t = setTimeout(fitMath, 200); }); + }); })(); diff --git a/book/styles-dark.scss b/book/styles-dark.scss index 3d17162..7ffd494 100644 --- a/book/styles-dark.scss +++ b/book/styles-dark.scss @@ -249,3 +249,25 @@ body { .cil-hubbar-where { color: #9a9db0; } + +.authors .author { + background: #1b1d2a; + border-color: #2b2e40; +} + +.authors .author-tr { + background: rgba(169, 150, 214, 0.1); + border-color: rgba(169, 150, 214, 0.35); +} + +.authors .author-role { + color: #b4a5ea; +} + +.authors .author-name { + color: #eceaff; +} + +.sidebar-credit:hover { + color: #b4a5ea; +} diff --git a/book/styles.scss b/book/styles.scss index 677c379..ff52116 100644 --- a/book/styles.scss +++ b/book/styles.scss @@ -980,6 +980,118 @@ a.hub-banner:hover { opacity: 0.88; } +.hero .hero-credit { + margin: -0.9rem 0 1.5rem; + font-size: 0.88rem; + color: rgba(255, 255, 255, 0.75); +} + +.hero .hero-credit a { + color: #fff; + font-weight: 650; + text-decoration: underline; + text-underline-offset: 3px; + text-decoration-color: rgba(255, 255, 255, 0.4); +} + +.hero .hero-credit a:hover { + text-decoration-color: #fff; +} + +// 들어가며 끝 서명 +.signoff { + margin: 1.4rem 0 0.4rem; + text-align: right; + font-size: 0.95rem; + line-height: 1.7; + color: $sidebar-fg; +} + +// 지은이와 옮긴이 +.authors { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); + gap: 0.9rem; + margin: 1rem 0 2rem; +} + +.authors .author { + display: flex; + flex-direction: column; + padding: 1.1rem 1.2rem 1rem; + border-radius: 14px; + border: 1px solid $border-color; + background: $body-bg; +} + +.authors .author-tr { + border-color: rgba($indigo, 0.35); + background: $lavender-soft; +} + +.authors .author-team { + grid-column: 1 / -1; +} + +.authors .author p { + margin: 0; +} + +.authors .author-role { + font-size: 0.78rem; + font-weight: 700; + color: $indigo; +} + +.authors .author-name { + margin-top: 0.15rem !important; + font-size: 1.2rem; + font-weight: 800; + letter-spacing: -0.02em; + color: $navy; +} + +.authors .author-desc { + flex: 1; + margin-top: 0.55rem !important; + font-size: 0.9rem; + line-height: 1.7; +} + +.authors .author-links { + display: flex; + flex-wrap: wrap; + gap: 0.35rem 0.9rem; + margin-top: 0.8rem !important; + font-size: 0.85rem; + font-weight: 650; +} + +.authors .author-links a { + text-decoration: none; +} + +.authors .author-links a::after { + content: " →"; +} + +// 사이드바 로고 아래 지은이·옮긴이 한 줄 +.sidebar-credit { + display: block; + margin: -0.45rem 0 0.9rem; + font-size: 0.78rem; + color: $sidebar-fg; + text-decoration: none; +} + +.sidebar-credit:hover { + color: $indigo; +} + +.sidebar-credit.is-under-title { + margin: 0.15rem 0 0.2rem; +} + // 사이드바 상단: 가짜연구소 × 인과추론팀 .brand-lockup { display: flex; @@ -1408,6 +1520,12 @@ h1.title .chapter-number { // 휴대폰: 목차 버튼에 글자를 붙여 찾기 쉽게 @media (max-width: 767.98px) { + .quarto-secondary-nav .quarto-btn-toggle { + display: inline-flex; + align-items: center; + flex: none; + white-space: nowrap; + } .quarto-secondary-nav .quarto-btn-toggle::after { content: "목차"; margin-left: 0.35rem; @@ -1804,3 +1922,13 @@ html.cil-search-open { font-weight: 600; text-decoration: none !important; } + + +// 줄보다 긴 인라인 수식: 그 수식만 가로로 스크롤 +span.math.inline.math-wide { + display: block; + max-width: 100%; + overflow-x: auto; + overflow-y: hidden; + padding: 0.15rem 0; +}