재현 패키지 — 보고서1 「산업별 실질부가가치 전망 2025–2035」 7장 인력수급 시사점

이 묶음은 7장의 산업별 노동수요(취업자) 전망을 데이터 입수 → 분석 → 결과 도출 세 단계로 다시 계산한다. 36개 산업 × 10년(2026–2035) × 5개 시나리오(S1–S5)의 취업자 1,800개 값과 시나리오 합계 50개가 대상이다.

2026-10 정비판. 보고서1은 거시 기준선을 다시 작성하였다. BOKDPM의 장기 정상상태를 현재 여건에 맞추어 고치고(잠재성장률 1.8%, 물가목표 2%, 실질유가 일정), 실질금리 외생 투입을 1차 차분으로 바꾸었으며, 외생 경로에 전달되지 않던 시나리오 레버를 연결한 뒤 5장의 산업 전망과 정합화를 다시 계산하였다. 이 판은 그 결과인 5장 정비판 최종 전망을 투입해 노동수요를 다시 계산한 것이다. 취업계수의 기준 수준·추세·계수 경로를 정하는 방법과 취업자·부가가치 이력 자료는 바꾸지 않았다.

마지막 단계의 검증 셀이 세 산출물을 모두 대조하며, 하나라도 다르면 실행이 멈춘다.

폴더 구조

s7-labor/ ├─ README.md 이 문서 ├─ requirements.txt 검증한 패키지 버전 ├─ config.py 경로·방법 상수·입력 SHA-256·공표 수치(PUBLISHED: 정비판, PREVIOUS: 이전 판)·인력수급 전망 비교 기준·실행 스위치 ├─ run_all.py 01→02→03 노트북을 순서대로 실행하고 output/run_log.txt 기록 ├─ 01_입수.ipynb 고정 입력 검증(SHA-256·구조), 연간 집계, 5장 원본 대조, ONLINE=1이면 공개 원천과 대조 → data/interim/ ├─ 02_분석.ipynb 대분류 취업계수·기준 수준·추세·계수 경로, 주 산출물, 이전 판·최초 판 재현, 명세 비교, 판본 비교 → output/ ├─ 03_결과.ipynb 원고 표·그림, 이전 판·인력수급 전망과의 비교표, 포털 게시본 대조(ONLINE=1), 검증 셀 ├─ src/labor_demand.py 계산 함수(노트북은 이 함수만 호출) ├─ data/ │ ├─ inputs/ 고정 입력 4종과 PROVENANCE.md(출처·수집 시점·동일성 확인 기록) │ ├─ section_map_36_19.csv 36개 산업 → 한국표준산업분류 대분류 19개 대응표(본 연구 설계) │ ├─ published_prev/ 이전 판(2026-10-08 판): 투입 va36_reconciled_annual_prev.csv, 산출 labor_demand_viewer_data_prev.json │ ├─ published/ 최초 판 검증 기준: labor_demand_viewer_data_v0_pre-reconciliation.json(2026-08-04 게시 파일) │ └─ interim/ 01이 만드는 중간 산출물(ONLINE=1이면 내려받은 포털 파일 포함) └─ output/ 02·03이 만드는 최종 산출물

실행 방법

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

JupyterLab에서 01_입수.ipynb부터 차례로 열어 위에서 아래로 실행해도 같은 결과가 나온다. 기본 실행은 인터넷 연결과 인증키 없이 10초 안팎에 끝난다. 포털의 노트북 화면(실행 결과 포함)은 ONLINE=1로 실행한 기록이다.

스위치(환경변수) 동작
ONLINE=1 01_입수.ipynb 6절에서 포털 통합 번들을 내려받아 주 투입의 원본과 고정 입력이 같은지 확인하고(번들이 아직 이전 판 원본을 담고 있으면 그 사실을 보고한다), 최초 판 투입 자료의 SHA-256을 확인하며, ECOS(취업자 901Y027, 실질부가가치 200Y104)를 다시 받아 비교한다. 포털의 노동수요 JSON(현행 주소와 최초 판 주소)을 내려받아 03_결과.ipynb에서 현행 파일은 정비판 주 산출물과, 최초 판 파일은 최초 판 게시 파일과 비교한다. 포털이 아직 이전 판이나 최초 판을 현행 주소로 게시하고 있으면 그 사실을 보고할 뿐 실행을 멈추지 않는다. ECOS 호출에는 환경변수 API_KEY_BOK가 필요하며, 없으면 ECOS 대조만 건너뛴다. 인증키 값은 출력하지 않는다.
FULL=1 02_분석.ipynb 7절의 명세 비교를 16개에서 96개(기준 수준 3종 × 추세 기간 4종 추가)로 넓힌다.

bash ONLINE=1 FULL=1 python run_all.py # bash $env:ONLINE="1"; $env:FULL="1"; python run_all.py # PowerShell

압축은 Windows 탐색기·7-Zip·macOS 기본 도구 또는 python -m zipfile -e s7-labor-repro.zip .로 푼다. 내려받은 뒤 SHA256SUMS.txt로 파일이 온전한지 확인할 수 있다.

config.py의 INPUT_SHA256·SOURCE_SHA256·PUBLISHED는 손으로 적지 않았다. 연구진의 갱신 도구가 5장 원본에서 주 투입을 추리고, 해시를 다시 계산하고, 01·02를 실행한 산출물에서 공표 수치를 계산해 기록한 뒤 01→02→03 전체를 다시 실행한다. 5장 산출물이 다시 바뀌면 같은 도구를 한 번 실행해 갱신한다. PREVIOUS는 이전 판의 공표 수치를 옮긴 값이며 갱신 대상이 아니다.

입력과 산출물

단계 입력 산출물
01 입수 data/inputs/emp_section_q.csv, va36_hist_q.csv, va36_reconciled_annual.csv(주 투입), scenario_viewer_39q_data.json(최초 판 투입), data/published_prev/va36_reconciled_annual_prev.csv(이전 판 투입), data/section_map_36_19.csv data/interim/emp_section_annual_sa.csv, emp_section_annual_nsa.csv, va36_hist_annual.csv, va36_recon_annual.csv, va36_recon_prev_annual.csv, va36_scen_annual.csv
02 분석 interim, 대응표, data/published_prev/labor_demand_viewer_data_prev.json, data/published/labor_demand_viewer_data_v0_pre-reconciliation.json 주 산출물 labor_demand_viewer_data.json, labor_demand_36.csv, labor_actual_2025_36.csv · 이전 판 재현 labor_demand_viewer_data_prev.json, labor_demand_36_prev.csv · 최초 판 재현 labor_demand_viewer_data_v0_pre-reconciliation.json, labor_demand_36_v0.csv · coef_history.csv, coef_params.csv, coef_path.csv, spec_comparison.csv, vintage_comparison.csv
03 결과 output의 위 파일, interim table1_totals.csv, table2_change_s1.csv(표 2·3), table4_scenario_range_2035.csv, table5_coef_params.csv, table6_vs_prev_scenario.csv, table7_vs_prev_section.csv, table8_keis_comparison.csv, table9_vintages_2035.csv, fig1_total_paths.png, fig2_change_s1.png

계산 요약

검증

03_결과.ipynb의 마지막 셀이 다음 47개 항목을 확인한다. 허용오차는 공표 값의 반올림 단위(0.1천 명)의 절반인 0.05천 명이다.

2026-10-08 실행에서 47개 항목이 모두 통과하였다.

중장기 인력수급 전망과의 비교

고용노동부·한국고용정보원 「2024~2034 중장기 인력수급 전망」(2026-02-12)은 취업자가 2024→2029년 36.7만 명 늘고 2029→2034년 30.3만 명 줄어, 2024→2034년에는 6.4만 명 늘어난다고 전망하였다. 03_결과.ipynb 표 8은 같은 기간 본 연구 노동수요의 증감을 나란히 둔다(만 명). 본 연구의 전망은 인력수급 전망에 맞추어 조정하지 않았으며, 이 비교는 두 전망의 방향과 크기를 대조하기 위한 것이다.

기간 인력수급 전망 정비판 S1(실적 기준) 정비판 S1(계수 경로 기준) 정비판 S1–S5(실적 기준) 이전 판 S1(실적 기준)
2024→2029 +36.7 +17.2 +7.2 +14.2 ~ +22.4 +31.1
2029→2034 −30.3 −5.2 −5.2 −13.7 ~ −3.1 +26.3
2024→2034 +6.4 +11.9 +2.0 +7.7 ~ +17.6 +57.4

정정 기록

시나리오 이전 판 2035 정비판 2035 차이 차이율(%) 이전 판 증감 2025→2035 정비판 증감 2025→2035
S1 기준 29,040.1 28,560.2 −479.9 −1.65 +358.6 −121.3
S2 제약+위기 28,988.9 28,517.2 −471.7 −1.63 +307.4 −164.3
S3 제약완화 29,079.6 28,595.3 −484.3 −1.67 +398.1 −86.2
S4 기술도약 29,110.8 28,517.5 −593.3 −2.04 +429.3 −164.0
S5 지정학 29,046.2 28,614.9 −431.3 −1.49 +364.7 −66.6

단위: 천 명. 증감의 기준은 2025년 실적(19개 대분류 합계 28,681.5천 명)이다.

시나리오 최초 판 2035(천 명) 이전 판(2026-10-08 판) 2035(천 명) 차이(천 명)
S1 기준 36,284.8 29,040.1 −7,244.7
S2 제약+위기 35,703.4 28,988.9 −6,714.4
S3 제약완화 36,569.3 29,079.6 −7,489.6
S4 기술도약 36,450.6 29,110.8 −7,339.8
S5 지정학 36,076.5 29,046.2 −7,030.3

재구성 기록

2026-08-04 게시 자료(최초 판)를 만든 프로그램은 프로젝트 폴더(scratchpad, repo, repo2, industry_pipeline, _통합자료, aiforalab 포함), 이전 작업 기록, 포털 서버 어디에서도 찾지 못했다. repo/code/backcast_labor.py는 VARX 외생변수(취업자 증가율)의 과거 결측을 복원하는 프로그램으로, 이 자료와 관계가 없다. 따라서 이 패키지의 계산은 뷰어 설명문(2023–2025년 평균 취업계수, 2013–2025년 연간 로그변화율 추세, 경제활동인구조사 19개 대분류, ECOS 901Y027)과 게시 수치에서 방법을 역산해 새로 작성했다. 설명문에 없는 선택(취업자 계열, 평균 방식, 추세 추정 방식, 기준 연도)은 대안 명세를 비교해 정했다(02_분석.ipynb 7절, output/spec_comparison.csv). 비교한 16개 명세(FULL=1이면 96개) 가운데 분기 계절조정 취업자 · 3개년 합계 비율 · 로그 최소제곱 추세 · 기준 연도 2024 조합 하나만 1,800개 값을 모두 재현하며, 재현본은 게시 파일과 바이트 단위로 같다. 원계열 취업자를 쓰면 농림어업(최대 5.1천 명)·공공행정(2.8천 명) 등에서 차이가 남는다. 이전 판과 정비판은 이 방법을 그대로 쓴다.

알려진 문제

  1. 대분류 공통 계수와 제조업 내 재배분. 세부산업 취업자 실측치가 없으므로 같은 대분류 안의 산업은 같은 계수를 쓰고, 취업자는 부가가치 비중대로 나뉜다. 정비판 최종 전망에서 컴퓨터·전자·광학기기의 제조업 내 부가가치 비중은 2025년 36.5%에서 2035년 S1 53.9%로 오르므로, 이 산업의 취업자는 2025년 1,597.7천 명에서 2035년 2,588.6천 명으로 990.8천 명(62.0%) 늘어난다. 같은 기간 제조업 전체는 423.7천 명 늘고 나머지 12개 제조업은 567.2천 명 줄어든다. 노동생산성이 제조업 평균보다 높은 산업의 부가가치 증가가 평균 계수로 환산되므로, 이 산업과 제조업 전체의 취업자 증가는 과대 산정되었을 가능성이 크다. 세부산업 수준의 검증은 할 수 없으며, 원고에서 이 산업의 수치를 인용할 때 이 한계를 함께 적어야 한다.
  2. 추세 연장의 근거가 약한 대분류가 있다. 13개년 로그 선형 추세를 10년 연장한다. 건설업(R² 0.07)·숙박음식점업(0.01)·보건복지(0.00)·예술스포츠(0.08)·공공행정(0.09)은 추세가 계수 변동을 거의 설명하지 못한다. 농림어업(+1.03%/년)과 수도·하수(+3.43%/년)는 계수가 상승하는 추세를 그대로 연장한다.
  3. 기준 수준과 실적 계수의 차이. 기준 수준은 2023–2025년 평균을 2024년에 둔 값이므로 계수 경로가 2025년 실적 계수에서 이어지지 않는다 (예: 농림어업 2025년 실적 41.1명/10억 원, 경로상 2026년 44.5명/10억 원). 정비판 전산업 취업자는 2025년 실적 28,681.5천 명에서 S1 2026년 28,526.2천 명으로 155.3천 명 줄어드는데, 같은 추세를 2025년 실적 계수에서 출발시키면 2026년은 28,682.4천 명으로 2025년과 거의 같다. 2025→2026년 감소는 모두 기준 연도 설정에서 생기는 차이(156.2천 명)로 설명된다. 같은 이유로 2024년의 계수 경로 기준 값(28,581.6천 명)은 실적(28,482.2천 명)과 다르며, 인력수급 전망과 비교할 때 2024년에서 출발하는 증감이 기준에 따라 달라진다(중장기 인력수급 전망과의 비교 참조).
  4. 계절조정 계열의 재추정. 경제활동인구조사 계절조정 계열은 새 자료가 공표될 때마다 과거 값이 다시 추정된다. 고정 입력(2026-10-08 수집)으로는 기록된 수치가 그대로 재현되지만, 다른 시점에 ONLINE=1로 받은 자료는 값이 조금 다를 수 있다. 01의 6절은 차이를 보고만 하고 실행을 멈추지 않는다.
  5. T·U 제외. 가구 내 고용활동(T)과 국제 및 외국기관(U) 취업자(2025년 9.1만 명)는 대응 부가가치가 없어 전망에 포함하지 않는다. 전산업 합계는 19개 대분류 기준이다 (2025년 실적 28,681.5천 명, 전체 취업자 28,769.0천 명).
  6. 최초 판 투입 자료의 생성 프로그램을 확인하지 못했다. scenario_viewer_39q_data.json은 포털 게시 파일을 고정 입력으로 쓰며, 최초 판 재현에만 쓴다. 현재 프로젝트의 산업 전망 산출물(정합화 전·후 판, repo/ch5)과 값이 다르다. 주 산출물에는 영향이 없다.

R 사용

R은 쓰지 않는다. 로그 선형 추세는 numpy 최소제곱(numpy.polyfit)으로 계산하며, Python 표준 구현으로 충분하다.

출처