재현 패키지 — 보고서1 「산업별 실질부가가치 시나리오 전망과 인력수급 시사점」 5장 전망 결과(2026-10 정비판)
이 묶음은 5장의 수치(시나리오별 전산업 전망, 바텀업·통제 총량·정합화, 36·62·69 분류 간 일관성, 산업별 전망과 성장 요인 분해, 기존 전망·이전 판 대비 변화)와 한국고용정보원 전달 엑셀 형식의 재현본·비교 카드 자료를 데이터 입수 → 분석 → 결과 도출 세 단계로 다시 계산한다.
2026-10 정비판. 이전 판은 4장의 바텀업·총량 전망을 동결 입력으로 받아 정합화 이후 단계만 계산하였다. 정비판은 3장 정비 결과(외생 6종, BOKDPM 기준선)로 바텀업·통제 총량 전망을 이 패키지 안에서 다시 계산하고 정합화한다. 이전 판과 달라진 점은 네 가지이다.
- 외생 6종: 3장 정비판(실질금리 1차 차분, 인력수급 전망 기반 노동공급, 인구·교역비용·S3 레버 연결, 장기값을 정비한 BOKDPM 기준선).
- 바텀업 드리프트 재설정: 차분 VARX의 장기 성장률(표본 2000–2025 평균, 산업 합계 3.32%)을 모든 산업에서 같은 폭 δ = 1.52%p 낮추어, 산업 합계의 장기 성장률을 BOKDPM 잠재성장률(1.8%)에 맞춘다. 산업 간 성장 격차와 외생·동학 계수는 바꾸지 않는다.
- 통제 총량: 기준선 = BOKDPM 실질GDP 전망(잠재성장률 1.8% 수렴), 시나리오 간 차이 = 총량 VARX(수준·산업연관표·VARX)의 S1 대비 비율. 이전 판은 총량 VARX 전망을 그대로 썼다. 수준 명세의 총량 VARX는 자기 시차 계수의 합이 1보다 작아 10년 전망에서 성장률이 기계적으로 낮아지므로(정비판 외생에서 연 1.7%→1.2%), 장기 총량 경로로 쓰기 어렵다.
- 기존 전망 결합 가중치: 같은 유사표본외 검증으로 다시 골라 w = 0.4(이전 판 0.45).
마지막 단계의 검증 셀이 정비판 기록 산출물(data/published/, 2026-10 정비 실행에서 동결)과 핵심 수치를 대조하고, 이전 판 전달본(_신규.xlsx)이 이전 판 전망으로 재현되는지도 확인한다.
결과 요약(62분류 합, 정합화 후, 조 원·%)
| 시나리오 | 2035 | 연평균 2025–35 | 이전 판 2035 | 이전 판 연평균 | 2035 변화(%) |
|---|---|---|---|---|---|
| S1 기준 | 2,609 | 1.82 | 2,689 | 2.13 | -3.0 |
| S2 공급제약 | 2,606 | 1.81 | 2,650 | 1.98 | -1.7 |
| S3 제약완화 | 2,612 | 1.83 | 2,709 | 2.20 | -3.6 |
| S4 기술도약 | 2,608 | 1.81 | 2,741 | 2.32 | -4.9 |
| S5 지정학 | 2,610 | 1.82 | 2,664 | 2.03 | -2.0 |
| 항목 | 정비판 | 이전 판 |
|---|---|---|
| 바텀업 62 S1 연평균(%) | 2.52 | 4.88 |
| 바텀업 62 S1 연평균, 드리프트 재설정 전(%) | 4.00 | — |
| 통제 총량 S1 연평균(%) | 1.91 | 2.49 |
| 비례계수 62 S1 2035(통제 총량 ÷ 바텀업) | 0.934 | 0.766 |
| 시나리오 범위 2035(조 원) | 6.3 | 90.4 |
| 전달 템플릿 수준 2035(조 원) / 연평균 2025–35(%) | 2,797 / 1.80 | 2,880 / 2.10 |
바텀업과 통제 총량의 괴리(62분류 S1 연평균)는 표본 평균 성장률 효과 1.48%p, 구성 효과 0.32%p,
외생·동학과 기준선의 차이 0.28%p로 나뉜다(gap_decomposition.csv). 같은 외생에 이전 판 절차를 적용한 결과와 정비판 절차의 비교는 다음과 같다(S1).
| 절차 | 바텀업 연평균(%) | 총량 연평균(%) | 정합화 2035(조 원) | 정합화 연평균(%) | 비례계수 2035 |
|---|---|---|---|---|---|
| 이전 판 절차(재설정 없음, 총량 VARX, w=0.45) | 4.00 | 1.39 | 2,534 | 1.52 | 0.786 |
| 정비판 절차(재설정, BOKDPM 기준선, w=0.40) | 2.52 | 1.91 | 2,609 | 1.82 | 0.934 |
폴더 구조
s5-results/
├─ README.md 이 문서
├─ requirements.txt 검증한 패키지 버전
├─ config.py 경로·상수(명세, 드리프트 재설정 목표 1.8%, w)·SHA-256·정비판 기록 수치(PUBLISHED)·이전 판 수치(PREVIOUS)
├─ run_all.py 01→02→03 노트북을 순서대로 실행하고 output/run_log.txt 기록
├─ 01_입수.ipynb 입력 대조(SHA-256)·분기 자료·외생 경로·BOKDPM 기준선·기존 전망 점검, 이전 판 요약 → data/interim/
├─ 02_분석.ipynb 기존 전망 성장인자, 결합 가중치 검증, 바텀업(드리프트 재설정), 통제 총량, 정합화, 괴리 분해·절차 비교,
│ 시나리오 차이의 외생별 분해, 산업별 성장 요인 분해(10절) → output/
├─ 03_결과.ipynb 5장 표 1–7·그림 1–4, 이전 판 대비 표, 전달 엑셀 형식 재현본·카드 자료(성장 요인 분해 포함) + 검증 셀
├─ src/
│ ├─ gva_results.py 정합화·통제 총량(BOKDPM)·요약·총계·전달 엑셀·카드 자료 함수
│ └─ varx_engine.py 산업 VARX 추정·전망(드리프트 재설정 포함), 결합 가중치 검증, 성장 요인 분해(선형 SHAP)
├─ data/
│ ├─ inputs/ prev_keis_va_62.csv(기존 전망 추출본), template_62_VA_v1.xlsx(전달 템플릿), upstream/(분기 수준·외생·산업연관·BOKDPM 실질GDP)
│ ├─ published/ 정비판 기록 산출물(검증 기준)
│ ├─ published_prev/ 이전 판 공표 산출물(비교·이전 판 전달본 재현 점검)
│ └─ interim/ 01·03이 만드는 중간 산출물
└─ output/ 02·03이 만드는 최종 산출물
실행 방법
bash
pip install -r requirements.txt
python run_all.py
전체 실행은 약 15초 걸린다. config.py와 각 노트북 첫 셀은 OpenBLAS·OpenMP 스레드를 1로 고정한다(일부 Windows 환경에서 다중 스레드가 연립방정식 풀이를 크게 느리게 만든다). 결과에는 영향이 없다.
VAF_SOURCE_DIR=<원 프로젝트 폴더>를 주면 01_입수.ipynb 3절이 원본 엑셀(기존 전망 2024–2034판)을 다시 추출해 동결 CSV와 대조한다.
계산 요약
시나리오 $s$, 연도 $t$, 산업 $i$에 대하여
- 바텀업 $\hat y_{i,s,t}$: 차분·산업연관표·VARX(4장 선택)를 2000Q1–2025Q4로 적합하고 상수항을 $c \leftarrow c - (I-\sum_l A_l)\,\delta\,\mathbf 1$으로 재설정한 뒤, 3장 외생 경로로 2026Q1–2035Q4를 재귀 전망한다. $\delta$ = (표본 산업 합계 평균 성장률 − 1.8%)/4(분기). 추정한 값이 아니라 3장 정상상태(잠재성장률)에서 정한 값이다.
- 통제 총량의 성장인자 $g^{M}{s,t} = \dfrac{GDP^{BOKDPM}_t}{GDP^{BOKDPM}$}}\cdot\dfrac{AGG_{s,t}}{AGG_{S1,t}
- 기존 전망 성장인자 $g^{P}{t} = KEIS}/KEIS_{2025}$, 결합 $g_{s,t} = \exp[\,w\ln g^{P{t} + (1-w)\ln g^{M}\,]$, $w = 0.4$
- 정합화 $VA_{i,s,t} = T_{s,t}\,\hat y_{i,s,t} / \sum_j \hat y_{j,s,t}$, $T_{s,t} = (\sum_i VA^{실적}{i,2025})\,g$
정합화는 비례 벤치마킹이다. 같은 연도·시나리오의 모든 산업에 같은 비례계수를 곱하는 결정론적 조정이며, 산업 구성비는 바텀업 그대로 두고 합계만 통제 총량에 맞춘다. 가중최소자승(계층 예측) 사영과는 다른 절차이다.
산업별 성장 요인 분해(02 10절)
전망 갱신 카드(forecast-va-2025-2035.html)의 요인 분해 막대와 자동 해설이 쓰는 자료이다. 62분류 바텀업(드리프트 재설정 후) S1 전망의 2025Q4→2035Q4 로그 성장(×100, %p)을
과거추세(상수항)·산업 동학(자기·교차 시차)·외생 6종의 기여로 정확히 나눈다(선형 SHAP; 외생 기여 = 그 분기의 계수 × 외생값, 시차를 거친 전파는 동학에 귀속).
계산식은 이전 판 분해(scratchpad/shap_decompose.py, 6장 패키지의 선형 SHAP)와 같고, 정비판 외생과 드리프트 재설정 계수를 쓴다. 산출물은 output/shap_62.csv(전체 자릿수)·shap_62.json(소수 둘째 자리, 카드 형식)·shap_check.csv(점검 4종)이며,
va_detail_62.json의 산업별 shap과 최상위 exog·shap_meta가 같은 값을 담는다.
| 요인(62개 산업) | 정비판 평균 절대 기여(%p) | 이전 판 평균 절대 기여(%p) |
|---|---|---|
| 합계(10년 로그 성장) | 21.77 | 36.97 |
| 과거추세 | 23.53 | 29.02 |
| 산업 동학 | 14.21 | 18.61 |
| 외생 6종 합(절댓값 합) | 3.30 | 33.42 |
| 그중 실질금리 | 0.06 | 25.19 |
이전 판 분해에서 가장 컸던 실질금리 기여(산업 평균 +20.0%p, 최대 53.8%p)는 실질금리를 1차 차분으로 넣은 정비판에서 사라지고(최대 0.16%p), 외생 기여는 유가(석탄·석유제품 +6.21%p)가 가장 크다. 정비판 전망의 산업 간 차이는 대부분 과거추세와 산업 동학에서 온다. 최종 전망은 2035년에 모든 산업을 같은 비례계수(0.934)로 맞추므로, 통제 총량 맞춤의 효과는 모든 산업에서 −6.84%p로 같다. 과거추세는 재설정 전보다 10(1−ΣA)δ %p 작다(δ = 연 1.52%p). 기여는 과거 공행 관계에 따른 분해이며 인과 효과가 아니다.
검증
03_결과.ipynb 마지막 셀이 88개 항목을 대조하며 모두 통과한다. 정비판 기록 산출물(정합화 전망·요약·총계, 바텀업 두 판, 통제 총량, 보고서2 입력, 카드 자료, 성장 요인 분해)은 행 단위로, 핵심 수치(시나리오별 2035년·연평균, 바텀업·총량 연평균, 비례계수, w와 검증 RMSE, 전달 템플릿 수준 전산업, 산업별 연평균 상·하위, 카드가 쓰는 성장 요인 대표 수치)는 표기 자릿수의 반올림 범위로 대조한다.
성장 요인 분해는 성분의 합 = 합계, 합계 = 분해 경로의 10년 로그 성장, 분해 경로의 연간 합 = 바텀업 전망(bottomup_annual_62.csv), 과거추세의 재설정분 = −10(1−ΣA)δ를 함께 점검한다.
이전 판 전달본(_신규.xlsx)은 이전 판 공표 전망(published_prev/forecast_annual_62.csv)으로 같은 채움 논리를 실행해 상대 10⁻⁹ 안에서 재현되는지 확인한다.
검토가 필요한 쟁점
- 시나리오 간 차이가 크게 줄었다. 정비판의 2035년 시나리오 범위는 6.3조 원으로 이전 판(90.4조 원)의 1/10에 못 미친다. 이전 판에서 시나리오를 가른 것은 주로 실질금리 수준 경로였다(실질금리가 오르는 시나리오일수록 성장률이 높게 계산되었다). 차분 투입에서는 레버가 감쇠하는 일시 충격이므로 2035년의 수준 차이가 작고, 남는 차이는 인구 레버(노동공급)와 유가 수준(영구 수준차), 총량 VARX의 반응에서 생긴다. 그 결과 S4(기술도약)가 S1보다 조금 낮고 S5(지정학)가 S1보다 조금 높다. 외생별로 나누면(02 9절, 총량 VARX, 2035년 합계 기준) S4의 차이(-0.09%)는 세계수요(-0.08%)·실질환율(-0.05%)에서, S5의 차이(+0.08%)는 유가(+0.04%, 바텀업 62는 +0.16%)에서 가장 크게 생긴다. 총량 VARX의 세계수요 계수는 동시항이 양(+)이지만 시차까지 더하면 음(−)에 가까워 일시적인 해외수요 충격의 효과가 상쇄되고, 유가 계수가 양(+)인 산업이 많아 유가가 오르는 시나리오가 높게 계산된다(6장 진단의 공행 문제). S2·S3의 차이는 주로 인구 레버(취업자 수, 총량 VARX -0.22%·+0.23%)에서 온다. 시나리오 설계(지속 충격, 잠재성장 경로 레버)와 유가 공급충격 분리는 후속 과제이다.
- 결합 가중치 검증. 정비판 외생에서 검증 구간 최소는 w = 0.4이지만, 시험 구간(2023–2025)에서는 결합이 모형 단독보다 오차가 4.8% 크다(이전 판은 -7.0%). 실질금리를 차분으로 넣은 모형의 시험 구간 오차가 줄었기 때문이다. 선택 규칙은 유지하였으나 기존 전망 결합의 근거가 약해졌다. 또한 $w$는 산업별 로그수준에서 고르고 전산업 성장인자 결합에 쓴다는 점은 이전 판과 같다.
- 드리프트 재설정의 성격. 공통 폭의 절편 보정이므로 산업 간 상대 성장률은 장기적으로 바뀌지 않지만, 동학의 전이 과정 때문에 정합화 후 산업 값은 재설정하지 않을 때와 최대 수 % 다르다(36분류 1%대, 69분류 4% 안팎). δ는 표본 평균과 공식 잠재성장률의 차이로 정한 값이며 추정치가 아니다. 쇠퇴 산업(석탄·석유제품 등)은 같은 폭만큼 감소율이 커진다.
- 수준 기준의 차이. 전망 파일의 전산업은 ECOS 연쇄가격 산업 부가가치의 합(2025년 2,178조 원), 통제 총량은 BOKDPM 실질GDP의 성장인자, 전달 엑셀은 KEIS 템플릿 수준(2023년 2,247조 원)을 쓴다. 전달 엑셀의 연평균은 템플릿과 전망 파일의 산업 구성비가 달라 전망 파일과 조금 다르다.
- 분류별 산업 값의 차이. 세 분류의 전산업 합계는 같지만 같은 산업이라도 분류마다 별도 VARX로 전망되므로 값이 다르다(
table3_consistency.csv). 분류별 값을 섞어 쓰지 않아야 한다. - 원고와 전달본. 원고 5장·포털 카드·전달 엑셀은 2026-10-08에 정비판으로 교체하였다(전달 엑셀은 서식본의 값만
output/sector62_VA_2025-2035_재현.xlsx와 같게 바꾼_신규_정비판.xlsx). 이 패키지는 전달문서 폴더의 파일을 바꾸지 않는다.
정정 기록
- 2026-10-08 성장 요인 분해 추가: 02 10절·03 표 7과 검증 17개 항목을 더하고, 분해 산출물(
shap_62.csv·shap_62.json)과 분해를 채운va_detail_62.json을data/published/에 기록하였다. 다른 기록 산출물은 바이트 단위로 같다. - 2026-10 정비: 위 네 가지 변경을 반영하여 정비판 기록 산출물을
data/published/에 동결하였다. 이전 판 공표 산출물과 이전 판의 동결 입력(바텀업·총량 전망)은data/published_prev/로 옮겼다. 이전 판 패키지의 쟁점(바텀업 "연 5.86%"의 지표 혼동, 원고의 결합 단계 서술, 공표 파일의 소수 셋째 자리 차이, 69분류 파일의 성격)은 이전 판 보관본 README에 남아 있다.
R 사용
R은 쓰지 않는다. 비례 벤치마킹, 방정식별 정규 사전 사후평균(VARX), 엑셀 작성은 모두 numpy·pandas·openpyxl로 구현한다.
출처
- 원 코드:
industry_pipeline/reconcile.py·build_total_series.py·run_grid.py·run_forecast.py,scratchpad/validate_shrink_w.py·fill_2025_2035_va.py·build_va_detail.py·shap_decompose.py - 기존 전망: 한국고용정보원 「경제성장 및 산업별 실질부가가치 전망(2024–2034)」 62분류 부가가치·총산출(불변 백만 원)
- 단위: 십억 원(전망 파일)·백만 원(전달 엑셀), 2020년 연쇄가격
- 포털: https://aiforalab.com/gva-scenario-2025-2035/report-gva/s5-results/