2026-07-14 saved
This commit is contained in:
Vendored
BIN
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,471 @@
|
||||
"""
|
||||
================================================================================
|
||||
국제 유가 충격의 국내 소비자물가 품목별 전이 시차 분석
|
||||
- VAR 모형과 충격반응함수(IRF)를 이용한 다변량 시계열 분석
|
||||
- 분석 기간: 2015.01 ~ 2024.12 (월별, 120개 관측치)
|
||||
================================================================================
|
||||
|
||||
[분석 구조]
|
||||
독립변수 : WTI 국제유가 (로그)
|
||||
종속변수 : 에너지 / 식품 / 서비스 품목별 CPI (로그)
|
||||
통제변수 : 원/달러 환율 (로그)
|
||||
|
||||
품목별로 [유가, 환율, 해당 품목 CPI] 3변수 VAR을 각각 추정하고,
|
||||
유가 충격에 대한 각 품목의 반응(IRF)을 비교하여 전이 시차를 분석한다.
|
||||
"""
|
||||
|
||||
import io
|
||||
import urllib.request
|
||||
import warnings
|
||||
from pathlib import Path
|
||||
|
||||
import numpy as np
|
||||
import pandas as pd
|
||||
import matplotlib.pyplot as plt
|
||||
from matplotlib import rc
|
||||
|
||||
from statsmodels.tsa.stattools import adfuller, grangercausalitytests
|
||||
from statsmodels.tsa.api import VAR
|
||||
|
||||
warnings.filterwarnings("ignore") # 통계 경고 메시지 숨김 (결과 해석에 불필요)
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# 0. 한글 폰트 설정 (그래프 제목·라벨을 한글로 표시하기 위함)
|
||||
# ------------------------------------------------------------------------------
|
||||
|
||||
output_path = Path("./outputs")
|
||||
output_path.mkdir(parents=True, exist_ok=True)
|
||||
|
||||
rc('font', family='Nanum Gothic')
|
||||
plt.rcParams["font.family"] = "Nanum Gothic"
|
||||
plt.rcParams["axes.unicode_minus"] = False
|
||||
plt.rcParams["figure.dpi"] = 300
|
||||
plt.rcParams["savefig.dpi"] = 300
|
||||
|
||||
# 분석 기간 상수
|
||||
START, END = "2015-01", "2024-12"
|
||||
|
||||
|
||||
# ==============================================================================
|
||||
# 1. 데이터 수집
|
||||
# ==============================================================================
|
||||
def fetch_csv(url):
|
||||
"""URL에서 CSV를 받아 문자열로 반환하는 헬퍼 함수"""
|
||||
req = urllib.request.Request(url, headers={"User-Agent": "Mozilla/5.0"})
|
||||
return urllib.request.urlopen(req, timeout=30).read().decode()
|
||||
|
||||
|
||||
def load_wti():
|
||||
"""
|
||||
WTI 국제유가 (일별 → 월평균)
|
||||
출처: GitHub datasets/oil-prices (원출처: 미국 EIA)
|
||||
"""
|
||||
url = "https://raw.githubusercontent.com/datasets/oil-prices/main/data/wti-daily.csv"
|
||||
df = pd.read_csv(io.StringIO(fetch_csv(url)))
|
||||
df["Date"] = pd.to_datetime(df["Date"])
|
||||
# 일별 데이터를 '월초(MS) 기준 월평균'으로 집계
|
||||
monthly = df.set_index("Date").resample("MS").mean()
|
||||
return monthly.loc[START:END, "Price"].rename("wti")
|
||||
|
||||
|
||||
def load_fx():
|
||||
"""
|
||||
원/달러 환율 (월별)
|
||||
출처: GitHub datasets/exchange-rates (원출처: 미국 연준 계열)
|
||||
"""
|
||||
url = "https://raw.githubusercontent.com/datasets/exchange-rates/main/data/monthly.csv"
|
||||
df = pd.read_csv(io.StringIO(fetch_csv(url)))
|
||||
df = df[df["Country"] == "South Korea"].copy()
|
||||
df["Date"] = pd.to_datetime(df["Date"])
|
||||
fx = df.set_index("Date")["Exchange rate"]
|
||||
return fx.loc[START:END].rename("fx")
|
||||
|
||||
|
||||
def load_cpi():
|
||||
"""
|
||||
품목별 소비자물가지수 (월별)
|
||||
출처: 통계청 KOSIS, 지출목적별 소비자물가지수(2020=100)
|
||||
로컬에 업로드된 CSV 파일을 읽어서 처리한다.
|
||||
|
||||
[품목 매핑]
|
||||
에너지 <- '04 주택, 수도, 전기 및 연료'
|
||||
식품 <- '01 식료품 및 비주류음료'
|
||||
서비스 <- '11 음식 및 숙박'
|
||||
"""
|
||||
path = "./지출목적별_소비자물가지수_품목포함__2020100__20260713213203.csv"
|
||||
df = pd.read_csv(path, encoding="utf-8")
|
||||
|
||||
# 분석에 사용할 지출목적별 항목 지정
|
||||
mapping = {
|
||||
"04 주택, 수도, 전기 및 연료": "energy",
|
||||
"01 식료품 및 비주류음료": "food",
|
||||
"11 음식 및 숙박": "service",
|
||||
}
|
||||
|
||||
# YYYY.MM 형식의 월별 컬럼만 추출 (연간 집계 컬럼 '2023' 등은 제외)
|
||||
month_cols = [c for c in df.columns if "." in str(c) and len(str(c)) == 7]
|
||||
|
||||
records = {}
|
||||
for kor_name, eng_name in mapping.items():
|
||||
row = df[df["지출목적별"] == kor_name][month_cols] # 해당 품목 행 추출
|
||||
series = row.iloc[0].astype(float) # 값을 실수로 변환
|
||||
series.index = pd.to_datetime(series.index, format="%Y.%m") # 인덱스를 날짜로
|
||||
records[eng_name] = series
|
||||
|
||||
cpi = pd.DataFrame(records)
|
||||
# ★ KOSIS CSV는 월 컬럼 순서가 뒤섞여 있으므로 반드시 날짜순 정렬
|
||||
cpi = cpi.sort_index()
|
||||
return cpi.loc[START:END] # 분석 기간으로 자름
|
||||
|
||||
|
||||
# ==============================================================================
|
||||
# 2. 데이터 병합 및 전처리
|
||||
# ==============================================================================
|
||||
def build_dataset():
|
||||
"""세 데이터를 하나의 월별 데이터프레임으로 병합하고 로그 변환한다."""
|
||||
wti = load_wti()
|
||||
fx = load_fx()
|
||||
cpi = load_cpi()
|
||||
|
||||
# 인덱스(월)를 기준으로 병합
|
||||
data = pd.concat([wti, fx, cpi], axis=1)
|
||||
data = data.dropna() # 결측 있는 월 제거
|
||||
|
||||
print("=" * 60)
|
||||
print("[1] 데이터 병합 완료")
|
||||
print(f" 기간: {data.index[0].date()} ~ {data.index[-1].date()}")
|
||||
print(f" 관측치: {len(data)}개월, 변수: {list(data.columns)}")
|
||||
print(data.head(3).round(2))
|
||||
print()
|
||||
|
||||
# 로그 변환: 탄력성(% 반응) 해석 + 분산 안정화
|
||||
# IRF 해석이 '유가 1% 충격 -> CPI x% 반응' 형태가 됨
|
||||
log_data = np.log(data)
|
||||
return data, log_data
|
||||
|
||||
|
||||
# ==============================================================================
|
||||
# 3. 단위근 검정 (ADF Test)
|
||||
# ==============================================================================
|
||||
def adf_test(series, name):
|
||||
"""
|
||||
ADF(Augmented Dickey-Fuller) 검정
|
||||
귀무가설 H0: 단위근이 있다 (= 비정상 시계열)
|
||||
p < 0.05 이면 H0 기각 -> 정상(stationary) 시계열
|
||||
"""
|
||||
result = adfuller(series.dropna(), autolag="AIC")
|
||||
pval = result[1]
|
||||
verdict = "정상 (I(0))" if pval < 0.05 else "비정상 (단위근 존재)"
|
||||
print(f" {name:12s} | ADF통계량={result[0]:7.3f} | p값={pval:6.4f} | {verdict}")
|
||||
return pval
|
||||
|
||||
|
||||
def run_unit_root_tests(log_data):
|
||||
"""수준(level)과 1차 차분에 대해 각각 ADF 검정을 수행한다."""
|
||||
print("=" * 60)
|
||||
print("[2] 단위근 검정 (ADF Test)")
|
||||
print("-" * 60)
|
||||
print(" (a) 수준 변수 (log level)")
|
||||
for col in log_data.columns:
|
||||
adf_test(log_data[col], col)
|
||||
|
||||
print("\n (b) 1차 차분 변수 (log difference)")
|
||||
diff = log_data.diff().dropna()
|
||||
for col in diff.columns:
|
||||
adf_test(diff[col], f"d.{col}")
|
||||
print()
|
||||
return diff
|
||||
|
||||
|
||||
# ==============================================================================
|
||||
# 4. 품목별 VAR 모형 추정 + IRF + FEVD + Granger 인과성
|
||||
# ==============================================================================
|
||||
def analyze_item(log_data, item, item_kor, maxlags=12, irf_periods=12):
|
||||
"""
|
||||
특정 품목에 대해 [유가, 환율, 품목CPI] 3변수 VAR을 추정하고
|
||||
유가 충격에 대한 해당 품목 CPI의 반응(IRF)을 분석한다.
|
||||
|
||||
[모형 설정 — 수준(level) VAR]
|
||||
물가·유가·환율은 대부분 I(1) 비정상 시계열이지만, 차분하면 변수 간
|
||||
장기 균형관계(공적분) 정보가 사라진다. 특히 서비스 물가는 추세가 강해
|
||||
차분해도 정상성이 확보되지 않는다. 따라서 Sims, Stock & Watson(1990)이
|
||||
제시한 대로 '로그 수준' 변수로 VAR을 추정한다. 변수 간 공적분이 존재하면
|
||||
수준 VAR의 충격반응함수(IRF)는 일치추정량이 되므로, 유가-물가 전이 연구에서
|
||||
널리 사용되는 표준적 접근이다. 계절성은 월별 계절더미로 통제한다.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
item : 품목 영문명 ('energy'/'food'/'service')
|
||||
item_kor : 그래프에 쓸 한글명 ('에너지'/'식품'/'서비스')
|
||||
"""
|
||||
print("=" * 60)
|
||||
print(f"[3] VAR 분석 — {item_kor} 품목")
|
||||
print("-" * 60)
|
||||
|
||||
# (1) 분석 대상 변수 구성: 유가 -> 환율 -> 품목CPI 순서
|
||||
# Cholesky 분해 순서 = 외생성이 강한 변수부터 (유가가 가장 외생적)
|
||||
cols = ["wti", "fx", item]
|
||||
sub = log_data[cols].copy() # 로그 '수준' 변수 (차분하지 않음)
|
||||
|
||||
# (2) 월별 계절더미 생성 (1~11월, 12월은 기준월로 제외)
|
||||
# 식품·에너지 CPI의 계절성을 통제하기 위함
|
||||
seasonal = pd.get_dummies(sub.index.month, prefix="m", drop_first=True)
|
||||
seasonal.index = sub.index
|
||||
seasonal = seasonal.astype(float)
|
||||
|
||||
# (3) VAR 모형 생성 및 최적 시차 선택 (AIC 기준)
|
||||
model = VAR(sub, exog=seasonal) # 계절더미를 외생변수로 포함
|
||||
sel = model.select_order(maxlags=maxlags)
|
||||
lag = sel.aic # AIC가 최소가 되는 시차
|
||||
if lag == 0:
|
||||
lag = 1 # 최소 1시차는 확보
|
||||
print(f" 최적 시차(AIC 기준): {lag}")
|
||||
|
||||
results = model.fit(lag) # VAR 추정 (계절더미는 모형에 이미 포함)
|
||||
|
||||
# (4) 그랜저 인과성 검정: 유가 -> 품목CPI 방향
|
||||
print(f" 그랜저 인과성 검정 (유가 → {item_kor}):")
|
||||
gc = grangercausalitytests(sub[[item, "wti"]], maxlag=lag, verbose=False)
|
||||
pvals = [round(gc[i + 1][0]["ssr_ftest"][1], 4) for i in range(lag)]
|
||||
print(f" 시차별 p값: {pvals} (0.05 미만이면 인과성 유의)")
|
||||
|
||||
# (5) 충격반응함수(IRF) 계산
|
||||
irf = results.irf(irf_periods) # irf_periods개월까지 반응 추적
|
||||
|
||||
# 유가('wti') 충격에 대한 품목CPI(item)의 반응 추출
|
||||
# irf.irfs shape = (기간, 반응변수, 충격변수)
|
||||
wti_idx = cols.index("wti")
|
||||
item_idx = cols.index(item)
|
||||
response = irf.irfs[:, item_idx, wti_idx] # 유가충격 -> 품목 반응
|
||||
cum_response = irf.cum_effects[:, item_idx, wti_idx] # 누적 반응
|
||||
|
||||
# (6) 전이 지표 3종 계산
|
||||
# [중요] 우리 변수는 로그 '수준'이라 IRF는 누적되어 우상향한다.
|
||||
# 단일 지표(peak 시점)는 오해를 부르므로 3가지를 함께 본다.
|
||||
# ① onset : 충격 직후 1개월차 전이량 → '얼마나 빨리 반응이 시작되나'
|
||||
# ② mean_lag : 전이량 무게중심(가중평균 시점) → '전이의 평균 시차'
|
||||
# ③ cumulative : 12개월 누적 전이량 → '전이가 실제로 유의미한가'
|
||||
increments = np.diff(response) # 월별 증가분(=수준 IRF 기울기)
|
||||
months = np.arange(1, len(increments) + 1) # 1~12개월
|
||||
|
||||
onset = increments[0] # ① 1개월차 즉각 반응
|
||||
pos = np.where(increments > 0, increments, 0) # 양(+) 전이량만 (음수 왜곡 방지)
|
||||
mean_lag = (np.sum(months * pos) / np.sum(pos)) if np.sum(pos) > 0 else float("nan") # ②
|
||||
cumulative = float(np.sum(increments)) # ③ 12개월 누적 전이량
|
||||
|
||||
print(f" ▶ onset(1개월 즉각반응) = {onset:+.5f}")
|
||||
print(f" ▶ 평균 전이 시차(mean lag) = {mean_lag:.2f}개월")
|
||||
print(f" ▶ 12개월 누적 전이량 = {cumulative:+.5f}")
|
||||
print()
|
||||
|
||||
return {
|
||||
"item": item,
|
||||
"item_kor": item_kor,
|
||||
"results": results,
|
||||
"irf": irf,
|
||||
"response": response,
|
||||
"cum_response": cum_response,
|
||||
"onset": onset,
|
||||
"mean_lag": mean_lag,
|
||||
"cumulative": cumulative,
|
||||
"lag": lag,
|
||||
"cols": cols,
|
||||
}
|
||||
|
||||
|
||||
# ==============================================================================
|
||||
# 5. 시각화
|
||||
# ==============================================================================
|
||||
def plot_raw_series(data):
|
||||
"""원본 시계열 4개(유가·환율·품목별 CPI) 추이 그래프"""
|
||||
fig, axes = plt.subplots(2, 2, figsize=(12, 7))
|
||||
# fig.suptitle("원자료 시계열 추이 (2015–2024)", fontsize=15, fontweight="bold")
|
||||
|
||||
plots = [
|
||||
("wti", "WTI 국제유가 (달러/배럴)", axes[0, 0]),
|
||||
("fx", "원/달러 환율", axes[0, 1]),
|
||||
("energy", "에너지 CPI", axes[1, 0]),
|
||||
("food", "식품 CPI", axes[1, 1]),
|
||||
]
|
||||
for col, title, ax in plots:
|
||||
ax.plot(data.index, data[col], color="#333333", linewidth=1.2)
|
||||
ax.set_title(title, fontsize=12)
|
||||
ax.grid(True, alpha=0.3)
|
||||
|
||||
plt.tight_layout()
|
||||
plt.savefig("./outputs/01_원자료_시계열.png", bbox_inches="tight")
|
||||
plt.close()
|
||||
print(" 저장: 01_원자료_시계열.png")
|
||||
|
||||
|
||||
def plot_irf_with_ci(analyses):
|
||||
"""
|
||||
품목별 유가충격 IRF를 개별 패널로 그리고 95% 신뢰구간을 함께 표시한다.
|
||||
신뢰구간이 0을 포함하지 않는 구간 = 통계적으로 유의한 반응.
|
||||
"""
|
||||
fig, axes = plt.subplots(1, 3, figsize=(15, 4.5), sharey=True)
|
||||
# fig.suptitle("유가 충격에 대한 품목별 소비자물가 반응 (95% 신뢰구간 포함)",
|
||||
# fontsize=14, fontweight="bold")
|
||||
|
||||
colors = {"energy": "#c0392b", "food": "#e67e22", "service": "#16a085"}
|
||||
for ax, a in zip(axes, analyses):
|
||||
irf = a["irf"]
|
||||
wti_idx = a["cols"].index("wti")
|
||||
item_idx = a["cols"].index(a["item"])
|
||||
|
||||
resp = a["response"]
|
||||
# 신뢰구간(표준오차 기반, 약 95% = ±1.96 SE)
|
||||
stderr = irf.stderr()[:, item_idx, wti_idx]
|
||||
months = np.arange(len(resp))
|
||||
lower = resp - 1.96 * stderr
|
||||
upper = resp + 1.96 * stderr
|
||||
|
||||
ax.plot(months, resp, color=colors[a["item"]], linewidth=1.8, marker="o", markersize=3)
|
||||
ax.fill_between(months, lower, upper, color=colors[a["item"]], alpha=0.15) # 신뢰구간 음영
|
||||
ax.axhline(0, color="gray", linewidth=0.8, linestyle="--")
|
||||
ax.axvline(a["mean_lag"], color="gray", linewidth=0.8, linestyle=":") # 평균 전이 시차 표시
|
||||
ax.set_title(f"{a['item_kor']} (평균 전이 시차: {a['mean_lag']:.1f}개월)", fontsize=12)
|
||||
ax.set_xlabel("경과 개월")
|
||||
ax.grid(True, alpha=0.3)
|
||||
|
||||
axes[0].set_ylabel("소비자물가 반응")
|
||||
plt.tight_layout()
|
||||
plt.savefig("./outputs/04_품목별_IRF_신뢰구간.png", bbox_inches="tight")
|
||||
plt.close()
|
||||
print(" 저장: 04_품목별_IRF_신뢰구간.png")
|
||||
|
||||
|
||||
def plot_irf_comparison(analyses):
|
||||
"""품목별 유가충격 IRF를 한 그래프에 겹쳐서 전이 시차를 비교"""
|
||||
fig, ax = plt.subplots(figsize=(11, 6))
|
||||
|
||||
colors = {"energy": "#c0392b", "food": "#e67e22", "service": "#16a085"}
|
||||
for a in analyses:
|
||||
months = range(len(a["response"]))
|
||||
ax.plot(months, a["response"],
|
||||
marker="o", markersize=4, linewidth=1.5,
|
||||
color=colors[a["item"]],
|
||||
label=f"{a['item_kor']} (누적 {a['cumulative']:+.3f})")
|
||||
|
||||
ax.axhline(0, color="gray", linewidth=0.8, linestyle="--") # 0 기준선
|
||||
# ax.set_title("유가 충격에 대한 품목별 소비자물가 반응 (충격반응함수)",
|
||||
# fontsize=14, fontweight="bold")
|
||||
ax.set_xlabel("유가 충격 이후 경과 개월")
|
||||
ax.set_ylabel("소비자물가 반응 (로그 차분)")
|
||||
ax.legend(title="품목", fontsize=11)
|
||||
ax.grid(True, alpha=0.3)
|
||||
|
||||
plt.tight_layout()
|
||||
plt.savefig("./outputs/02_품목별_IRF비교.png", bbox_inches="tight")
|
||||
plt.close()
|
||||
print(" 저장: 02_품목별_IRF비교.png")
|
||||
|
||||
|
||||
def plot_monthly_increments(analyses):
|
||||
"""
|
||||
품목별 '월별 증가분'(수준 IRF의 기울기 = 그 달의 순수 전이량)을 그린다.
|
||||
수준 IRF는 우상향해서 전이 시차가 안 보이지만, 증가분으로 보면
|
||||
'언제 전이가 가장 활발한가'(=전이 시차)가 봉우리로 명확히 드러난다.
|
||||
"""
|
||||
fig, ax = plt.subplots(figsize=(11, 6))
|
||||
|
||||
colors = {"energy": "#c0392b", "food": "#e67e22", "service": "#16a085"}
|
||||
for a in analyses:
|
||||
inc = np.diff(a["response"]) # 월별 증가분
|
||||
months = range(1, len(inc) + 1) # 1개월차부터
|
||||
ax.plot(months, inc,
|
||||
marker="o", markersize=4, linewidth=1.5,
|
||||
color=colors[a["item"]],
|
||||
label=f"{a['item_kor']} (평균 전이 시차: {a['mean_lag']:.1f}개월)")
|
||||
|
||||
ax.axhline(0, color="gray", linewidth=0.8, linestyle="--")
|
||||
# ax.set_title("유가 충격의 월별 전이량 (수준 IRF의 기울기)",
|
||||
# fontsize=14, fontweight="bold")
|
||||
ax.set_xlabel("유가 충격 이후 경과 개월")
|
||||
ax.set_ylabel("월별 전이량 (그 달의 물가 상승 기여분)")
|
||||
ax.legend(title="품목", fontsize=11)
|
||||
ax.grid(True, alpha=0.3)
|
||||
|
||||
plt.tight_layout()
|
||||
plt.savefig("./outputs/05_월별_전이량.png", bbox_inches="tight")
|
||||
plt.close()
|
||||
print(" 저장: 05_월별_전이량.png")
|
||||
|
||||
|
||||
def plot_cumulative_irf(analyses):
|
||||
"""품목별 누적 반응(cumulative IRF) 비교"""
|
||||
fig, ax = plt.subplots(figsize=(11, 6))
|
||||
|
||||
colors = {"energy": "#c0392b", "food": "#e67e22", "service": "#16a085"}
|
||||
for a in analyses:
|
||||
months = range(len(a["cum_response"]))
|
||||
ax.plot(months, a["cum_response"],
|
||||
marker="s", markersize=4, linewidth=1.5,
|
||||
color=colors[a["item"]], label=a["item_kor"])
|
||||
|
||||
ax.axhline(0, color="gray", linewidth=0.8, linestyle="--")
|
||||
# ax.set_title("유가 충격에 대한 품목별 소비자물가 누적 반응",
|
||||
# fontsize=14, fontweight="bold")
|
||||
ax.set_xlabel("유가 충격 이후 경과 개월")
|
||||
ax.set_ylabel("누적 반응 (로그 차분 누적)")
|
||||
ax.legend(title="품목", fontsize=11)
|
||||
ax.grid(True, alpha=0.3)
|
||||
|
||||
plt.tight_layout()
|
||||
plt.savefig("./outputs/03_품목별_누적반응.png", bbox_inches="tight")
|
||||
plt.close()
|
||||
print(" 저장: 03_품목별_누적반응.png")
|
||||
|
||||
|
||||
# ==============================================================================
|
||||
# 6. 메인 실행 흐름
|
||||
# ==============================================================================
|
||||
def main():
|
||||
# --- 1) 데이터 준비 ---
|
||||
data, log_data = build_dataset()
|
||||
|
||||
# 병합 데이터를 CSV로 저장 (보고서 부록/재현용)
|
||||
data.to_csv("./outputs/00_병합데이터.csv", encoding="utf-8-sig")
|
||||
|
||||
# --- 2) 단위근 검정 ---
|
||||
run_unit_root_tests(log_data)
|
||||
|
||||
# --- 3) 품목별 VAR 분석 ---
|
||||
items = [
|
||||
("energy", "에너지"),
|
||||
("food", "식품"),
|
||||
("service", "서비스"),
|
||||
]
|
||||
analyses = [analyze_item(log_data, eng, kor) for eng, kor in items]
|
||||
|
||||
# --- 4) 시각화 ---
|
||||
print("=" * 60)
|
||||
print("[4] 그래프 생성")
|
||||
print("-" * 60)
|
||||
plot_raw_series(data)
|
||||
plot_irf_comparison(analyses)
|
||||
plot_irf_with_ci(analyses)
|
||||
plot_monthly_increments(analyses)
|
||||
plot_cumulative_irf(analyses)
|
||||
print()
|
||||
|
||||
# --- 5) 최종 요약 ---
|
||||
print("=" * 70)
|
||||
print("[5] 전이 지표 종합 (세 지표를 함께 해석)")
|
||||
print("-" * 70)
|
||||
print(f" {'품목':8s} | {'onset(즉각반응)':14s} | {'평균전이시차':12s} | {'12개월 누적':12s} | VAR시차")
|
||||
print(" " + "-" * 64)
|
||||
for a in analyses:
|
||||
print(f" {a['item_kor']:8s} | {a['onset']:+.5f} | "
|
||||
f"{a['mean_lag']:>6.2f}개월 | {a['cumulative']:+.4f} | lag={a['lag']}")
|
||||
print()
|
||||
print(" [해석 지침] 단일 지표는 오해를 부르므로 세 지표를 함께 본다:")
|
||||
print(" · onset → 반응이 얼마나 빨리 시작되나 (전이 속도)")
|
||||
print(" · mean_lag → 전이의 무게중심 (평균 시차)")
|
||||
print(" · 누적 → 전이가 실제로 유의미한가 (양수여야 실질 전이)")
|
||||
print(" ※ 식품은 mean_lag가 짧아도 누적≈0 → 전이 없음(반짝 후 반전)")
|
||||
print("=" * 70)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
@@ -0,0 +1,121 @@
|
||||
,wti,fx,energy,food,service
|
||||
2015-01-01,47.219,1088.13,97.329,87.795,88.793
|
||||
2015-02-01,50.58421052631579,1101.4605,97.629,88.385,88.946
|
||||
2015-03-01,47.82363636363636,1112.9005,96.845,87.549,89.495
|
||||
2015-04-01,54.45285714285714,1084.6709,96.961,87.461,89.702
|
||||
2015-05-01,59.265,1092.6365,96.293,88.737,89.792
|
||||
2015-06-01,59.819545454545455,1112.8832,96.409,88.473,89.936
|
||||
2015-07-01,50.90090909090909,1146.5468,95.857,88.244,90.143
|
||||
2015-08-01,42.86761904761905,1178.1438,96.003,88.825,90.323
|
||||
2015-09-01,45.47952380952381,1184.33,96.39,88.649,90.431
|
||||
2015-10-01,46.22363636363636,1143.199,97.271,87.769,90.539
|
||||
2015-11-01,42.4435,1153.4721,97.387,86.607,90.656
|
||||
2015-12-01,37.18863636363636,1169.9464,97.552,87.998,90.926
|
||||
2016-01-01,31.683157894736844,1203.3179,96.797,88.711,91.231
|
||||
2016-02-01,30.323,1216.2285,97.107,91.062,91.474
|
||||
2016-03-01,37.54636363636364,1181.573,96.39,90.023,91.753
|
||||
2016-04-01,40.7552380952381,1145.7967,96.438,90.067,92.005
|
||||
2016-05-01,46.712380952380954,1173.7905,96.187,89.133,92.131
|
||||
2016-06-01,48.75727272727273,1165.2023,96.332,87.742,92.221
|
||||
2016-07-01,44.6515,1140.865,94.26,87.734,92.437
|
||||
2016-08-01,44.72434782608696,1110.0183,94.386,88.94,92.59
|
||||
2016-09-01,45.18238095238095,1108.3638,94.434,93.271,92.599
|
||||
2016-10-01,49.775238095238095,1128.166,96.661,91.986,92.689
|
||||
2016-11-01,45.66095238095238,1162.708,97.213,90.621,92.734
|
||||
2016-12-01,51.9704761904762,1183.07,96.254,91.581,92.914
|
||||
2017-01-01,52.504,1179.1074,96.545,94.346,93.346
|
||||
2017-02-01,53.46842105263158,1140.4874,97.097,94.434,93.589
|
||||
2017-03-01,49.32782608695652,1133.8617,97.426,93.606,93.85
|
||||
2017-04-01,51.060526315789474,1134.1755,97.513,92.611,94.012
|
||||
2017-05-01,48.47636363636364,1125.1359,97.852,92.312,94.291
|
||||
2017-06-01,45.177727272727275,1130.8464,97.939,91.643,94.354
|
||||
2017-07-01,46.630526315789474,1131.746,97.939,91.907,94.65
|
||||
2017-08-01,48.03695652173913,1130.27,98.065,94.645,94.92
|
||||
2017-09-01,49.822,1131.599,98.104,95.825,94.794
|
||||
2017-10-01,51.57772727272727,1130.8838,98.336,93.465,94.983
|
||||
2017-11-01,56.63857142857143,1099.7945,97.494,90.859,95.073
|
||||
2017-12-01,57.8815,1082.902,97.678,91.951,95.433
|
||||
2018-01-01,63.698571428571434,1065.641,97.852,93.324,95.865
|
||||
2018-02-01,62.22947368421052,1078.4747,98.404,96.027,96.216
|
||||
2018-03-01,62.724761904761905,1069.9418,98.569,94.486,96.531
|
||||
2018-04-01,66.25380952380952,1068.0452,98.549,94.962,96.9
|
||||
2018-05-01,69.97818181818182,1076.6595,98.53,94.073,97.233
|
||||
2018-06-01,67.87333333333333,1094.3552,98.452,92.866,97.323
|
||||
2018-07-01,70.98142857142857,1122.2029,96.903,93.148,97.637
|
||||
2018-08-01,68.05565217391305,1120.427,97.145,98.026,97.853
|
||||
2018-09-01,70.2321052631579,1119.82,98.801,101.424,97.691
|
||||
2018-10-01,70.74869565217391,1131.615,99.072,98.748,97.835
|
||||
2018-11-01,56.963499999999996,1125.345,98.995,95.675,98.033
|
||||
2018-12-01,49.522777777777776,1122.4244,98.975,95.842,98.384
|
||||
2019-01-01,51.37571428571429,1120.33,98.724,95.789,98.699
|
||||
2019-02-01,54.95473684210527,1121.8333,99.876,96.441,98.87
|
||||
2019-03-01,58.151428571428575,1131.6005,99.74,95.508,98.636
|
||||
2019-04-01,63.862380952380946,1142.165,99.498,96.318,98.789
|
||||
2019-05-01,60.82681818181818,1182.9527,99.576,95.816,98.978
|
||||
2019-06-01,54.657500000000006,1173.7845,99.634,94.768,99.068
|
||||
2019-07-01,57.35809523809524,1177.2345,98.249,93.923,99.284
|
||||
2019-08-01,54.80590909090909,1210.3782,98.327,94.821,99.545
|
||||
2019-09-01,56.947,1194.1145,99.905,97.304,99.05
|
||||
2019-10-01,53.96304347826087,1183.4473,100.06,97.497,99.212
|
||||
2019-11-01,57.048947368421054,1167.2989,100.05,94.988,99.23
|
||||
2019-12-01,59.81666666666667,1174.7052,100.215,95.974,99.374
|
||||
2020-01-01,57.519047619047626,1167.4624,100.17,97.16,99.72
|
||||
2020-02-01,50.54263157894737,1195.3358,100.76,96.66,99.65
|
||||
2020-03-01,29.207727272727276,1218.1945,100.68,98.06,99.5
|
||||
2020-04-01,16.547619047619047,1223.1309,100.56,97.65,99.58
|
||||
2020-05-01,28.5625,1228.134,100.2,98.45,99.79
|
||||
2020-06-01,38.307272727272725,1206.9459,100.29,98.68,99.88
|
||||
2020-07-01,40.710454545454546,1198.6186,98.14,99.15,100.12
|
||||
2020-08-01,42.33904761904762,1186.8562,98.46,101.8,100.39
|
||||
2020-09-01,39.63428571428571,1176.8619,99.97,104.79,100.21
|
||||
2020-10-01,39.39590909090909,1143.7681,100.26,104.85,100.43
|
||||
2020-11-01,40.93736842105263,1116.0978,100.18,101.24,100.23
|
||||
2020-12-01,47.025,1093.7876,100.3,101.51,100.51
|
||||
2021-01-01,52.008421052631576,1098.2367,100.35,103.39,100.79
|
||||
2021-02-01,59.04631578947369,1111.8137,100.89,105.69,101.06
|
||||
2021-03-01,62.333043478260876,1130.2543,101.18,105.84,101.42
|
||||
2021-04-01,61.71666666666666,1117.8555,101.17,105.35,101.94
|
||||
2021-05-01,65.1695,1123.6565,101.44,105.16,102.13
|
||||
2021-06-01,71.37818181818182,1122.6073,101.61,104.56,102.32
|
||||
2021-07-01,72.4852380952381,1146.3948,100.52,104.75,102.9
|
||||
2021-08-01,67.73045454545455,1160.9945,100.78,106.2,103.39
|
||||
2021-09-01,71.64619047619047,1172.819,102.28,107.87,103.44
|
||||
2021-10-01,81.47666666666666,1181.89,102.87,106.72,103.82
|
||||
2021-11-01,79.14750000000001,1184.06,103.11,107.25,104.28
|
||||
2021-12-01,71.71181818181819,1183.8871,103.4,107.85,105.26
|
||||
2022-01-01,83.22200000000001,1196.0345,103.95,109.34,106.26
|
||||
2022-02-01,91.64105263157894,1199.1226,104.77,109.63,107.13
|
||||
2022-03-01,108.50260869565217,1220.8409,104.9,109.55,107.91
|
||||
2022-04-01,101.7775,1235.1533,105.83,110.29,108.51
|
||||
2022-05-01,109.55238095238094,1268.8081,106.49,111.35,109.55
|
||||
2022-06-01,114.83714285714285,1277.4057,106.83,111.32,110.38
|
||||
2022-07-01,101.619,1308.0295,106.71,112.99,111.59
|
||||
2022-08-01,93.66521739130435,1319.4122,106.91,114.56,112.61
|
||||
2022-09-01,84.25809523809524,1396.3729,108.39,116.06,112.57
|
||||
2022-10-01,87.5547619047619,1426.065,110.49,114.72,112.94
|
||||
2022-11-01,84.37047619047618,1361.79,110.43,112.46,113.12
|
||||
2022-12-01,76.43714285714286,1293.5629,110.57,113.53,113.83
|
||||
2023-01-01,78.123,1243.0705,111.75,115.37,114.41
|
||||
2023-02-01,76.83263157894737,1275.4205,112.35,115.91,115.0
|
||||
2023-03-01,73.27782608695652,1306.0161,111.97,116.46,115.84
|
||||
2023-04-01,79.44631578947369,1322.057,111.99,115.9,116.69
|
||||
2023-05-01,71.57818181818182,1327.48,112.55,115.99,117.04
|
||||
2023-06-01,70.24809523809525,1297.2514,113.11,116.3,117.25
|
||||
2023-07-01,76.0695,1282.2835,111.75,117.3,117.94
|
||||
2023-08-01,81.38608695652174,1321.7561,111.85,120.53,118.4
|
||||
2023-09-01,89.425,1334.237,113.3,122.46,117.96
|
||||
2023-10-01,85.63952380952381,1351.5071,113.67,122.85,118.18
|
||||
2023-11-01,77.685,1308.154,113.58,119.8,118.38
|
||||
2023-12-01,71.9,1304.3945,113.72,120.56,118.88
|
||||
2024-01-01,74.15238095238095,1325.9119,113.84,122.2,119.09
|
||||
2024-02-01,77.249,1331.3345,114.22,123.96,119.39
|
||||
2024-03-01,81.27799999999999,1331.6752,114.11,124.22,119.78
|
||||
2024-04-01,85.34727272727274,1367.8555,114.15,122.75,120.14
|
||||
2024-05-01,80.02454545454545,1364.7241,114.26,121.9,120.38
|
||||
2024-06-01,79.76736842105262,1379.0526,114.43,120.68,120.77
|
||||
2024-07-01,81.80045454545454,1382.0473,113.07,121.54,121.32
|
||||
2024-08-01,76.68318181818182,1351.4436,113.92,122.99,121.65
|
||||
2024-09-01,70.236,1330.6985,115.36,124.72,121.02
|
||||
2024-10-01,71.985,1362.3691,115.51,124.53,121.63
|
||||
2024-11-01,69.95,1395.02,115.48,121.32,121.87
|
||||
2024-12-01,70.11809523809524,1439.9967,115.67,123.61,122.18
|
||||
|
Binary file not shown.
|
After Width: | Height: | Size: 340 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 201 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 159 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 236 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 221 KiB |
@@ -0,0 +1,14 @@
|
||||
"시도별","지출목적별",2015.01,2015.02,2015.03,2015.04,2015.05,2015.06,2015.07,2015.08,2015.09,2015.10,2015.11,2015.12,2016.01,2016.02,2016.03,2016.04,2016.05,2016.06,2016.07,2016.08,2016.09,2016.10,2016.11,2016.12,2017.01,2017.02,2017.03,2017.04,2017.05,2017.06,2017.07,2017.08,2017.09,2017.10,2017.11,2017.12,2018.01,2018.02,2018.03,2018.04,2018.05,2018.06,2018.07,2018.08,2018.09,2018.10,2018.11,2018.12,2019.01,2019.02,2019.03,2019.04,2019.05,2019.06,2019.07,2019.08,2019.09,2019.10,2019.11,2019.12,2020.01,2020.02,2020.03,2020.04,2020.05,2020.06,2020.07,2020.08,2020.09,2020.10,2020.11,2020.12,2021.01,2021.02,2021.03,2021.04,2021.05,2021.06,2021.07,2021.08,2021.09,2021.10,2021.11,2021.12,2022.01,2022.02,2022.03,2022.04,2022.05,2022.06,2022.07,2022.08,2022.09,2022.10,2022.11,2022.12,2023.01,2023.02,2023.03,2023.04,2023.05,2023.06,2023.07,2023.08,2023.09,2023.10,2023.11,2023.12,2024.01,2024.02,2024.03,2024.04,2024.05,2024.06,2024.07,2024.08,2024.09,2024.10,2024.11,2024.12,2025.01,2025.02,2025.03,2025.04,2025.05,2025.06,2025.07,2025.08,2025.09,2025.10,2025.11,2025.12,2026.01,2026.02,2026.03,2026.04,2026.05,2026.06
|
||||
"전국","0 총지수",94.643,94.587,94.596,94.625,94.890,94.909,95.080,95.213,94.966,94.966,94.786,95.070,95.232,95.640,95.393,95.573,95.630,95.611,95.431,95.677,96.247,96.379,96.237,96.342,97.366,97.632,97.565,97.442,97.546,97.338,97.499,98.058,98.172,98.077,97.347,97.698,98.106,98.855,98.751,98.931,98.979,98.779,98.590,99.462,100.221,100.041,99.330,98.988,98.884,99.311,99.121,99.481,99.652,99.491,99.187,99.425,99.794,100.041,99.481,99.719,100.09,100.16,99.94,99.50,99.44,99.71,99.63,100.19,100.74,100.18,100.09,100.33,101.04,101.58,101.84,101.98,102.05,102.05,102.26,102.75,103.17,103.35,103.87,104.04,104.85,105.42,106.10,106.83,107.50,108.21,108.73,108.63,108.82,109.16,109.07,109.26,110.07,110.33,110.52,110.77,111.13,111.16,111.29,112.28,112.85,113.27,112.68,112.73,113.17,113.78,113.95,114.01,114.10,113.84,114.13,114.54,114.65,114.69,114.40,114.91,115.71,116.08,116.29,116.38,116.27,116.31,116.52,116.45,117.06,117.42,117.20,117.57,118.03,118.40,118.80,119.37,119.92,119.99
|
||||
"전국","01 식료품 및 비주류음료",87.795,88.385,87.549,87.461,88.737,88.473,88.244,88.825,88.649,87.769,86.607,87.998,88.711,91.062,90.023,90.067,89.133,87.742,87.734,88.940,93.271,91.986,90.621,91.581,94.346,94.434,93.606,92.611,92.312,91.643,91.907,94.645,95.825,93.465,90.859,91.951,93.324,96.027,94.486,94.962,94.073,92.866,93.148,98.026,101.424,98.748,95.675,95.842,95.789,96.441,95.508,96.318,95.816,94.768,93.923,94.821,97.304,97.497,94.988,95.974,97.16,96.66,98.06,97.65,98.45,98.68,99.15,101.80,104.79,104.85,101.24,101.51,103.39,105.69,105.84,105.35,105.16,104.56,104.75,106.20,107.87,106.72,107.25,107.85,109.34,109.63,109.55,110.29,111.35,111.32,112.99,114.56,116.06,114.72,112.46,113.53,115.37,115.91,116.46,115.90,115.99,116.30,117.30,120.53,122.46,122.85,119.80,120.56,122.20,123.96,124.22,122.75,121.90,120.68,121.54,122.99,124.72,124.53,121.32,123.61,125.13,126.45,127.26,126.48,124.78,124.74,125.75,128.96,128.82,128.88,127.08,128.01,128.75,129.12,127.91,126.84,126.79,127.27
|
||||
"전국","02 주류 및 담배",96.460,96.508,96.479,96.596,96.605,96.518,96.818,96.847,96.789,96.808,96.692,96.973,97.147,97.301,97.321,97.379,97.388,97.234,97.195,97.446,97.272,97.359,97.514,97.495,97.920,98.645,98.713,98.896,98.722,98.906,98.974,99.041,99.080,98.954,98.916,98.887,99.070,99.167,98.983,99.109,98.964,98.935,99.128,99.109,99.041,99.032,99.235,98.983,99.157,99.186,98.858,99.244,99.689,99.873,99.892,99.940,100.153,100.221,99.960,100.008,100.17,100.19,99.85,99.83,99.95,99.95,99.98,99.98,100.08,100.14,99.98,99.88,100.16,100.21,99.87,100.38,100.43,100.52,100.57,100.66,100.74,100.66,100.56,100.40,100.82,101.51,102.29,102.72,102.96,102.87,103.05,103.19,102.92,103.06,102.99,103.04,102.85,103.33,103.40,103.41,103.23,103.50,103.55,103.58,103.28,103.66,104.81,105.01,104.40,104.33,104.43,104.70,104.46,104.54,104.71,104.59,104.48,104.68,104.81,104.58,104.61,104.69,104.72,104.79,104.75,104.87,104.88,104.91,105.05,105.10,104.87,104.63,105.08,105.33,105.35,104.92,105.06,105.35
|
||||
"전국","03 의류 및 신발",95.013,94.831,94.889,94.498,95.117,95.117,95.165,95.270,95.642,95.279,96.347,96.633,96.023,96.757,96.757,96.795,97.243,97.252,96.557,97.252,97.272,97.357,97.329,97.758,97.252,97.853,97.882,96.967,98.234,98.358,97.691,98.387,98.444,98.444,98.396,99.073,98.501,99.092,99.178,99.187,99.206,99.226,99.111,99.111,99.178,99.178,99.511,99.550,98.901,99.521,99.226,98.959,99.054,99.102,99.111,99.111,99.149,99.321,99.893,99.893,99.62,99.78,99.79,99.38,99.94,99.94,100.26,100.25,100.27,100.17,100.27,100.33,100.19,100.24,100.25,100.20,100.36,100.36,100.38,100.38,100.39,100.49,101.71,101.74,102.08,102.21,102.25,102.22,103.42,103.47,103.59,103.69,103.71,103.84,106.93,107.15,107.41,107.48,107.85,107.84,111.55,111.45,111.59,111.68,111.68,112.31,113.50,113.57,113.61,113.63,113.65,113.59,114.30,114.31,114.38,114.44,114.44,114.79,115.48,115.49,115.46,115.86,115.87,115.92,116.23,116.46,116.46,116.48,116.48,117.24,118.17,118.19,118.24,118.28,118.30,118.40,119.45,119.52
|
||||
"전국","04 주택, 수도, 전기 및 연료",97.329,97.629,96.845,96.961,96.293,96.409,95.857,96.003,96.390,97.271,97.387,97.552,96.797,97.107,96.390,96.438,96.187,96.332,94.260,94.386,94.434,96.661,97.213,96.254,96.545,97.097,97.426,97.513,97.852,97.939,97.939,98.065,98.104,98.336,97.494,97.678,97.852,98.404,98.569,98.549,98.530,98.452,96.903,97.145,98.801,99.072,98.995,98.975,98.724,99.876,99.740,99.498,99.576,99.634,98.249,98.327,99.905,100.060,100.050,100.215,100.17,100.76,100.68,100.56,100.20,100.29,98.14,98.46,99.97,100.26,100.18,100.30,100.35,100.89,101.18,101.17,101.44,101.61,100.52,100.78,102.28,102.87,103.11,103.40,103.95,104.77,104.90,105.83,106.49,106.83,106.71,106.91,108.39,110.49,110.43,110.57,111.75,112.35,111.97,111.99,112.55,113.11,111.75,111.85,113.30,113.67,113.58,113.72,113.84,114.22,114.11,114.15,114.26,114.43,113.07,113.92,115.36,115.51,115.48,115.67,115.87,116.47,116.25,116.24,116.47,116.56,115.16,115.37,116.71,116.94,116.89,117.12,117.36,117.83,118.05,118.24,118.53,118.55
|
||||
"전국","05 가정용품 및 가사 서비스",92.209,93.104,93.393,92.787,93.365,93.244,93.132,93.617,93.216,93.179,93.543,93.915,94.074,94.410,94.838,94.428,94.214,94.904,95.025,94.988,95.211,94.736,94.587,94.661,93.915,94.988,95.575,95.314,95.883,96.563,95.491,95.743,96.013,96.544,96.181,96.330,96.489,97.262,97.961,97.514,98.222,97.822,98.250,98.195,97.952,98.353,98.250,98.232,98.978,100.367,100.292,100.740,99.705,99.444,100.357,100.012,99.313,100.497,99.714,100.190,99.54,100.33,99.77,99.86,100.19,99.80,99.92,100.22,99.44,100.42,100.09,100.42,101.17,100.82,99.98,100.19,101.00,101.11,102.11,102.46,102.51,103.30,103.46,104.35,104.58,104.87,104.20,106.29,106.38,106.85,107.38,107.91,107.44,108.02,108.43,108.99,110.28,111.18,111.27,111.98,112.70,112.58,112.86,113.25,113.41,113.80,113.42,114.01,113.74,113.94,114.69,114.70,114.48,114.37,115.35,115.35,114.95,115.44,114.99,115.84,116.17,116.61,116.27,117.97,118.15,119.41,119.32,119.67,118.69,118.03,118.19,118.98,119.56,119.48,119.95,120.24,121.21,122.61
|
||||
"전국","06 보건",96.143,96.336,96.394,96.346,96.336,96.336,96.297,96.326,96.105,96.374,96.288,96.297,97.251,97.203,97.193,97.251,97.270,97.289,97.270,97.193,97.231,97.174,97.289,97.347,98.349,98.349,98.252,97.944,97.973,98.435,98.483,98.493,97.963,97.809,97.559,97.694,98.714,98.753,98.849,98.426,98.406,98.570,97.568,97.617,97.568,97.472,97.395,97.357,98.262,98.358,98.329,98.406,98.416,98.714,98.522,98.531,98.618,98.666,98.637,98.734,100.40,100.31,100.36,100.34,100.36,100.80,99.84,99.76,99.31,99.62,99.50,99.40,100.22,100.23,100.31,100.03,99.88,99.79,99.91,99.92,99.70,99.63,99.74,99.70,100.83,100.86,100.40,100.57,100.53,100.61,100.62,100.78,100.61,101.09,101.11,101.06,102.13,102.23,102.28,101.90,102.01,102.40,102.47,102.56,102.51,102.63,102.80,102.83,103.98,104.06,104.25,104.26,104.52,104.25,104.27,104.37,104.50,104.44,104.56,104.56,105.42,105.43,105.45,105.53,105.56,105.54,105.50,105.56,105.49,105.60,105.66,105.57,106.63,106.41,106.83,106.77,106.72,106.92
|
||||
"전국","07 교통",100.439,98.159,99.589,99.559,100.349,101.089,102.279,101.629,99.939,99.569,98.909,98.369,97.669,96.150,95.700,96.110,96.890,98.519,99.179,98.669,98.259,98.299,98.469,99.389,101.389,101.969,101.779,101.309,101.239,100.539,99.939,100.269,100.859,101.789,101.949,102.289,102.789,103.059,102.989,102.709,103.619,104.329,104.249,104.519,104.669,106.099,104.369,101.329,98.899,98.699,99.289,100.769,103.049,103.299,102.569,102.579,102.979,103.589,103.109,103.569,105.09,105.06,101.88,98.28,96.06,97.63,99.62,99.83,99.40,99.05,98.59,99.51,101.82,102.55,103.97,104.71,104.66,105.53,107.07,107.90,107.59,109.31,111.48,109.41,109.30,111.16,116.96,118.93,119.61,123.38,123.54,117.64,115.72,115.34,115.43,113.15,112.34,111.38,110.87,111.79,111.52,109.74,110.25,114.09,115.28,117.29,114.98,112.89,111.97,113.64,114.00,115.02,115.74,114.01,116.00,116.17,113.90,112.56,113.69,114.32,115.62,116.19,115.67,114.55,114.28,114.15,115.82,116.27,115.21,116.40,117.31,117.99,116.94,117.42,121.44,125.62,127.54,126.82
|
||||
"전국","08 통신",105.435,105.435,105.425,104.774,104.732,105.309,105.309,105.309,104.858,104.406,104.606,104.606,104.249,104.249,104.249,105.456,105.456,105.456,105.456,105.456,105.530,105.572,105.068,105.068,105.026,105.026,104.249,105.078,105.078,105.351,105.960,105.960,105.971,105.855,105.740,105.624,104.900,104.763,104.669,105.173,105.057,104.952,104.375,104.270,104.186,104.133,103.955,103.650,103.283,102.390,102.127,102.411,102.201,102.043,101.613,102.001,102.285,102.211,101.413,101.361,100.75,100.70,100.66,101.29,101.25,101.84,101.76,101.69,101.62,87.78,99.89,100.75,99.22,99.25,99.32,99.32,98.88,98.87,98.87,98.88,98.89,98.39,99.62,99.63,99.64,99.65,99.43,99.70,99.71,99.72,99.75,99.76,100.06,100.92,100.92,100.92,100.92,100.93,100.94,100.95,100.95,100.97,100.97,100.98,101.19,101.21,101.23,101.24,101.24,101.24,101.24,101.24,101.32,101.32,101.32,101.32,101.32,101.32,101.32,101.34,101.34,101.34,101.35,101.34,101.34,101.34,101.35,87.87,101.38,101.73,101.73,101.75,101.76,101.78,101.97,101.98,101.96,101.88
|
||||
"전국","09 오락 및 문화",98.945,98.292,97.323,98.787,99.192,97.936,100.359,100.597,99.113,99.578,98.025,98.727,98.985,99.667,99.252,99.618,101.279,100.438,102.614,103.287,102.031,101.180,100.290,100.112,101.675,100.795,100.458,102.021,100.953,98.985,102.080,102.199,100.715,101.695,98.866,98.925,99.351,100.755,100.448,102.011,102.199,100.300,101.922,102.674,102.792,102.347,100.696,99.766,100.468,101.319,100.587,101.615,101.200,100.181,101.685,102.515,101.418,101.774,100.092,99.420,100.12,99.83,99.40,99.71,100.02,99.84,100.23,100.69,100.03,100.33,99.92,99.89,100.13,100.03,99.82,100.40,100.53,99.89,100.72,101.21,100.63,100.65,100.38,100.81,101.56,101.01,101.62,102.37,102.61,103.27,104.18,104.96,104.17,104.18,104.24,105.34,106.06,106.09,106.39,106.79,106.96,107.10,107.57,107.92,107.63,107.69,107.24,107.35,107.35,108.41,107.96,108.45,108.81,108.74,109.45,109.35,108.86,108.71,108.15,108.66,109.63,108.89,108.99,109.86,110.14,109.49,110.16,110.38,109.58,110.99,109.66,109.93,110.57,112.17,112.01,113.65,115.70,115.44
|
||||
"전국","10 교육",96.691,96.818,97.286,97.520,97.559,97.598,97.657,97.725,97.871,97.881,97.900,97.969,98.378,98.603,98.925,99.042,99.168,99.188,99.237,99.276,99.403,99.442,99.461,99.500,99.783,99.939,100.183,100.271,100.300,100.329,100.339,100.378,100.407,100.417,100.446,100.476,100.856,101.139,101.431,101.636,101.675,101.695,101.714,101.812,101.890,101.948,101.948,101.997,102.456,102.563,102.602,102.660,102.748,102.797,102.797,102.826,101.031,101.168,101.217,101.275,99.86,100.04,100.03,100.06,99.97,100.01,100.08,100.17,99.87,99.90,99.97,100.03,100.25,100.39,100.77,100.89,100.89,100.95,101.00,101.10,100.94,101.04,101.05,101.15,101.48,101.66,101.73,101.94,102.10,102.42,102.52,102.61,102.54,102.53,102.47,102.70,103.19,103.43,104.07,104.31,104.40,104.44,104.46,104.46,104.49,104.55,104.48,104.52,104.96,105.09,105.43,105.76,105.90,105.91,106.18,106.41,106.51,106.56,106.63,106.74,107.17,107.26,108.45,108.67,108.74,108.85,108.90,108.93,108.61,108.50,108.44,108.48,108.83,109.07,109.61,109.89,110.16,110.15
|
||||
"전국","11 음식 및 숙박",88.793,88.946,89.495,89.702,89.792,89.936,90.143,90.323,90.431,90.539,90.656,90.926,91.231,91.474,91.753,92.005,92.131,92.221,92.437,92.590,92.599,92.689,92.734,92.914,93.346,93.589,93.850,94.012,94.291,94.354,94.650,94.920,94.794,94.983,95.073,95.433,95.865,96.216,96.531,96.900,97.233,97.323,97.637,97.853,97.691,97.835,98.033,98.384,98.699,98.870,98.636,98.789,98.978,99.068,99.284,99.545,99.050,99.212,99.230,99.374,99.72,99.65,99.50,99.58,99.79,99.88,100.12,100.39,100.21,100.43,100.23,100.51,100.79,101.06,101.42,101.94,102.13,102.32,102.90,103.39,103.44,103.82,104.28,105.26,106.26,107.13,107.91,108.51,109.55,110.38,111.59,112.61,112.57,112.94,113.12,113.83,114.41,115.00,115.84,116.69,117.04,117.25,117.94,118.40,117.96,118.18,118.38,118.88,119.09,119.39,119.78,120.14,120.38,120.77,121.32,121.65,121.02,121.63,121.87,122.18,122.65,122.86,123.38,123.99,124.35,124.39,125.15,125.46,125.05,125.52,125.40,125.84,126.10,126.59,126.76,127.26,127.65,127.70
|
||||
"전국","12 기타 상품 및 서비스",89.991,90.118,90.515,90.163,90.343,90.118,90.045,90.488,90.100,90.262,90.614,90.497,92.880,93.205,93.467,93.476,93.710,93.674,93.376,93.358,93.467,93.340,93.512,93.069,96.075,96.175,96.211,95.796,96.202,95.696,95.931,95.850,95.868,96.139,95.778,95.877,95.787,96.157,96.382,96.617,96.572,96.707,96.455,96.698,96.807,96.626,96.879,96.707,97.357,97.664,97.836,98.052,98.395,98.152,98.224,98.188,98.188,98.260,98.323,98.341,99.40,99.74,99.66,99.44,99.84,99.97,100.21,100.11,100.87,100.16,100.40,100.20,101.41,101.31,101.55,102.14,102.31,102.00,102.08,102.30,102.10,102.23,101.80,102.81,105.00,106.35,106.09,105.83,107.73,108.70,109.12,109.22,109.61,110.06,110.46,111.04,112.99,113.27,113.61,114.75,114.29,114.47,114.77,115.19,115.30,115.25,115.27,115.58,118.38,118.25,118.49,119.14,119.13,119.63,119.78,119.23,118.97,120.08,120.20,119.71,123.00,123.07,123.52,124.98,124.94,124.93,124.98,124.93,125.17,125.26,125.23,125.57,129.10,129.38,129.19,130.06,130.11,130.19
|
||||
|
Reference in New Issue
Block a user