金融変数と実体経済変数の因果探索と数法則発見法による波及経路のモデル化と可視化
VAR-LiNGAMによる時系列を考慮した因果探索を行い,時系列を考慮した3D因果グラフの作成,また数法則発見法を用いた経済変数のモデル化を行うことで,経済変数間の影響を直感的に理解できるようなシステムの実装を目指す.
| モジュール | version | 用途 |
| pandas | データ収集やデータフレームへの格納などに用いる | |
| LiNGAM | VAR-LiNGAMによる分析に用いる | |
| selenium | データの収集,スクレイピングに用いる | |
| pandas-market-calendars | 土日祝日を知ることができる.データの時間足調整に用いる | |
| flask | システムの実装に用いる | |
| json | 3Dグラフの作成,ページ遷移先にデータを与えるのに用いる | |
| pyvis | 3Dグラフの作成 | |
| webdriver_manager | スクレイピングに用いる |
モジュールのインストールはコマンドプロンプトでpip install モジュール名
バージョンまで指定する場合はコマンドプロンプトでpip install モジュール名==指定するバージョン でインストールする
スクレイピングを用いてデータを収集する. スクレイピングには「selenium」を用いる. seleniumのバージョンについては上で示した通りである. seleniumではクリックなどのユーザーアクションを模倣することで深いところにあるデータも収集することができる. スクレイピングをする部分のコードはこれ↓
#ref(): File not found: "scraping.py" at page "蒲田さん卒論"
今回は日本銀行時系列統計データ検索サイトを例に説明する. 日本銀行時系列統計データ検索サイトではクリックアクションを繰り返すことで金利や物価指数など金融時系列データをcsvファイル形式で取得することができる.
ダウンロードしたデータはcsv形式でダウンロードされる.
そのため,ダウンロードされたcsvファイルを一つのフォルダにまとめて保存しする必要がある.
また,ダウンロードした時点のファイル名もダウンロードされた時間,回数によって勝手に決められてしまうものもあるため,ファイル名を変更する必要がある.
そのためにまず,ファイルのダウンロード先を指定する必要がある
dldir_path = Path('保存先のフォルダのパス')
dldir_path.mkdir(exist_ok=True)
download_dir = str(dldir_path.resolve())
options.add_experimental_option('prefs', {'download.default_directory': download_dir})
また,ファイル名を変更するコードとして以下を追加する.
filename_list=["変更後のファイル名(1)","変更後のファイル名(2)".....]
list_of_files = glob.glob('保存先のフォルダのパス/*')
latest_file = max(list_of_files, key=os.path.getctime)
file_name = str(latest_file.split('\\')[1])
print(latest_file)
print()
os.remove("csv/"+filename_list[i-1])
os.rename(latest_file,"csv/"+filename_list[i-1])
このコードでは
分析するためにはデータの前処理を行わなければ正しい結果は得られない. 今回は前処理の手法として正規化を行う. 正規化の手法として,VAR-LiNGAMではMin-Max法によるデータの正規化,RF5に用いるデータの正規化手法としては説明変数にMax法による正規化,目的変数にはZ scoreによる正規化を行う.
VAR-LiNGAMの分析ではPythonのモジュール「LiNGAM」のVAR-LiNGAMを用いる. これは
数法則発見法の1つであるRF5を用いて経済変数間のモデル化を行う.