import pandas as pd
import numpy as np
import statsmodels.api as sm
import lingam
import pyvis
from lingam.utils import make_dot, print_causal_directions, print_dagc
from graphviz import Digraph
from math import log10, floor
from decimal import Decimal, ROUND_HALF_UP
import matplotlib.pyplot as plt
plt.style.use('ggplot') #グラフのスタイル
plt.rcParams['figure.figsize'] = [12, 9] # グラフサイズ設定

# # データセット読み込み
# path = 'datasets/short_tukizimatome.csv'
# df = pd.read_csv(path,
#                  parse_dates=True,
#                  index_col='day',
#                  encoding="utf-8"
#                 )
# df #確認
path = 'data/kabudata.csv'
df = pd.read_csv(path,
                 parse_dates=True,
                 index_col='day',
                 encoding="utf-8"
                )

#
# VAR-LiNGAMの構築
#
# インスタンス生成
model = lingam.VARLiNGAM(lags=1, prune=True)
# 学習
model.fit(df)

#
# 有向グラフ描写
#
# ノードのラベル
# labels = ['金利(t)', '為替東京(t)', 'Zikkou(t)','money_stock(t)','Bukkasisu(t)','Souheikin(t)','Big_manufacture(t)','Big_no(t)','small_manufacture(t)','small_no(t)' ,
#           '金利(t-1)', '為替東京(t-1)', 'Zikkou(t-1)','money_stock(t-1)','Bukkasisu(t-1)','Souheikin(t-1)','Big_manufacture(t-1)','Big_no(t-1)','small_manufacture(t-1)','small_no(t-1)' ,
#          ]
#ノードのラベル
labels = df.columns.tolist()
print(labels)
# ノードのラベル
# labels = ['金利(t)', '為替東京(t)', '実質実効為替レート(t)', 
#           '金利(t-1)', '為替東京(t-1)', '実質実効為替レート(t-1)', 
#           '金利(t-2)', '為替東京(t-2)', '実質実効為替レート(t-2)']
# 有向グラフの描写
make_dot(np.hstack(model.adjacency_matrices_),
         lower_limit=0.05,
         ignore_shape=True,
         labels=labels)

