재현 패키지 — 보고서1 「산업별 실질부가가치 시나리오 전망」 2장 데이터

이 묶음은 2장의 데이터 구축 전 과정을 데이터 입수 → 분석 → 결과 도출 세 단계로 다시 계산한다. 한국은행 국민계정 36개 산업 분기 실질부가가치(2020년 연쇄가격)를 산업연관표 비중으로 62개 산업에 배분하고, 신산업 7개를 분화해 69개 산업 패널을 만들며, 36개 산업 실질값만으로 연쇄가중 총부가가치를 재현한다. 마지막 단계의 검증 셀이 계산 결과를 공표 산출물·공표 수치와 대조하며, 하나라도 다르면 실행이 멈춘다.

폴더 구조

s2-data/ ├─ README.md 이 문서 ├─ requirements.txt 검증한 패키지 버전 ├─ config.py 경로·상수·스위치(ONLINE·FULL)·스냅샷 SHA-256·공표 수치(검증 기준) — 모든 경로는 이 폴더 기준 상대경로 ├─ run_all.py 01→02→03 노트북을 순서대로 실행하고 output/run_log.txt 기록 ├─ 01_입수.ipynb 스냅샷 무결성·형태 검증, (ONLINE=1) ECOS·KOSIS 재수집 대조 → data/interim/ ├─ 02_분석.ipynb 36→62 배분·시변 몫·62→69 분화·총량 패널·IO 연계·연쇄가중 재현 → output/ ├─ 03_결과.ipynb 표 1–5·그림 1–2 + 공표 산출물·수치 대조(검증 셀) ├─ src/gva_data.py 계산 함수(노트북은 이 함수만 호출) ├─ data/ │ ├─ inputs/ 공개 원천 스냅샷 9개 + PROVENANCE.md(출처·통계표 코드·수집일) │ ├─ crosswalk_62.json KEIT62 ↔ BOK36 ↔ IO 상품중분류(83) 대조표(본 연구 설계) │ ├─ carveout_rules.csv 62→69 분화 규칙 7건(본 연구 설계) │ ├─ published/ 공표 산출물 사본(검증 기준): levels_62·69·agg, 배분표, 시변 몫, IO 연계, 재현 검증 자료 │ ├─ external/ (선택) 산업연관표 통합소분류 원본 xlsx를 두는 자리 — 배포 묶음에 없음 │ └─ interim/ 01이 만드는 중간 산출물 └─ output/ 02·03이 만드는 최종 산출물

실행 방법

bash pip install -r requirements.txt python run_all.py

기본 실행은 data/inputs/의 스냅샷만 읽으므로 인증키와 인터넷 연결이 필요 없고, 약 30초 안에 끝난다. JupyterLab에서 01_입수.ipynb부터 차례로 열어 위에서 아래로 실행해도 같은 결과가 나온다.

스위치

환경변수 기본 동작
ONLINE=1 0 01의 6절에서 ECOS(200Y103·200Y104·200Y108·271Y120·271Y122)와 KOSIS(101/DT_1F02001, 388/TX_38803_A016A)를 다시 조회해 스냅샷과 공통 관측을 비교하고(data/interim/online_diff.csv), 02의 8절에서 재수집 자료로 62 패널과 이차전지 몫을 다시 계산해 차이를 보인다. 수정 공표에 따른 차이는 보고만 하고 멈추지 않는다. 인증키는 환경변수 API_KEY_BOK(ECOS), API_KEY_KOSIS(KOSIS)에서만 읽는다
FULL=1 0 이 장에는 5분을 넘는 단계가 없으므로 결과에 영향이 없다(모든 계산을 항상 다시 수행한다)

```bash

예: 원천 재수집 대조(PowerShell은 $env:ONLINE="1" 형식)

ONLINE=1 API_KEY_BOK=... API_KEY_KOSIS=... python run_all.py ```

data/external/에 한국은행 산업연관표 「투입산출표(생산자가격) 통합소분류」 xlsx 4개(2020 실측, 2021–2023 연장)를 두면 01의 7절이 전기장비(37x) 부가가치를 다시 추출해 스냅샷과 대조한다(파일명 형식은 config.IO_SMALL_XLSX).

입력과 산출물

단계 입력 산출물
01 입수 data/inputs/*.csv, crosswalk_62.json, carveout_rules.csv data/interim/va36_real_q.csv, va36_nominal_q.csv, snapshot_check.csv, (ONLINE) online_diff.csv·online_*.csv
02 분석 interim, inputs, 설계표 levels_62.csv, mapping_62_official.csv, share_battery.csv, renew_gen_actual.csv, share_renew.csv, levels_69.csv, carve_log.csv, levels_agg.csv, io_linkage_62.csv, io_linkage_69.csv, recon_total_q.csv, recon_total_a.csv
03 결과 output의 위 파일, data/published/ table1_panels.csv ~ table5_recon.csv, fig1_shares.png, fig2_recon.png, verification.csv

계산 요약

검증

03_결과.ipynb 마지막 셀이 47개 항목을 대조한다.

허용오차는 공표 자릿수의 반올림 범위(소수 d자리이면 0.5×10⁻ᵈ)이고, 파일 대조는 부동소수점 오차 범위(10⁻⁶ 십억원 이하)이다.

정정 기록과 쟁점

범위에서 제외한 것 — 월별 패널

월별 실질부가가치(repo2/db/gva_monthly.sqlite, 혼합주기 상태공간 시점분해)는 이 패키지에 넣지 않았다. 이유는 다음과 같다.

  1. 별도 후속연구의 70개 산업(MECE) 분류이며, 보고서1의 산업모형·전망(4–5장)은 분기 62·69 패널만 쓴다(원 노트북의 '분기만 사용, 월별 미경유').
  2. DB의 latent_monthly_va 표는 열 구성(date·ind_id·va_level·va_growth)이 보관된 코드(04_mf_statespace.py, logva 열을 추가로 기록)와 달라, 검증 기준으로 삼을 공표본과 생성 코드의 대응을 확정할 수 없다. 포털의 69개 산업 월별 뷰어를 만든 코드도 프로젝트에서 찾지 못했다.
  3. 재현에 KOSPI 산업별 주가지수·서비스업생산지수·월별 외생변수 등 이 장의 분기 패널과 무관한 원자료가 추가로 필요하다.

R 사용 여부

R은 쓰지 않는다. 이 장의 계산(비중 배분, 비율 지표, 연쇄지수, 행렬 집계)은 pandas·numpy로 충분하며 R에만 표준 구현이 있는 기법이 없다.

출처