{
 "형식": "brief",
 "no": 8,
 "slug": "b08-gg-population-shift",
 "title": "경기도 인구는 늘었다. 시군 10곳은 줄었다",
 "date": "2026-08",
 "workdir": "analysis",
 "steps": [
  {
   "name": "analyze",
   "script": "prep.py"
  }
 ],
 "outputs": {
  "ledger": "수치대장.csv",
  "html": "브리프.html",
  "raw": "analysis/raw.csv"
 },
 "sanity": {
  "key": "시군",
  "rows": 32,
  "columns": [
   "시군",
   "유형",
   "인구_2011",
   "인구_2025",
   "증감",
   "증감률",
   "최근증감",
   "방향바뀜"
  ],
  "no_nulls": true,
  "drift_pct": 20
 },
 "brief": {
  "관점": "비교",
  "방법": {
   "이름": "합계 분해",
   "왜": "도 전체 증가 179만 명은 <b>늘어난 21곳의 증가분(227만)에서 줄어든 10곳의 감소분(48만)을 뺀</b> 값이다. 총량 하나만 보면 상쇄된 48만이 계산에서 사라진다. 기사가 한 것처럼 상위 몇 곳을 되읽으면 순위표가 되는데, 그건 데이터 전달이지 분석이 아니다. 합계를 두 덩어리로 갈라 보면 «총량이 무엇을 상쇄한 값인가»가 나오고, 시군 합이 도 전체와 정확히 맞는지로 <b>스스로 검산</b>된다. 여기에 구간을 나눠(2011→2025 전체 · 2020→2025 최근) 방향이 바뀐 곳을 갈랐다."
  },
  "dek": "14년 사이 경기도 인구는 179만 명 늘었다. 그런데 31개 시군 중 10곳은 줄었고, 늘어난 곳 가운데 4곳도 최근 5년만 보면 증가가 멈췄다.",
  "chart": "analysis/chart.png",
  "chart_cap": "경기 31개 시군의 주민등록인구 증감(2011년 12월 → 2025년 12월, 만 명). 파란색이 늘어난 21곳, 붉은색이 줄어든 10곳이다. 마름모는 15년 전체로는 늘었지만 2020년 이후로는 줄어든 4곳을 가리킨다.",
  "chart2": "analysis/chart2.png",
  "chart2_cap": "「경기도 인구가 늘었다」는 두 덩어리의 차액이다. 늘어난 21곳이 더한 227만 명에서 줄어든 10곳이 잃은 48만 명을 뺀 것이 순증가 179만 명이다.",
  "body": [
   "경기도 주민등록인구는 <b>2011</b>년 말 <b>{{N02:,}}</b>명에서 <b>2025</b>년 말 <b>{{N03:,}}</b>명이 됐다. <b>14</b>년 사이 <b>{{N05}}%</b> 늘었다. 도 단위 총량만 보면 경기도는 커진 곳이다.",
   "그런데 이 증가는 <b>{{N01:,}}</b>개 시군이 고르게 커져서 생긴 값이 아니다. 인구가 늘어난 시군은 <b>{{N06:,}}</b>곳, 줄어든 시군은 <b>{{N07:,}}</b>곳이다. 늘어난 <b>{{N06:,}}</b>곳의 증가분은 <b>{{N08:,}}</b>명이고, 줄어든 <b>{{N07:,}}</b>곳의 감소분은 <b>{{N09:,}}</b>명이다. <b>두 덩어리의 차액이 경기도의 순증가 {{N04:,}}명이다.</b>",
   "여기서 한 걸음 더 간다. 두 덩어리를 상쇄하지 <b>않고</b> 그냥 더하면 <b>{{N28:,}}</b>명이 된다 — 이것은 실제로 이사한 사람 수가 아니라 <b>시군별 순증감의 절댓값을 더한 값</b>이다. 도 전체 총량으로 보이는 <b>{{N04:,}}</b>명은 그중 <b>{{N29}}%</b>다. <b>나머지는 늘어난 곳과 줄어든 곳이 서로를 지우면서 총량에서 빠졌다.</b> 시군 하나하나로 내려가면 쏠림이 더 뚜렷하다 — <b>{{N01:,}}</b>곳의 증감을 평균 내면 <b>{{N30:,.0f}}</b>명이지만, 딱 가운데에 선 시군은 <b>{{N31:,}}</b>명이다. 평균은 크게 는 몇 곳이 끌어올린 값이라, 절반의 시군은 평균 근처에도 없다.",
   "<b>늘어난 쪽도 고르지 않다.</b> 화성시 한 곳이 <b>{{N11:,}}</b>명 늘어, 순증가(증가분에서 감소분을 뺀 값)의 <b>{{N13:.1f}}%</b>를 혼자 만들었다. 김포시(<b>{{N14:,}}</b>명)와 용인시(<b>{{N15:,}}</b>명)를 더하면 세 곳이 순증가의 <b>{{N16}}%</b>다. 화성시 인구는 이 기간 <b>{{N12}}%</b> 늘었다 — 거의 두 배가 됐다.",
   "<b>줄어든 10곳은 한 부류가 아니다.</b> 감소 폭이 가장 큰 곳은 부천시로 <b>{{N17:,}}</b>명(<b>{{N18}}%</b>)이고, 안산시 <b>{{N19:,}}</b>명, 성남시 <b>{{N20:,}}</b>명이 뒤를 잇는다. 여기에 포천시·동두천시·연천군 같은 경기 북부도 함께 들어 있다. 이 표로는 두 부류 가운데 어느 쪽도 감소의 <b>원인</b>을 가릴 수 없다.",
   "<b>14년을 한 덩어리로 보면 지워지는 것도 있다.</b> 고양시는 그 기간 <b>{{N21:,}}</b>명 늘어 증가 시군에 들어가지만, <b>2020</b>년 말 이후로만 보면 <b>{{N22:,}}</b>명이다. 이렇게 방향이 바뀐 곳이 늘어난 <b>{{N06:,}}</b>곳 가운데 <b>{{N23:,}}</b>곳 있다. 다만 그중 의정부시와 가평군은 감소라기보다 정체에 가깝다 — 5년 동안 각각 <b>{{N26}}%</b>, <b>{{N27:.2f}}%</b> 움직였다. 지금 늘고 있는 곳과 예전에 늘었던 곳은 다르다."
  ],
  "sowhat": "「경기도 인구가 늘었다」는 문장은 <b>{{N01:,}}</b>개 시군 중 <b>{{N06:,}}</b>곳의 이야기이고, 그중에서도 세 곳이 순증가의 절반을 만든 이야기다. 나머지 <b>{{N07:,}}</b>곳에서는 주민등록인구가 <b>{{N09:,}}</b>명 줄었다. 총량은 이 두 덩어리를 상쇄해 하나의 숫자로 보여주기 때문에, 도 단위 지표만 보고 지역 수요를 가늠하면 줄어드는 곳이 계산에서 사라진다. 방향이 바뀐 <b>{{N23:,}}</b>곳처럼 <b>지금</b> 어디로 가고 있는지는 구간을 나눠 봐야 <b>보인다</b>. 다만 총인구 하나로는 어떤 수요도 직접 말할 수 없다 — 연령 구조와 생활인구가 함께 있어야 한다.",
  "정합": [
   {
    "말": "구성",
    "주장": "「경기도 인구가 늘었다」는 총량은, 늘어난 곳과 줄어든 곳이 서로를 지우고 남은 값이다",
    "근거": [
     "N08",
     "N09",
     "N28",
     "N29:몫"
    ],
    "한마디": "증가분 <b>{{N08:,}}</b>명과 감소분 <b>{{N09:,}}</b>명을 상쇄하지 않고 더하면 실제로 움직인 인구는 <b>{{N28:,}}</b>명이다. 총량 <b>{{N04:,}}</b>명은 그중 <b>{{N29}}%</b>다. 크기 두 개를 나란히 적는 것과 «몫»을 내는 것은 다른 일이고, 총량이 얼마를 지웠는지는 몫으로만 보인다."
   },
   {
    "말": "분포",
    "주장": "시군을 평균 하나로 묶으면 그 안의 격차가 보이지 않는다",
    "근거": [
     "N30",
     "N31:퍼짐"
    ],
    "한마디": "<b>{{N01:,}}</b>개 시군 증감의 평균은 <b>{{N30:,.0f}}</b>명인데 중앙값은 <b>{{N31:,}}</b>명이다. 평균이 중앙값보다 세 배 이상 크다는 것은 소수의 큰 증가가 평균을 끌어올렸다는 뜻이고, 절반의 시군은 평균 근처에도 없다는 뜻이다. 「늘어난 곳이 21곳」이라는 «개수»로는 이 폭이 안 나온다."
   },
   {
    "말": "구성",
    "주장": "순증가의 절반은 세 시가 만들었다",
    "근거": [
     "N11",
     "N13:몫",
     "N16:몫"
    ],
    "한마디": "화성시 한 곳이 순증가의 <b>{{N13:.1f}}%</b>, 김포·용인을 더한 세 곳이 <b>{{N16}}%</b>다. 늘어난 시군을 세는 것으로는 이 쏠림이 안 보인다 — 몫을 값으로 내야 「고르게 늘었다」와 갈린다."
   }
  ],
  "과정": "소재가 된 기사는 「화성·평택 웃고 수원·성남 울었다」로 네 곳을 들었다. 그 네 곳을 되읽으면 순위표가 된다 — 그건 데이터 <b>전달</b>이지 분석이 아니다. 그래서 31개 시군을 전부 받아 <b>도 전체 증가가 어떻게 만들어진 값인가</b>를 분해하는 쪽으로 방향을 잡았다. 증가분 합에서 감소분 합을 뺀 것이 순증가라는 항등식이라, 시군 합이 도 전체와 정확히 맞는지로 스스로 검산된다.\n\n처음에는 기사 제목대로 「경기도 인구 1422만 돌파」를 축으로 삼으려 했다. 그런데 표를 받아 보니 2025년 말 값이 달랐다 — 기사는 외국인을 포함한 총인구를 쓴 것으로 보이고 이 표는 내국인만 센다. <b>총량을 제목에 두는 것을 포기</b>하고 그 총량이 무엇으로 이루어졌는지로 방향을 틀었다.\n\n버린 각도도 적어 둔다. 연령별 분해는 같은 표로 가능하지만 브리프 04가 이미 그 축을 썼다. 외국인을 포함한 실거주 규모는 이 표로 불가능하고, 등록외국인 표는 지역코드 체계가 달라 이번엔 접었다. 증감의 원인(전입·전출)은 인구이동통계가 따로 있어야 한다.\n\n차트는 처음에 증감률(%)로 그렸다가 절대 인원으로 바꿨다. 비율로 그리면 하남·과천처럼 작은 도시가 화면을 지배해 「어디서 사람이 늘었나」가 안 보인다.",
  "source": "통계청 KOSIS 「행정구역(읍면동)별/5세별 주민등록인구(2011년~)」(tblId DT_1B04005N, 항목 T2 총인구수, 연령 「계」, 경기도 및 31개 시군, 2011~2025 각 연 12월 기준) · 2026-08-24 수집",
  "limit": "이 표는 <b>내국인만</b> 센다. 등록외국인이 많은 도시는 실제 거주 규모와 벌어지는데, 특히 <b>안산시</b>의 감소 폭은 내국인 기준이라는 점을 빼고 읽으면 안 된다. 주민등록은 <b>실제 거주지가 아니라 등록지</b> 기준이라 대학가·군부대처럼 등록과 거주가 어긋나는 지역은 값이 실제와 다르다. 증감의 <b>원인</b>(출생·사망·전입·전출)은 이 표로 가를 수 없다 — 이 글은 <b>얼마나 어디서</b>까지만 말한다. 일반구(수원 장안구 등)와 북부출장소는 빼고 <b>시·군 단위</b>로만 봤고, 2013년 승격한 여주시는 2011~2012년의 「여주군」을 이어 붙였다. 시군 31곳의 증감을 더한 값과 도 전체 증감은 정확히 같았다(<b>{{N10:,}}</b>명). 이 글은 <b>2011</b>년 말과 <b>2025</b>년 말 두 시점(그리고 <b>2020</b>년 말)을 견준 것이고, 그 사이 해마다 어떻게 움직였는지는 이 글의 원자료에 담지 않았다 — 「해마다 늘었다」처럼 매년의 방향을 말하려면 연도별 값을 함께 실어야 한다.",
  "chart_card": "analysis/chart2.png",
  "chart_card_cap": "늘어난 21곳이 더한 227만 명에서 줄어든 10곳이 잃은 48만 명을 뺀 것이 경기도의 순증가 179만 명이다.",
  "검증": [
   {
    "한계": "두 시점(2011·2025)만 견줬다 — 그 사이 해마다 어떻게 움직였는지는 이 글에 없다",
    "방향": "내려간다",
    "크기": [
     "N05",
     "N39",
     "N23",
     "N26",
     "N27"
    ],
    "판정": "결론을 좁혔다",
    "왜": "그래서 «중간 한 점»(2020년)을 넣어 구간을 갈라 봤다. 14년 전체로는 도 전체가 <b>{{N05}}</b>% 늘었는데, 최근 5년만 보면 <b>{{N39}}</b>% 다 — 방향은 같지만 속도가 다르다. 시군 단위로는 <b>{{N23}}</b>곳이 앞 구간과 최근 구간의 «방향이 뒤바뀌었고», 의정부(<b>{{N26}}</b>%)·가평(<b>{{N27}}</b>%)처럼 0에 붙어 있는 곳도 있다. 그래서 이 글은 「해마다 늘었다」처럼 매년의 방향을 말하지 않고, 두 시점 사이의 «순증감»과 «어디서»까지만 쓴다."
   },
   {
    "한계": "원자료의 «증감률» 칸을 그대로 쓰면 그 칸이 틀렸을 때 같이 틀린다",
    "방향": "모른다",
    "크기": [
     "N05",
     "N12",
     "N18",
     "N26",
     "N27"
    ],
    "판정": "결론이 선다",
    "왜": "본문에 실은 증감률 다섯 개는 원자료에서 «베끼지 않고» 각각의 분자·분모로 다시 계산한 값이다. 그렇게 해도 값은 하나도 달라지지 않았다 — 즉 원자료의 증감률 칸과 우리가 다시 계산한 값이 소수 둘째 자리까지 일치한다. 베낀 값은 「대장에 있다」는 것만 보증하지 「맞다」는 것을 보증하지 않는다."
   },
   {
    "한계": "이 표는 <b>내국인만</b> 센다 — 등록외국인이 많은 도시는 실제 거주 규모와 벌어진다",
    "방향": "모른다",
    "크기": [],
    "판정": "말하지 않는다",
    "왜": "특히 안산의 감소 폭은 내국인 기준이라는 점을 빼고 읽으면 안 된다 — <b>안산 한 곳</b>만 놓고 보면 외국인 주민이 빠진 만큼 실제 거주 규모보다 «적게» 잡히는 쪽이다. 그러나 이 글은 31개 시군을 함께 놓고 «어디가 늘고 줄었나»를 말하므로, 도시마다 외국인 증감이 서로 달랐다면 순위와 방향이 어느 쪽으로 움직일지 정해지지 않는다. 이 표에 외국인 칸이 없고 다른 표는 집계 정의와 시점이 달라 크기를 못 낸다."
   },
   {
    "한계": "주민등록은 <b>실제 거주지가 아니라 등록지</b> 기준이다",
    "방향": "모른다",
    "크기": [],
    "판정": "말하지 않는다",
    "왜": "대학가·군부대처럼 등록과 거주가 어긋나는 지역은 값이 실제와 다르다. 어긋난 폭을 재려면 거주 실태 조사가 필요한데 시군·연도 단위로 그런 표가 없다. 이 한계는 개별 시군 값에 걸리고, 「도 전체는 늘었는데 10곳은 줄었다」는 대비 자체를 뒤집지는 않는다."
   },
   {
    "한계": "증감의 <b>원인</b>(출생·사망·전입·전출)은 이 표로 가를 수 없다",
    "방향": "모른다",
    "크기": [],
    "판정": "말하지 않는다",
    "왜": "이 글은 «얼마나 어디서»까지만 말한다. 자연증가와 사회증가를 가르려면 인구동향과 이동통계를 붙여야 하고, 그러면 코드 체계가 다른 표를 결합하는 문제가 새로 생긴다. 원인을 적지 않은 것은 빠뜨린 것이 아니라 이 자료로 할 수 없어서다."
   },
   {
    "한계": "일반구·북부출장소를 빼고 <b>시·군 단위</b>로만 봤고, 여주는 2013년 승격 전의 「여주군」을 이어 붙였다",
    "방향": "모른다",
    "크기": [
     "N01",
     "N10"
    ],
    "판정": "결론을 좁혔다",
    "왜": "묶음을 잘못 잡으면 합이 안 맞는다. <b>{{N01}}</b>개 시군의 증감을 더한 값이 도 전체 증감과 정확히 같았다(<b>{{N10:,}}</b>명). 이 검산이 잡는 것은 <b>누락과 중복</b>이다. 잡지 못하는 것도 분명하다 — 두 시군의 값이 «서로 바뀌어» 들어가도 합계는 그대로다. 그래서 「31곳을 빠짐없이 한 번씩 셌다」까지가 이 값으로 서는 결론이고, 「각 시군에 옳게 배정됐다」는 여기서 나오지 않는다."
   },
   {
    "한계": "「움직인 인구」를 <b>순증감의 절댓값 합</b>으로 잰다 — 실제 이동자 수가 아니다",
    "방향": "모른다",
    "크기": [
     "N28",
     "N08",
     "N09"
    ],
    "판정": "결론을 좁혔다",
    "왜": "각 시군 안에서 전입과 전출은 이미 상쇄된 뒤의 값이라, 같은 수가 들어오고 나간 도시는 0으로 잡힌다. 그래서 <b>실제 이동자 수는 {{N28:,}}명 이상</b>이다 — 이 값은 «하한»이지 이동량 자체가 아니다(늘어난 몫 <b>{{N08:,}}</b> + 줄어든 몫 <b>{{N09:,}}</b>). 실제 이동자를 재려면 인구이동통계를 붙여야 하고, 그 표는 시군구 «내부» 이동이 섞여 있어 또 다른 보정이 필요하다. 그래서 이 글은 「얼마나 이동했나」가 아니라 「도 전체 한 값이 얼마나 상쇄된 결과인가」까지만 말한다."
   }
  ]
 },
 "_주석": {
  "rows": "31개 시군 + 경기도 전체 = 32행",
  "★유형": "raw.csv 의 「유형」 열이 시군(31)과 도전체(1)를 가른다. 대장의 aggsum:<열>:시군 이 도 전체를 빨아들이지 않게 하는 장치다 — B04 에서 정립.",
  "★항등식": "증가분 합 − 감소분 합 = 순증가. 이 글의 뼈대이고, 시군 합(1,792,720)이 도 전체 증감과 정확히 일치하는 것으로 검산했다."
 },
 "고친이력": [
   {
     "때": "2026-09-06",
     "무엇": "약점 표에서 검수 날짜표 세 곳을 걷어내고, 「다시 계산하게 «바꿨다»(2026-08-29)」를 「다시 계산한 값이다」로 고쳤다",
     "왜": "발행되는 것은 글이지 작업 일지가 아니다. 방법 서술은 남기고 변경 이력만 뺐다",
     "찾은곳": "우리"
   },
   {
     "때": "2026-09-06",
     "무엇": "글에 쓰던 내부 메모 기호(경고 표시)를 빼고, 「대장에 등록했다」처럼 우리끼리 쓰던 말을 독자의 말로 바꿨다. 소스 주석에 남아 있던 작업 메모도 걷었다",
     "왜": "매거진은 밖으로 나가는 글인데 내부 작업 문서의 표기가 그대로 실려 있었다 — 수치와 주장은 바뀌지 않았다",
     "찾은곳": "우리"
   }
 ]
}