# -*- coding: utf-8 -*-
"""한치록·김덕파(2018) 「주세 과세체계 개편의 경제적 효과 분석: 가정용 맥주를 중심으로」 재현
 원 논문 구성:
  2장 출고가격↔소비자가격 관계  → [재현A] 카스 출고가(세후) → CPI 맥주(가정) 전가
  3장 맥주 수요함수(AIDS/QUAIDS, 제품·용기별 스캐너) → [재현B] 집계 맥주 탄력성 + [재현C] 국산/수입 대체
      (원 논문 핵심인 3제품×용기 AIDS는 닐슨/칸타 스캐너 필요 → 협회 확보 후 완전재현)
  4장 산업연관(2014 IO표) → [설계] 최신 2020 실측표로 유발효과 갱신(별도)
 원 논문 결과(참고): 자체가격탄력성 수입프리미엄 -4.8~-6.0, 국산코어 -1.8~-1.9, 국산프리미엄 -0.2~-1.0
                    교차: 국산가격1%↑→수입판매 +3.1~3.7%, 수입가격1%↑→국산판매 +1.0~1.4% (수입이 더 탄력적)
"""
import sys, io, json
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
import numpy as np, pandas as pd, statsmodels.formula.api as smf
B='C:/Temp/주류세/공개데이터'

def num(s): return pd.to_numeric(pd.Series(s).astype(str).str.replace(',','',regex=False),errors='coerce')

# ================= 재현A: 2장 출고가→소비자가 전가 (카스 → CPI 맥주 가정) =================
print('===== [재현A] 2장 출고가격→소비자가격 전가 (국산코어=카스) =====')
cass=pd.read_csv(B+'/DART/cass_monthly.csv')
cass['ym']=cass.year*100+cass.month
cpi=pd.read_csv(B+'/한국은행_ECOS/CPI_품목별_소주맥주_200601_202512.csv')
cpi_b=cpi[cpi.품목=='맥주'][['시점','값']].rename(columns={'시점':'ym','값':'cpi_beer'})
m=pd.merge(cass[['ym','year','month','price500','cost','juse','edu']], cpi_b, on='ym', how='inner').sort_values('ym')
m['tax']=m.juse+m.edu
m['ln_ship']=np.log(m.price500); m['ln_cpi']=np.log(m.cpi_beer)
m['d_ln_ship']=m.ln_ship.diff(); m['d_ln_cpi']=m.ln_cpi.diff()
m=m.dropna(subset=['d_ln_ship','d_ln_cpi'])
# 전가: 소비자물가 변화가 출고가 변화에 반응하는 탄력 (누적: 당월+시차)
m['d_ln_ship_l1']=m.d_ln_ship.shift(1)
r1=smf.ols('d_ln_cpi ~ d_ln_ship', data=m).fit(cov_type='HC1')
r2=smf.ols('d_ln_cpi ~ d_ln_ship + d_ln_ship_l1', data=m.dropna()).fit(cov_type='HC1')
pt_cum=r2.params['d_ln_ship']+r2.params['d_ln_ship_l1']
print(f'출고가→소비자가 전가(당월) 탄력 = {r1.params["d_ln_ship"]:.3f} (t={r1.tvalues["d_ln_ship"]:.2f})')
print(f'출고가→소비자가 전가(당월+1개월 누적) = {pt_cum:.3f}')
print(f'해석: 출고가 1% 변화 → 가정용 맥주 CPI {r1.params["d_ln_ship"]:.2f}% (동행), 누적 {pt_cum:.2f}%')

# ================= 재현B: 3장 집계 맥주 수요함수 (연간, 국세 출고량 + 물가) =================
print('\n===== [재현B] 3장 맥주 수요함수 — 집계 자체가격탄력성 (연간) =====')
g=pd.read_csv(B+'/국세청_국세통계/주세신고_주종별_제조수입_2006_2025.csv')
g['값']=num(g['값'])
bt=g[(g.주종=='맥주')&(g.지표=='출고량')].pivot_table(index='연도',columns='구분',values='값')
bt['국산']=bt['합계']-bt['수입분']; bt['수입']=bt['수입분']
bt=bt.reset_index().rename(columns={'합계':'전체'})
# 연 CPI 맥주(가정) 평균
cpi_b['yr']=(cpi_b.ym//100); cy=cpi_b.groupby('yr').cpi_beer.mean().reset_index().rename(columns={'yr':'연도'})
# 국내 실질 프록시 소득: 사용 안 하고 추세로 통제(간이)
d=pd.merge(bt,cy,on='연도',how='inner')
d=d[(d.연도>=2006)&(d.연도<=2024)].copy()
d['ln_q']=np.log(d['전체']); d['ln_p']=np.log(d.cpi_beer); d['t']=d.연도-2006
mB1=smf.ols('ln_q ~ ln_p', data=d).fit(cov_type='HC1')
mB2=smf.ols('ln_q ~ ln_p + t', data=d).fit(cov_type='HC1')
print(f'(무통제)   ε_맥주전체 = {mB1.params["ln_p"]:+.2f} (t={mB1.tvalues["ln_p"]:.2f})')
print(f'(추세통제) ε_맥주전체 = {mB2.params["ln_p"]:+.2f} (t={mB2.tvalues["ln_p"]:.2f})')
print('  ※ 원 논문 국산코어 자체가격탄력성 -1.8~-1.9(수요체계). 집계·단일식은 대체효과 미포함→절댓값 작음.')

# ================= 재현C: 3장 국산 vs 수입 대체 (핵심 정성결과) =================
print('\n===== [재현C] 3장 국산/수입 맥주 — 점유율·대체 (종량세 2020 자연실험) =====')
bt['수입점유율']=bt['수입']/bt['전체']*100
sh=bt[['연도','전체','국산','수입','수입점유율']]
sh=sh[(sh.연도>=2013)&(sh.연도<=2024)]
print(sh.round(1).to_string(index=False))
pre=sh[(sh.연도>=2017)&(sh.연도<=2019)].수입점유율.mean()
post=sh[(sh.연도>=2021)&(sh.연도<=2023)].수입점유율.mean()
print(f'\n수입맥주 점유율: 종량세 前(2017-19) {pre:.1f}% → 後(2021-23) {post:.1f}%  (변화 {post-pre:+.1f}%p)')
print('  해석: 종량세(2020)로 종가세 하 수입맥주 과세 우위가 해소 → 논문 예측(국산/수입 불공정 시정 시 국산 유리)과 부합' if post<pre
      else '  주의: 수입 점유율이 하락하지 않음 → 코로나·수입다변화 등 교란 점검 필요')

# 저장
out=dict(
  passthrough_ship_to_cpi=round(float(r1.params['d_ln_ship']),3),
  passthrough_cum=round(float(pt_cum),3),
  beer_elast_notrend=round(float(mB1.params['ln_p']),3),
  beer_elast_trend=round(float(mB2.params['ln_p']),3),
  import_share_pre=round(float(pre),2), import_share_post=round(float(post),2),
  paper_ref=dict(수입프리미엄="-4.8~-6.0",국산코어="-1.8~-1.9",국산프리미엄="-0.2~-1.0")
)
json.dump(out,open(B+'/문헌/han2018_replication.json','w',encoding='utf-8'),ensure_ascii=False,indent=2)
sh.round(2).to_csv(B+'/문헌/han2018_import_share.csv',index=False,encoding='utf-8-sig')
print('\n저장: 문헌/han2018_replication.json, han2018_import_share.csv')
print(json.dumps(out,ensure_ascii=False))
