# 04-4: 상식과 반대로 나올 때

> rev13(건 13 FAIL 2 대응, 2026-09-05). SPEC.lock v1 — 계약·검사기 동결. 공통 조항 `assets/contracts/COMMON.md`(작업지시서 #3 전면 개정판 — 4박자 2·6·15·2 · **§0.4-a 총량 = 발화÷250 + 조작초÷60 + chapter 전환 3장 0.5분** · §0.14 quiz 관문 = 빌더 「찍기 기대 정답률」 ≤35% · §0.16-a notes 도구 출력은 오케스트레이터가 파일로 건넴 · §0.18-a 마진 문턱 4%, 계산식 (큰값−작은값)÷큰값×100). 계약 `assets/contracts/04-4.md`(2026-09-05 개정) · `04-4-rev1.md`(FA1~FA7) · `04-4-rev2.md`(FB1~FB3) · `04-4-rev3.md`(FC1~FC3) · `04-4-rev4.md`(FD1~FD5) · `04-4-rev5.md`(FE1~FE3) · `04-4-rev6.md`(FF1) · `04-4-rev7.md`(FG1~FG2) · 건 8 FAIL 1(오케스트레이터 지시, 별도 계약 파일 없음) · `04-4-rev9.md`(FH1~FH3) · `04-4-rev10.md`(FI1~FI3) · `04-4-rev11.md`(FJ1~FJ2) · `04-4-rev12.md`(FL1~FL3) · `04-4-rev13.md`(FN1~FN2). 소재 `assets/market.md`. 데이터 `assets/data/daejeon/README.md` 「더러운 원천 실측」·**「04-4 코호트 실측」(2026-09-05 4차 정정판 — 이상치 하한 1900은 임의값이라 폐기, 이상치=달력 불가 또는 파일 기준일 이후, 지표는 2년 내 폐업률)** 절. 틀은 `author-a/ep-04-3/`(PASS). 앤스컴·아이스크림 근거는 `assets/sources.md`.

## 기본 정보
| 항목 | 내용 |
|---|---|
| 시간 | 25~30분 (발화 5,000~7,500자 + 시연 조작 시간 합산, §0.4·§0.4-a) |
| 유형 | 시연 |
| 카테고리 | 04 AI 데이터 분석 |
| 선수 차시 | 04-3 |
| 상태 | rev13 |

## 학습 목표
- 상관과 인과가 다르다는 것을 다른 분야의 예로 설명할 수 있다
- 잔차(예상보다 높은지 낮은지)로 전체 흐름에서 벗어난 자리를 읽을 수 있다
- 코호트를 맞추지 않은 분모와, 관측 기간이 다 차지 않은 코호트를 섞은 분모가 그럴듯한 거짓 결론을 만드는 이유를 설명할 수 있다

## 구성
| 구간 | 분 | 활동 | 목적 |
|---|---|---|---|
| 도입 | 2 | 코호트별 2년 내 폐업률 표(구별)와 산점도를 먼저 보여주고, 04-3 밀도 순위를 30초로 되짚기 | 오늘의 결과물을 먼저 확인 |
| 이론 | 6 | 비교의 정석 — 상관≠인과·잔차·코호트. 다른 예 = 아이스크림 판매량과 익사 사고(교란변수) + 앤스컴 4중주 | 어디서든 쓰는 일반형을 대전 없이 심는다 |
| 시연 | 15(+조작) | ① 인허가 파일 열기·데이터 사전 ② 이상치 13종 87행(달력 검사) ③ 「대전광역시」 행 처리 ④ 코호트 섞은 첫 계산의 함정 → 정정 ⑤ 구별 2년 내 폐업률 표(마진 판정) ⑥ 산점도·잔차 ⑦ "생존율 계산해 줘" 함정 ⑧ 전공이 드러나는 곳 | 대전 소재에 실측 숫자로 적용, 계약 순서 그대로 |
| 정리 | 2 | 한 줄 + 다음 차시 갈고리 + 검정 질문 자막 | 연결 |

합계 25~30분(COMMON §0.1 — 4박자 선언 2·6·15·2=25, 시연 상한 총량에서 역산). 시연 구간의 무발화 조작 시간은 화면 지시에 단가표 유형(파일열기20·열고르기30·검사실행30·AI응답대기30·표작성20·없음0, 초)으로 표기한다 — 화면만 바뀌고 실제 조작이 없는 지시는 「없음」(§0.4-a 개정, FE1), 전환 비용 8초는 전환 칸에서만 센다.

## 연결
- **이전**: 04-3 「무엇으로 나눌 것인가 — 비교의 기준」 — 인구 만명당으로 나누니 절대값 순위가 흔들렸고, 얇은 마진 자리는 묶어서 말했다
- **다음**: 4-5 「고르고, 틀릴 수 있는 곳을 적는다」

---

## 상세 전개

### 도입 (2분)

**[화면: 왼쪽에 04-3에서 만든 인구 만명당 밀도 순위표(중구·서구 위 묶음, 동구는 그 사이쯤, 유성구·대덕구 아래 묶음), 오른쪽에 오늘 만들 2019 코호트 2년 내 폐업률 표와 산점도 밑그림(재구성 — 촬영 시 실제 완성본 화면으로 교체). · 조작: 없음 · 전환: 예]**

(축자)
> "오늘은 밀도가 좋은 것인지 나쁜 것인지를 봅니다."

(요점) 지난 차시에서 다섯 자치구를 인구 만 명당 업소 수로 나눠 순위를 매겼다. 중구·서구가 위쪽 묶음, 동구가 그 사이쯤, 유성구·대덕구가 아래쪽 묶음이었다. 그 표는 「지금 얼마나 있는가」를 답했을 뿐, 「그중 얼마나 남았는가」는 다루지 않았다. 오늘은 그 밀도 순위 옆에 다른 표를 하나 더 놓는다 — 같은 다섯 구의 2년 내 폐업률이다.

(요점) 붐비는 곳이 경쟁이 심해서 더 망하는 것 같기도 하고, 사람이 몰리는 곳이라 오히려 더 잘 버티는 것 같기도 하다. 둘 다 그럴듯하게 들린다. 어느 쪽이 맞는지는 밀도 표와 폐업률 표를 실제로 겹쳐 봐야 알 수 있다. 오늘은 짐작이 아니라 숫자로 본다.

(축자)
> "이번 차시에서 정하는 것은 밀도가 좋은 것인가 나쁜 것인가입니다."

(요점) 대전 다섯 개 구의 밀도와 폐업률을 나란히 놓고, 그 관계가 정말 있는 관계인지, 우연히 같이 움직인 것인지, 그리고 어느 구가 그 관계에서 벗어나 있는지를 오늘 가려낸다. 벗어난 구가 있다면 그 자리가 오늘 제목이 말하는 「상식과 반대로 나올 때」다.

### 이론 (6분)

(요점, 도입) 지난 차시까지는 표 하나 안에서 분모를 고르는 법을 배웠다. 오늘은 표 두 개를 겹쳐 놓고 비교하는 법을 배운다. 두 표를 겹칠 때 흔히 걸리는 함정이 셋 있다 — 상관을 인과로 착각하는 것, 흐름에서 벗어난 자리를 놓치는 것, 출발선이 다른 것을 같은 줄에 세우는 것이다.

(축자, 핵심 정의)
> "숫자 두 개가 같이 움직인다고 해서, 하나가 다른 하나를 일으킨 것은 아닙니다. 이것을 상관과 인과의 차이라고 부릅니다."

(요점) 두 숫자가 같은 방향으로 움직이는 것을 상관이라 부른다. 한쪽이 다른 쪽의 원인이라는 뜻은 아니다. 둘 다 다른 하나의 원인 때문에 같이 움직였을 수도 있다. 상관계수가 높다고 인과가 저절로 증명되지 않는다 — 인과를 말하려면 다른 원인을 하나씩 지워 나가는 별도의 절차가 필요하다.

(축자, 다른 예)
> "아이스크림 판매량이 늘어나는 시기에 물놀이 익사 사고도 늘어납니다. 아이스크림이 사고를 일으키는 게 아니라, 더운 날씨가 둘 다를 늘립니다."

(요점) 이 문장을 풀어 설명한다. 아이스크림 판매량과 물놀이 익사 사고 건수는 여름에 같이 올라간다. 표만 보면 상관이 있어 보인다. 그런데 둘 사이에 직접 관계는 없다. 더운 날씨라는 다른 원인이 아이스크림도 더 팔리게 하고, 물놀이도 늘려서 사고도 함께 늘린 것이다. 이렇게 진짜 원인이 따로 있는데 두 결과만 같이 움직이는 것을 교란이라 부른다.

(요점) 상관계수 하나만 보고 안심해서도 안 된다. 같은 상관계수를 가진 데이터라도 그림으로 그려 보면 전혀 다르게 생겼을 수 있다. 숫자 하나로 요약하는 순간 그림이 가진 다른 정보는 사라진다.

(축자)
> "같은 상관계수, 다른 그림 — 이것을 앤스컴 4중주라고 부릅니다."

(요점) 계산기가 뱉은 숫자 하나만 믿지 않고, 흩어진 점을 실제로 그려서 눈으로 봐야 하는 이유가 여기 있다. 숫자는 같아도 그림은 다를 수 있다. 오늘 시연에서도 상관계수 하나만 보고 끝내지 않고, 점을 실제로 찍어서 어느 점이 흐름에서 벗어나 있는지 눈으로 확인한다.

(축자, 핵심 정의)
> "예상한 값과 실제 값의 차이를 잔차라고 부릅니다. 잔차가 크다는 것은, 전체 흐름에서 벗어나 있다는 뜻입니다."

(요점) 추세선을 그리면 그 흐름을 따라 예상되는 값이 나온다. 실제 값이 그 예상보다 높으면 양의 잔차, 낮으면 음의 잔차다. 잔차가 큰 자리가 바로 「이 자리는 왜 다른가」를 물어야 할 자리다.

(축자, 핵심 정의)
> "같은 해에 문을 연 가게끼리 묶은 것을 코호트라고 부릅니다. 코호트를 맞추지 않고 비교하면, 출발선이 다른 것을 같은 줄에 세우는 셈입니다."

(요점) 2년 전에 문을 연 가게와 1년 전에 문을 연 가게를 같은 분모에 넣고 폐업률을 구하면, 아직 관측 기간이 다 차지 않은 가게는 폐업할 시간조차 없었는데도 살아남은 것으로 잡힌다. 출발이 다른 집단을 하나로 묶으면 비율 자체가 왜곡된다. 나이가 다른 사람을 한 반에 묶어 평균 키를 재는 것과 같다 — 반 평균은 나오지만 그 숫자로 「이 반 아이들은 작다」고 말할 수 없다. 오늘 시연에서 이 함정을 직접 만들고, 직접 고친다.

### 시연 (15분 + 조작)

**[화면: 인허가업소 정보 파일을 연다 — CP949로 열어야 한글이 보이고, 「지번주소」 열에 따옴표로 묶인 쉼표가 있어 처음엔 열이 밀린다(재구성 — 촬영 시 실제 실행 화면으로 교체). · 조작: 파일열기 · 전환: 예]**

(요점) 인허가 자료 파일을 연다. 260,856행, 17열이다. CP949로 열어야 한글이 깨지지 않고, 「지번주소」 열 안에 따옴표로 묶인 쉼표가 있어서 단순히 쉼표로만 나누면 열이 밀린다. 04-2에서 배운 「더러운 원천」이 그대로 다시 나온다 — 파일 하나를 여는 것부터 규칙이 필요하다는 것을 매번 다시 확인한다.

(축자)
> "쉼표로만 나누면 열이 밀립니다. 따옴표 안의 쉼표는 값의 일부입니다."

(요점) 열 다섯 개만 오늘 쓴다 — 개방자치단체명, 개방서비스명, 인허가일자, 폐업일자, 영업상태명이다. 인허가일자는 가게가 문을 연 날, 폐업일자는 문을 닫은 날이다. 두 날짜의 간격이 오늘 다룰 「몇 년을 버텼는가」의 재료다.

**[화면: 인허가일자 열에서 걸러진 이상값 열세 갈래, 모두 87행 — 형식 자체가 날짜가 아닌 값 70행(리터럴 「nullll」 64행·「200000」 3행·「42424」·「0」·「1997-8-78」 각 1행), 형식은 날짜 같지만 달력에 없는 값 16행(「2000-00-00」 9행·「1990-05-00」 2행·「1998-15-28」·「1992-04-31」·「1991-05-53」·「1989-12-00」·「1999-03-00」 각 1행), 달력엔 있지만 파일 기준일(2021-12-30) 이후인 값 1행(「2996-12-28」)(재구성 — 촬영 시 실제 실행 화면으로 교체). · 조작: 검사실행 · 전환: 아니오]**

(요점) 인허가일자부터 검사한다. 이 검사는 정규식 하나로 끝나지 않는다 — 실제로 달력에 있는 날짜인지까지 봐야 한다. 걸러지는 값은 세 층이다. 첫째 층은 애초에 날짜라고 부를 수 없는 값들이다 — 글자 그대로 「nullll」이라고 적힌 행이 64개로 가장 많고, 「200000」·「42424」·「0」·「1997-8-78」이 각 몇 행씩, 모두 70행이다. 둘째 층은 날짜 모양은 갖췄는데 달력에 없는 날짜다 — 「2000년 0월 0일」이 9행, 「1990년 5월 0일」이 2행, 그 밖에 그 달에 없는 날짜나 있을 수 없는 달까지 모두 16행이다. 셋째 층은 달력에는 있지만 파일이 기록된 날짜 이후인 값이다 — 있을 수 없는 미래 날짜 「2996년 12월 28일」 하나, 1행이다. 세 층을 합쳐 열세 갈래, 87행이다.

(축자)
> "빈칸이 아니라, 글자 그대로 「nullll」이라고 적혀 있습니다. 0도 빈칸도 아닌 세 번째 결측 표기입니다."

(축자)
> "이상치를 거르는 기준은 데이터 안의 최댓값이 아니라, 이 열이 무엇을 뜻하는지에 대한 정의입니다."

(요점) 이 열의 허용값은 실제로 달력에 있는 날짜이면서 파일 기준일 이전이어야 한다는 정의에서 나온다 — 데이터 안에 있는 값의 최댓값·최솟값이 허용값을 정하지 않는다. 열세 갈래 87행을 정의로 걸러 뺀 나머지가 정상값이다. 다만 「1198-03-27」같이 있을 수 없을 만큼 오래된 정상 형식 날짜는 이 정의로도 그대로 남는다 — 그것이 정의의 한계다.

**[화면: 「개방자치단체명」이 「대전광역시」로만 찍힌 행 3,731개(재구성 — 촬영 시 실제 실행 화면으로 교체). · 조작: 검사실행 · 전환: 아니오]**

(요점) 자치구 열을 본다. 서구·중구·유성구·동구·대덕구 다섯 자치구 말고 「대전광역시」라고만 적힌 행이 3,731개 있다 — 구가 아니라 시 단위로 잡힌 인허가다. 이 3,731건 중 2019년에 문을 연 것만 109건이다. 구별로 비교하는 오늘 표에서는 이 행을 아예 뺀다. 나누는 값에서만이 아니라 나누어지는 값에서도 함께 뺀다 — 분자에서만 빼고 분모에는 남겨 두면, 분모가 실제보다 커져서 비율이 낮게 나온다.

(축자)
> "구가 없는 행은 분자에서도 분모에서도 뺍니다."

**[화면: AI 채팅창 — 2019~2021년 인허가 45,887건 중 폐업일자가 있는 건수를 물어 나온 결과, 17.0퍼센트(재구성 — 촬영 시 실제 실행 화면으로 교체). · 조작: AI응답대기 · 전환: 예]**

(요점, 함정) 코호트를 나누지 않고 먼저 계산해 본다. 2019년부터 2021년까지 인허가 45,887건을 한 분모에 놓고, 폐업일자가 찍힌 건수를 센다. 나오는 값은 17.0퍼센트다. 이 비율에는 「몇 년 안에」라는 창이 없다 — 지금까지 닫았는지만 본 것이다. 에이전트에게 이 숫자를 「폐업률」이라고 불러도 되는지 물으면 그렇다고 답한다.

```
(재구성 — AI 출력 예시)
2019~2021년 인허가 45,887건 중 폐업일자 있음 7,802건 — 폐업률 17.0%
```

(축자)
> "이 숫자는 틀렸습니다. 2021년에 문을 연 가게는 아직 닫을 시간이 짧았습니다."

(요점) 창 없이 같은 비율을 코호트별로 나누면 2019년 27.6퍼센트, 2020년 17.4퍼센트, 2021년 8.1퍼센트다. 최근에 열수록 낮게 나온다 — 안 망해서가 아니라 닫을 시간이 짧아서다. 세 값을 하나로 섞으면 갓 문을 연 가게가 낮은 값 쪽으로 전체를 끌어내린다.

**[화면: 코호트별 2년 내 폐업률 표 — 2018년 12,295건 중 3,066건(24.9%), 2019년 13,665건 중 3,326건(24.3%), 2020년 15,218건(2년 창 미완, 2022년 폐업 기록 없음 — 비교 불가)(재구성 — 촬영 시 실제 실행 화면으로 교체). · 조작: 표작성 · 전환: 예]**

(요점) 이번엔 창을 딱 2년으로 고정해서 다시 센다. 2018년 코호트는 12,295건 중 3,066건이 2년 안에 문을 닫아 24.9퍼센트다. 2019년 코호트는 13,665건 중 3,326건, 24.3퍼센트다. 2020년 코호트는 2년 창이 아직 다 차지 않아 비교할 수 있는 값이 아니다.

(축자)
> "2019년에 문을 연 가게 중 2년 안에 문을 닫은 비율입니다. 자료는 2021년 12월까지입니다."

**[화면: 2019년 코호트 구별 표 — 동구 28.4%·서구 26.7%·중구 23.5%·유성구 21.7%·대덕구 18.2%(재구성 — 촬영 시 실제 실행 화면으로 교체). · 조작: 표작성 · 전환: 아니오]**

(요점) 2년을 다 채운 2019년 코호트를 구별로 나눈다. 동구 28.4퍼센트, 서구 26.7퍼센트, 중구 23.5퍼센트, 유성구 21.7퍼센트, 대덕구 18.2퍼센트다.

(축자)
> "동구와 서구는 표시값으로 6퍼센트에 못 미쳐, 동구가 앞서는 편이라고만 말합니다. 나머지 순서는 뚜렷합니다."

(요점) 서구와 중구는 12.3퍼센트 차이, 중구와 유성구는 7.7퍼센트 차이, 유성구와 대덕구는 15.7퍼센트 차이로 전부 뚜렷하다. 다섯 자리 중 얇은 자리는 맨 위 한 곳뿐이다.

**[화면: 산점도 — 가로축 인구 만명당 업소 수(04-3, 중구·서구는 마진 0.77%로 위 묶음), 세로축 2019 코호트 2년 내 폐업률, 다섯 점과 추세선(재구성 — 촬영 시 실제 실행 화면으로 교체). · 조작: 표작성 · 전환: 예]**

(요점) 밀도와 폐업률을 산점도 하나에 겹친다. 가로축은 지난 차시의 인구 만명당 업소 수, 세로축은 오늘 구한 2019년 코호트 2년 내 폐업률이다. 가로축에서 중구와 서구는 04-3에서 이미 배운 대로 마진 0.77퍼센트의 한 묶음이라, 둘 중 어느 쪽이 밀도 1위인지는 오늘도 단정하지 않는다. 다섯 점에 추세선을 그으면 상관계수는 0.50이다. 약한 양의 상관이다 — 밀도가 높을수록 폐업률도 오르는 경향은 있다는 뜻이지, 밀도가 폐업의 원인이라는 뜻은 아니다.

(축자)
> "밀도는 2026년 6월 자료, 폐업률은 2019년에 문을 연 가게입니다 — 두 표의 시점이 7년 다릅니다."

(축자)
> "상관계수 0.50은 약한 양의 상관입니다. 밀도가 원인이라고 말하는 숫자가 아닙니다. 다섯 점이라 한 구만 빠져도 크게 흔들립니다."

**[화면: 잔차 표 — 동구 +5.3·대덕구 -3.7·중구 -2.5·서구 +0.9·유성구 -0.1(절대값 큰 순서로 배열)(재구성 — 촬영 시 실제 실행 화면으로 교체). · 조작: 표작성 · 전환: 아니오]**

(요점) 추세선에서 얼마나 벗어났는지 잔차로 본다. 절대값이 큰 순서로 늘어놓으면 동구 +5.3, 대덕구 -3.7, 중구 -2.5, 서구 +0.9, 유성구 -0.1이다. 밀도가 중간쯤인 동구가 예상보다 5.3퍼센트포인트나 더 많이 문을 닫아 다섯 구 중 가장 크게 벗어나 있다. 반대로 대덕구는 예상보다 3.7퍼센트포인트 더 적게 닫아 두 번째로 크게 벗어났다.

(축자)
> "가장 크게 벗어난 곳은 동구입니다. 밀도는 다섯 구 중 중간쯤인데, 폐업률은 다섯 구 중 앞서는 편입니다. 상식과 반대로 나온 자리입니다."

(요점) 「붐비는 곳이 더 망한다」는 상식은 전체 흐름에서는 맞는 방향이다. 그런데 정작 그 흐름을 가장 크게 벗어난 곳은 가장 붐비는 자리가 아니라 중간쯤 붐비는 동구다. 밀도 순위에서 위 묶음인 중구·서구는 오히려 잔차가 작은 편이다 — 서구 +0.9으로 다섯 구 중 두 번째로 작고, 중구 -2.5로 세 번째로 작다. 밀도만으로는 동구가 왜 유독 많이 닫았는지, 대덕구가 왜 예상보다 잘 버텼는지 설명하지 못한다.

**[화면: AI 채팅창 — "생존율 계산해 줘"라고만 입력, 2019~2021년 인허가를 한 분모에 넣은 응답(재구성 — 촬영 시 실제 실행 화면으로 교체). · 조작: AI응답대기 · 전환: 예]**

(요점, 함정) 에이전트에게 "생존율 계산해 줘"라고만 시킨다. 에이전트는 창을 묻지 않고, 앞서 본 「창 없는」 셈을 그대로 뒤집어 답한다.

```
(재구성 — AI 출력 예시)
전체 생존율을 계산했습니다.
2019~2021년 인허가 45,887건 중 폐업 7,802건 — 생존율 83.0%
```

(축자)
> "코호트를 말하지 않으면, 에이전트는 출발선이 다른 것을 같은 줄에 세웁니다."

(요점) 숫자가 그럴듯해 보여서 물어보지 않으면 이 오류는 걸리지 않는다. "2019년 코호트만 2년 생존율로 계산해 줘"처럼 코호트를 문장에 넣어야 오늘 만든 표가 나온다. 04-3에서 「분모를 정하는 것은 에이전트가 아니라 사람의 몫」이라고 배운 것과 같은 자리다 — 오늘은 그 빈자리가 분모가 아니라 코호트다.

**[화면: 개방서비스명 식품접객 3종(일반음식점·휴게음식점·제과점영업) — 일반음식점 60,899·휴게음식점 14,545·제과점영업 1,685으로 코호트를 나눈 표(재구성 — 촬영 시 실제 실행 화면으로 교체). · 조작: 표작성 · 전환: 예]**

(요점, 전공이 드러나는 곳) 인물은 일반음식점·휴게음식점·제과점영업을 같은 음식 계열로 묶지 않는다. 제과점영업은 반죽을 미리 준비하는 시간이 길어 손님이 없어도 재료비가 그대로 나간다고 본다. 인허가 업종으로 폐업률을 나눠 봐야 한다고 말한다.

### 정리 (2분)

**[화면: 도입에서 본 코호트별 표와 산점도가 다시 뜬다(재구성 — 촬영 시 실제 완성본 화면으로 교체). · 조작: 없음 · 전환: 예]**

(축자)
> "출발선이 다른 것을 한 분모에 넣으면, 그럴듯한 거짓이 나옵니다."

(요점) 오늘 창 없이 섞어 낸 17.0퍼센트도, 2년 창으로 다시 낸 24.4퍼센트도 계산 자체는 틀리지 않았다. 다만 하나는 창을 정하지 않은 채 서로 다른 시점의 가게를 같은 줄에 세운 값이었다. 밀도와 폐업률의 상관도, 잔차를 보지 않았다면 가장 붐비는 곳이 가장 위험하다는, 사실과 다른 결론을 냈을 것이다. 상관은 방향만 보여주고, 잔차는 그 방향에서 벗어난 자리를 보여준다 — 둘 다 봐야 한 쪽만 보고 내린 결론에 속지 않는다. 표를 볼 때마다 이 숫자의 분모가 같은 출발선에서, 그리고 충분한 시간 동안 관측된 것인지부터 확인하는 습관을 오늘 배운다.

(축자)
> "다음은 4-5 「고르고, 틀릴 수 있는 곳을 적는다」입니다."

(요점) 오늘 나눈 코호트는 「언제 문을 열었는가」로 묶은 것이었다. 같은 기준으로 묶어야 비교가 성립한다는 것이 오늘 배운 전부다.

[자막: 이 폐업률의 분모는 몇 년 개업분이고, 몇 년까지 관측됐습니까?]

---

## 근거

**인허가업소 정보 원본**: `author-c/probe-dj/3b/data/license.csv`(260,856행 × 17열, CP949). 집필자가 `gawk`(FPAT 방식으로 따옴표 쉼표를 처리)로 전수 재확인 — 개방자치단체명 서구80,823·중구52,059·유성구51,700·동구40,787·대덕구31,756·**대전광역시3,731**(README·계약과 일치). 개방서비스명 일반음식점60,899·통신판매업35,300·담배소매업18,990·즉석판매제조가공업16,878·휴게음식점14,545·**제과점영업1,685**(일치). **영업상태명 6종 전부**: 폐업132,830·영업/정상118,682·취소/말소/만료/정지/중지8,570·휴업449·**기타1·제외/삭제/전출324**(합 260,856, 일치 — 앞 rev는 이 중 4종만 적어 325행이 빠져 있었다). 데이터갱신일자 최댓값 **2021-12-16**·**폐업일자 최댓값 2021-12-30**(파일 기준일 — 발화는 「최근 자료」·「2021년 12월까지」로만, 두 값은 이 절에만 적는다).

**관측 창 절단(FA1·FA4, 계약 rev1)**: 폐업일자 최댓값이 2021-12-30이라, 2019년 인허가분의 「3년 창」(2022년 말까지)은 끝까지 관측되지 않는다(평균 관측률 83.5%, 창을 끝까지 채운 건 0건). 완전히 관측되는 창은 **2년**뿐이다 — 2019년 개업분은 2021-12-30까지 전원 2년을 채운다(2019-12-31 개업 + 2년 = 2021-12-31, 하루 차이는 무시). 이 편의 지표를 **「2년 내 폐업률」**로 바꾸고, 대본·근거 전체에서 「3년」·「2022년 같은 날까지」 표현을 뺐다. 2020년 코호트는 2년 창도 안 찼다(2022년 폐업 기록 0건) — 비교 대상에서 뺀다. 2019 코호트 안에서도 「2019-12-31 개업분 일부는 2년 창이 하루 모자란다」(파일 기준일 2021-12-30 vs 2년 뒤 2021-12-31) — 극소수 경계 사례이며 이 편의 24.4%·구별 표 값은 이미 재현에 반영돼 있다.

**이상치 13종 87행 정정(FA5·FB1·FB2·FF1, §0.18)**: 앞 rev까지 정규식 `^[0-9]{4}-[0-9]{2}-[0-9]{2}$`(형식 검사)만 썼다가 「6종 73행」이라 적었는데, 이 정규식은 형식만 보고 **달력에 실재하는 날짜인지는 보지 않는다** — `2000-00-00`(월·일 0)·`1990-05-00`(일 0)·`1998-15-28`(달 15)·`1992-04-31`(4월은 30일까지)·`1991-05-53`(일 53)·`1989-12-00`·`1999-03-00` 같이 이 정규식을 통과하지만 달력에 없는 날짜 16행을 놓쳤다. 검사식을 「달력 날짜로 실제 해석되는가(월 1~12·그 달의 일수 이내)」로 바꿔 gawk로 윤년까지 반영해 재검사했다(FB1) — **형식 자체가 날짜가 아닌 값 70행**(`nullll` 64·`200000` 3·`42424`·`0`·`1997-8-78` 각 1) + **형식은 맞지만 달력에 없는 값 16행**(`2000-00-00` 9·`1990-05-00` 2·`1998-15-28`·`1992-04-31`·`1991-05-53`·`1989-12-00`·`1999-03-00` 각 1) + **달력엔 있지만 연도가 1900~2021 범위 밖인 값 3행**(`2996-12-28`NR63636·`1885-05-09`NR78413·`1198-03-27`NR110370) = 89행, 15종(FB1 당시 값). **FF1 4차 정정**: 이 「1900」 하한은 데이터 사전 어디에도 없는 집필자 임의값이었다 — 정의를 「달력 불가 또는 파일 기준일(2021-12-30) 이후」로 바꾸자 `1885-05-09`(NR78413)·`1198-03-27`(NR110370)는 달력에 실재하고 파일 기준일보다 한참 이전이라 더 이상 이상치가 아니다(오래된 인허가로 정상 처리, 둘 다 2018~2021 코호트 밖이라 수치 무영향) — `1198-03-27`처럼 있을 수 없을 만큼 오래된 날짜도 「달력에 있고 파일 기준일 이전」이라는 정의를 그대로 만족하면 걸러지지 않는다. 이것이 정의의 한계다(FG2) — 남는 것은 **형식 자체가 날짜가 아닌 값 70행 + 형식은 맞지만 달력에 없는 값 16행 + 달력엔 있지만 파일 기준일 이후인 값 1행(`2996-12-28`NR63636) = 87행, 13종**. `nullll`은 빈칸(공백 문자열)이 아니라 리터럴 문자열이다 — 인허가일자 빈 문자열은 0행이었다(FB2, 04-2·04-3의 「999」와 같은 결측 코드 계열). 87행 중 2018~2020년으로 파싱되는 행은 0건이라 코호트 수치에는 영향이 없다(집필자 재현이 실측과 일치).

**코호트 재현(2년 내 폐업, README + 계약 rev3 ④)**: 인허가일자 연도별 건수·2년 내 폐업(인허가일자 ≤ 폐업일자 ≤ 인허가일자+2년, 같은 월일 기준 — 폐업일자가 인허가일자보다 앞선 8행은 데이터 오류라 폐업으로 세지 않는다(2026-09-06 정정))을 gawk로 재현 — 2018년 12,295건 중 3,066건(**24.94%→24.9%**), 2019년 13,665건 중 3,326건(**24.34%→24.3%**), 2020년 15,218건(2년 창 미완, 비교 불가). **「섞은 첫 계산」(계약 rev3 ④, FC2)은 이 2년 창과 다른 셈이다** — 창을 두지 않고 「폐업일자가 찍혀 있는가」만 본 값이다: 2019~2021년 인허가 45,887건(13,665+15,218+17,004) 중 폐업일자가 있는 것 7,802건 → **17.00%→17.0%**(코호트를 섞은 첫 계산의 함정값, L120 코드블록). 창 없이 코호트별로 나누면 2019년 3,771/13,665=**27.60%→27.6%**·2020년 2,649/15,218=**17.41%→17.4%**·2021년 1,382/17,004=**8.13%→8.1%**(2021 코호트는 문 연 지 얼마 안 돼 낮게 나올 뿐, 실제로 안 망한 것이 아니다). 전부 `assets/data/daejeon/README.md` 「04-4 코호트 실측」(4차 정정판, 2년 내·13종 87행) 절과 일치 — 폐기된 3년 창 절은 더 이상 인용하지 않는다.

**2019 코호트 구별**(개방자치단체명 「대전광역시」 109행 제외, 분모에서도 제외): 동구 2,023건 중 575건(**28.42%→표시 28.4%**)·서구 4,746건 중 1,269건(**26.74%→26.7%**)·중구 2,284건 중 537건(**23.51%→23.5%**)·유성구 3,266건 중 710건(**21.74%→21.7%**)·대덕구 1,237건 중 225건(**18.19%→18.2%**). README와 일치.

**인접 마진(§0.18-a, 표시값 (큰−작은)÷큰×100) — 몫 지표 전부(FA7)**. 개방서비스명 두 쌍만 예외다(FG1) — 화면·발화가 다루는 것은 실제 전체 순위(1위 일반음식점·2위 통신판매업·3위 담배소매업·4위 즉석판매제조가공업·5위 휴게음식점·25위 제과점영업)가 아니라 식품접객 업종 세 종류(일반음식점·휴게음식점·제과점영업)만 골라 낸 비교라, 인접 순위 판정이 아니라 참고 크기 비교로만 적는다:

| 지표 | 쌍(큰·작은) | 마진% | 판정(문턱 4%) |
|---|---|---|---|
| 2019 구별 2년내 폐업률 | 동구28.4-서구26.7 | 5.99% | 헤지(4~6%) → 「동구가 앞서는 편」 |
| 〃 | 서구26.7-중구23.5 | 11.99% | 안전 |
| 〃 | 중구23.5-유성21.7 | 7.66% | 안전 |
| 〃 | 유성21.7-대덕18.2 | 16.13% | 안전 |
| 코호트(2년 내, 시점 비교) | 2018 24.9-2019 24.4 | 2.01% | 묶음(<4%) → 「두 코호트는 비슷한 수준」, 2020은 비교 자체를 안 함 |
| 코호트(창 없음, 「섞은 첫 계산」 화면) | 2019 27.6-2020 17.4 | 36.96% | 안전 |
| 〃 | 2020 17.4-2021 8.1 | 53.45% | 안전 |
| 04-3 인구 만명당 밀도(이 편 x축) | 중구596.9-서구592.3 | 0.77% | 묶음(<4%) → 「위 묶음, 1위 단정 금지」 |
| 〃 | 서구592.3-동구537.8 | 9.20% | 안전 |
| 〃 | 동구537.8-대덕512.7 | 4.67% | 헤지 |
| 〃 | 대덕512.7-유성509.6 | 0.60% | 묶음(<4%) |
| 개방서비스명 식품접객 3종(절대값, 순위 인접 아님 — 참고) | 일반음식점60,899-휴게음식점14,545 | 76.12% | 참고(2·3위는 통신판매업·담배소매업, 제과점영업은 25위) |
| 〃 | 휴게음식점14,545-제과점영업1,685 | 88.42% | 참고(위와 동일 사유) |
| 잔차(\|값\|, 화면 표) | 동구5.3-대덕3.7 | 30.19% | 안전 |
| 〃 | 대덕3.7-중구2.5 | 32.43% | 안전 |
| 〃 | 중구2.5-서구1.0 | 60.00% | 안전 |
| 〃 | 서구1.0-유성0.1 | 90.00% | 안전(동구가 가장 크게 벗어난다는 것을 가장 얇은 이 쌍도 뒷받침) |

계산은 표시값 그대로 — 「28 vs 27 = 1%p」로 쓰지 않는다. 동구-서구 마진은 반올림 전 정밀값(575/2,023=28.423%, 1,269/4,746=26.738%)으로 계산해도 5.93%로 표시값 5.99%와 같은 판정(헤지)이다. 04-3 밀도 4쌍은 04-3 근거 절과 동일(재확인만, 04-3 편의 판정을 바꾸지 않는다). 대본 L140(축자)·L152(축자)이 이 판정을 그대로 따른다.

**산점도 두 축의 시점·모집단(FI1)** — 계약 ⑥이 x축을 지정한 것은 집필자 결함이라 계약은 그대로 두고 여기서 밝힌다:

| 축 | 파일 | 모집단 | 시점 |
|---|---|---|---|
| x(밀도) | `shops_2026-06_clean_gu_category.csv`(정제 후 79,957행) | 대전 5개 구 상가업소(04-3 분모) | 업소 2026-06 · 인구 2026-07 |
| y(폐업률) | `license.csv`(260,856행 중 2019 코호트) | 2019년 인허가 5개 구 | 인허가 2019년 · 관측 종료 2021-12-30 |

x축 인구 원표(2026-07 기준, 대전광역시 통계 「대전의 통계」 첫 화면, 확인일 2026-09-04): https://www.daejeon.go.kr/sta/index.do

두 축은 시점이 7년 다르다 — 2019년 시점의 밀도는 이 저장소에 없어 만들 수 없고, 값·결론은 이 사실로 바뀌지 않는다(발화 L149, 축자).

**산점도·잔차(집필자 계산, 원자료는 04-3 밀도 표 + 이 편 구별 2019 코호트 2년내 폐업률 표)**: x=인구 만명당 업소 수(중구596.9·서구592.3·유성509.6·동구537.8·대덕512.7, `assets/data/daejeon/README.md` 「04-3 분모」 절, 중구-서구 마진 0.77%로 위 묶음 — 어느 쪽이 1위인지 이 편에서도 단정하지 않는다) · y=2019 코호트 2년 내 폐업률(위 표). `gawk`로 최소제곱 회귀 재계산 — 평균 x=549.86·평균 y=23.70, 상관계수 **r=0.5059**(≈0.50), 회귀식 y=-2.8774+0.048335x. 잔차(실제−예측, 소수 1자리): 서구 26.7−25.752=**+0.9** · 유성 21.7−21.755=**-0.1** · 중구 23.5−25.975=**-2.5** · 동구 28.4−23.119=**+5.3** · 대덕 18.2−21.905=**-3.7**. |잔차| 순: 동구5.3 > 대덕3.7 > 중구2.5 > 서구0.9 > 유성0.1 — 대본·slides·notes가 전부 이 순서를 따른다(**중구를 「가장 붐비는」·「가장 크게 벗어난」으로 부르지 않는다** — 중구는 밀도 5구 중 서구와 묶여 1위를 단정할 수 없고, |잔차|도 세 번째로 작다). 이 편의 「상식과 반대」 지점: 전체 상관은 양(+, 붐빌수록 폐업률도 오르는 경향)이라 상식과 같은 방향이지만, 밀도가 다섯 구 중 중간쯤인 동구가 잔차 +5.3으로 그 흐름에서 가장 크게 벗어나 있다 — 「가장 붐비는 곳이 가장 위험하다」가 아니라 **「중간쯤 붐비는 곳이 가장 위험했다」**가 이 자료가 실제로 보여주는 반대 지점이다.

**앤스컴 4중주 · 아이스크림-익사 사고(FJ1, 근거 URL)**: `assets/sources.md`에 등재된 두 항목만 썼다(확인일 2026-09-05) — 아이스크림-익사 교란(Hyndman & Athanasopoulos, *Forecasting: Principles and Practice* 3판 §7.8): https://otexts.com/fpp3/causality.html · 앤스컴 4중주(1973): https://en.wikipedia.org/wiki/Anscombe%27s_quartet · Autodesk Research 「Same Stats, Different Graphs」: https://www.research.autodesk.com/publications/same-stats-different-graphs . 앤스컴은 「같은 상관계수, 다른 그림」까지만(수치 나열 금지 조항 준수, 4개 데이터셋의 평균·분산·r값은 대본에 옮기지 않았다), 아이스크림-익사는 예시로만(실제 통계 수치 없음). `slides.md`의 `two` 슬라이드에는 「앤스컴 4중주」의 숫자를 넣지 않는다(§0.18-2, `two` 종류는 `src` 슬롯이 없다 — 말로만). 이론 구간 대전·자치구·인물 이름 0회(검사: `grep -n "대전\|동구\|서구\|중구\|유성구\|대덕구"` 대상 줄 범위 이론 절만).

**기관명 발화(FA6)**: L88 발화를 「대전시 인허가업소 정보」에서 「인허가 자료」로 정정 — 이 장의 slides `src`(「인허가업소 정보 — author-c/probe-dj/3b/data/license.csv」)에 「대전」이 없어, 발화가 src에 없는 발행 주체를 덧붙이는 것이었다(§0.14 예외는 화면 속 출처를 가리키며 부르는 경우만 허용, 이 장은 해당 없음).

**대장 밖 사실**: 0건(이번 rev에서 웹으로 새로 가져온 외부 사실 없음, 앤스컴·아이스크림 모두 기존 대장에 있던 항목).

**자가측정(§0.4-a, 총량 산식 하나, FN2)**: 정본은 `notes.md` 「검사 로그」의 `count_script.py` 실행 결과(첫 명령)와 「화면 지시」 절의 태그 표(줄·유형·초·전환·소계)다 — 아래는 그 두 정본을 그대로 대입한 현재 값이다(값이 바뀌면 검사 로그·이 문단을 함께 갱신한다). 화면 지시 12개 전부에 `조작: <유형> · 전환: 예/아니오` 두 칸을 붙였다(전환 = 직전 화면 지시와 다른 화면으로 넘어감). **합계 공백포함: 5928**. 총량 = 5928÷250(23.71분) + 태그 표 소계 합 304초÷60(5.07분) + chapter 전환 3장 합쳐 0.5분(편당 10초) = 29.28분 → 25~30 판정 통과(여유 43초). 시연 clock = 시연 발화 3,490자÷250(13.96분) + 시연 소계 288초÷60(4.80분) = 18.76분 → 반올림 19분. `minutes` = 도입2 + 이론6 + 시연19 + 정리2 = 29.
