# -*- coding: utf-8 -*-
"""연간 2재화 AIDS 접합확장 — 국산 vs 수입 맥주, 2006~2024 (종량세기 포함)
 물량 Q: 국세 출고량(국산=합계−수입, 수입=수입분), 2006~2024 (2023 국세 결측→제외)
 가격 P: 2006~2019 = 국세 과세표준(종가세)÷물량 (실단가 ₩/㎘)
        2020~2024 = 2019 실단가에 지수 접합 → 국산: PPI 맥주, 수입: 수입물가지수(맥주)
 접합가정(투명): 수입물가지수 기준연 2020.12=100 → 수입 원화단가 2019→2020 ≈ flat, 2021~ 지수증가율 적용
 지출 X=P×Q로 구성 → 지출몫 → LA-AIDS(동차성) → Marshallian 탄력성. 2006~2019 vs 2006~2024 대조.
"""
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/주류세/공개데이터'
g=pd.read_csv(B+'/국세청_국세통계/주세신고_주종별_제조수입_2006_2025.csv')
g['값']=pd.to_numeric(g['값'].astype(str).str.replace(',',''),errors='coerce')
def pv(ind): return g[(g.주종=='맥주')&(g.지표==ind)].pivot_table(index='연도',columns='구분',values='값')
vol=pv('출고량'); tax=pv('과세표준_종가세')
# 물량
d=pd.DataFrame(index=range(2006,2025))
d['q_imp']=vol['수입분']; d['q_dom']=vol['합계']-vol['수입분']
# 과표기반 실단가(2006~2019)
d['p_imp']=(tax['수입분']/vol['수입분'])
d['p_dom']=((tax['합계']-tax['수입분'])/(vol['합계']-vol['수입분']))
# 지수(연평균)
ppi=pd.read_csv(B+'/한국은행_ECOS/PPI_품목별_소주맥주_200601_202512.csv')
ppi=ppi[ppi.품목=='맥주'].copy(); ppi['yr']=ppi.시점//100; PPI=ppi.groupby('yr').값.mean()
imp=pd.read_csv(B+'/한국은행_ECOS/수입물가_맥주_200601_202512.csv')
imp['yr']=imp.시점//100; IMPI=imp.groupby('yr').값.mean()   # 2020=Dec만, 2021~ 연평균
p_dom19=d.loc[2019,'p_dom']; p_imp19=d.loc[2019,'p_imp']
for y in range(2020,2025):
    if y in PPI.index: d.loc[y,'p_dom']=p_dom19*(PPI[y]/PPI[2019])
    if y in IMPI.index: d.loc[y,'p_imp']=p_imp19*(IMPI[y]/IMPI.get(2020,100.0))
d=d.dropna(subset=['q_imp','q_dom','p_imp','p_dom'])   # 2023 국세결측 자동 제외
d['x_imp']=d.p_imp*d.q_imp; d['x_dom']=d.p_dom*d.q_dom; d['X']=d.x_imp+d.x_dom
d['w_imp']=d.x_imp/d.X; d['w_dom']=d.x_dom/d.X
d['lnP']=d.w_imp*np.log(d.p_imp)+d.w_dom*np.log(d.p_dom)
d['ln_XP']=np.log(d.X)-d.lnP; d['ln_rel']=np.log(d.p_imp/d.p_dom); d['t']=d.index-2006
print('수입 지출몫 w_imp 추이:')
print('  '+', '.join('%d:%.3f'%(y,d.loc[y,'w_imp']) for y in d.index))

def aids(df):
    m=smf.ols('w_imp ~ ln_rel + ln_XP',data=df).fit(cov_type='HC1')
    g_ii=m.params['ln_rel']; b=m.params['ln_XP']; wi=df.w_imp.mean(); wd=df.w_dom.mean()
    e_ii=-1+(g_ii-b*wi)/wi; e_dd=-1+(g_ii+b*wd)/wd
    e_id=(-g_ii-b*wd)/wi; e_di=(-g_ii+b*wi)/wd
    return m,dict(gamma=round(g_ii,3),tg=round(m.tvalues['ln_rel'],2),beta=round(b,3),
        e_imp=round(e_ii,2),e_dom=round(e_dd,2),cross_dom_on_imp=round(e_id,2),cross_imp_on_dom=round(e_di,2),
        eta_imp=round(1+b/wi,2),eta_dom=round(1-b/wd,2),wi=round(wi,3),n=int(m.nobs))

res={}
for lab,df in [('2006~2019(기존)',d[d.index<=2019]),('2006~2024(접합확장)',d)]:
    m,r=aids(df); res[lab]=r
    print('\n===== AIDS [%s] n=%d ====='%(lab,r['n']))
    print('  gamma=%s(t=%s) beta=%s'%(r['gamma'],r['tg'],r['beta']))
    print('  자체가격탄력성: 수입 %+.2f | 국산 %+.2f'%(r['e_imp'],r['e_dom']))
    print('  교차: 국산가↑→수입 %+.2f · 수입가↑→국산 %+.2f'%(r['cross_imp_on_dom'],r['cross_dom_on_imp']))
    print('  지출탄력성: 수입 %+.2f | 국산 %+.2f (평균 수입몫 %.3f)'%(r['eta_imp'],r['eta_dom'],r['wi']))
json.dump(res,open(B+'/문헌/han2018_aids_spliced.json','w',encoding='utf-8'),ensure_ascii=False,indent=2)
d.round(4).to_csv(B+'/문헌/han2018_aids_spliced_data.csv',encoding='utf-8-sig')
print('\n[대조] 원논문 수입 -4.8~-6.0/국산코어 -1.8~-1.9 · 접합은 근사(2020 수입물가 기준연·2023 결측)')
print('저장: 문헌/han2018_aids_spliced.json')
