Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -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/) 인과추론팀 옮김

<p align="center">
<a href="https://causalinferencelab.github.io/Causal-Inference-with-Python/"><img src="book/assets/readme/banner.png" alt="Python으로 하는 인과추론 웹북" width="100%"></a>
Expand Down Expand Up @@ -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)를 열면 앞뒤로 이어지는 자료를 볼 수 있습니다.

<br>

Expand Down
6 changes: 5 additions & 1 deletion book/_quarto.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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/
Expand All @@ -43,8 +46,9 @@ book:
<span class="brand-divider"></span>
<img class="brand-causal" src="assets/causal-lab-mark.png" alt="인과추론팀 Causal-Lab">
</a>
<a class="sidebar-credit" href="index.html#authors">Matheus Facure 지음 · 신진수 외 옮김</a>
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/
Expand Down
6 changes: 4 additions & 2 deletions book/chapter-toc.html
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand All @@ -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);
});
</script>
55 changes: 52 additions & 3 deletions book/index.qmd
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ aliases:
</a>
<p class="hero-title">Python으로 하는<br>인과추론</p>
<p class="hero-sub"><a href="https://matheusfacure.github.io/python-causality-handbook/landing-page.html">Causal Inference for The Brave and True</a> 한국어판. 인과추론의 기초부터 실무 응용까지, 모든 실습을 파이썬으로.</p>
<p class="hero-credit">Matheus Facure 지음 · <a href="#authors">신진수</a>와 가짜연구소 인과추론팀 옮김</p>
<div class="hero-actions">
<a class="primary" href="01-Introduction-To-Causality.html">1장부터 읽기</a>
<a class="ghost" href="https://causalinferencelab.github.io/">인과추론 허브</a>
Expand Down Expand Up @@ -95,15 +96,15 @@ aliases:
<span class="hub-banner-text">
<span class="hub-banner-k">가짜연구소 인과추론팀</span>
<span class="hub-banner-t">Causal Inference Hub</span>
<span class="hub-banner-d">웹북, 영상, 스터디 자료, 데이터 에이전트까지. 팀이 만든 오픈소스를 L0–L4 커리큘럼으로 엮었습니다.</span>
<span class="hub-banner-d">웹북, 영상, 스터디 자료, 데이터 에이전트까지. 팀이 만든 오픈소스를 Level 0–4 커리큘럼으로 엮었습니다.</span>
</span>
<span class="hub-banner-go">허브 둘러보기 <span aria-hidden="true">→</span></span>
</a>
```

이 책은 가짜연구소 인과추론팀의 [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)
Expand All @@ -124,6 +125,10 @@ aliases:

한국어 번역에 흔쾌히 동의해 준 Matheus Facure와, 번역과 실습 자료를 함께 만든 인과추론팀 멤버들에게 감사드립니다.

```{=html}
<p class="signoff">2026년 10월<br>옮긴이 신진수</p>
```

## 원저자의 감사의 말

> 이 시리즈 전체를 Joshua Angrist, Alberto Abadie, Christopher Walters의 훌륭한 계량경제학 강의에 바치는 헌사로 생각합니다. 1부의 아이디어는 대부분 이들이 미국경제학회(American Economic Association)에서 한 강의에서 가져왔습니다. Angrist의 책들은 계량경제학이 아주 유용할 뿐 아니라 무척 재미있다는 것을 알려 주었고, Miguel Hernan과 Jamie Robins의 책은 가장 까다로운 인과적 질문 앞에서 늘 믿고 기댄 동반자였습니다.
Expand All @@ -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}
<div class="authors">
<section class="author">
<p class="author-role">지은이</p>
<p class="author-name">Matheus Facure</p>
<p class="author-desc">브라질 핀테크 Nubank의 경제학자이자 데이터 과학자로, 신용카드와 대출, 마케팅 문제에 인과추론을 적용해 왔습니다. 이 책을 누구나 무료로 볼 수 있게 공개했고, 이후 『Causal Inference in Python』(O'Reilly, 2023)을 썼습니다.</p>
<p class="author-links"><a href="https://matheusfacure.github.io/python-causality-handbook/landing-page.html">원서</a><a href="https://github.com/matheusfacure">GitHub</a></p>
</section>
<section class="author author-tr">
<p class="author-role">옮긴이</p>
<p class="author-name">신진수</p>
<p class="author-desc">크래프톤 시니어 데이터 분석가로 크리에이터 생태계 분석과 마케팅 효과 측정을 맡고 있습니다. 가짜연구소 이사로 인과추론팀을 이끌고 있으며, 『실무로 통하는 인과추론 with 파이썬』(한빛미디어) 번역을 주도했습니다. Korea Business Experimentation Symposium(KBES)과 데이터 포럼처럼 학계와 산업을 잇는 자리도 함께 만들고 있습니다.</p>
<p class="author-links"><a href="https://www.linkedin.com/in/jinsoo-shin-436060162/">LinkedIn</a><a href="https://github.com/jsshin2022">GitHub</a><a href="https://causalinferencelab.github.io/article.html#brave-true-webbook-01">번역 노트</a></p>
</section>
<section class="author author-team">
<p class="author-role">함께 옮긴 사람들</p>
<p class="author-name">가짜연구소 인과추론팀</p>
<p class="author-desc">데이터 분석가, 데이터 과학자, 연구자가 모인 팀입니다. 2022년부터 가짜연구소 4기에서 6기에 걸쳐 스터디를 하며 이 책을 처음 옮겼고, 이번 개정까지 함께했습니다.</p>
<p class="author-links"><a href="https://causalinferencelab.github.io/#contrib">함께한 사람들</a><a href="https://github.com/CausalInferenceLab/Causal-Inference-with-Python/graphs/contributors">기여자</a></p>
</section>
</div>

<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Book",
"name": "Python으로 하는 인과추론",
"alternateName": "Causal Inference for The Brave and True 한국어판",
"inLanguage": "ko",
"url": "https://causalinferencelab.github.io/Causal-Inference-with-Python/",
"isAccessibleForFree": true,
"author": {"@type": "Person", "name": "Matheus Facure", "url": "https://github.com/matheusfacure"},
"translator": [
{"@type": "Person", "name": "신진수", "url": "https://www.linkedin.com/in/jinsoo-shin-436060162/", "sameAs": ["https://github.com/jsshin2022"]},
{"@type": "Organization", "name": "가짜연구소 인과추론팀", "url": "https://causalinferencelab.github.io/"}
],
"translationOfWork": {"@type": "Book", "name": "Causal Inference for The Brave and True", "inLanguage": "en", "url": "https://matheusfacure.github.io/python-causality-handbook/"},
"publisher": {"@type": "Organization", "name": "가짜연구소", "url": "https://pseudo-lab.com/"}
}
</script>
```
22 changes: 21 additions & 1 deletion book/reader.html
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down Expand Up @@ -80,7 +84,7 @@
bar0.innerHTML =
'<a class="cil-hubbar-home" href="' + HUB + '"><img src="assets/causal-lab-mark.png" alt="" width="22" height="25">' +
'<span><b>Causal Inference Hub</b><small>가짜연구소 인과추론팀</small></span></a>' +
'<span class="cil-hubbar-where">이 책은 허브 커리큘럼의 <b>L1</b> 자료입니다</span>' +
'<span class="cil-hubbar-where">이 책은 허브 커리큘럼 <b>Level 1</b> 자료입니다</span>' +
'<nav class="cil-hubbar-nav" aria-label="Causal Inference Hub">' +
'<a href="' + HUB + '#curriculum">커리큘럼</a><a href="' + HUB + '#posts">연재</a><a href="' + HUB + '#join">참여하기</a>' +
"</nav>";
Expand Down Expand Up @@ -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); });
});
})();
</script>
22 changes: 22 additions & 0 deletions book/styles-dark.scss
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}
128 changes: 128 additions & 0 deletions book/styles.scss
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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;
Expand Down Expand Up @@ -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;
}
Loading
Loading