引き継ぎ(中島)

目次


目標 

・財務系のデータを増やした分析の実施

用いたプログラムとデータ 

データの収集 

scraping2.ipynbで行う.
スクレイピングを行い,日本銀行時系列統計データ検索サイトから政府預金収支のデータを集めた.

 service = Service(executable_path='C:/Users/tn011/Desktop/flask (1)/flask/driver/chromedriver.exe')

chromedriverのパスを自分のものに置き換える. 下はそのコードの一部.

0229_1.png

上のコードを実行すると,データが入ったエクセルをダウンロードが行われる.

0229_2.png

集めたデータの変換 

data1-20240222T042151Z-001.zipの中にあるdata_fusion.ipyndで行う.

元々あるデータにスクレイピングして得た財政のデータを追加する.データの一行目を削除して新しく名前を定める.いらないデータを削除する.df_monthに元あるデータと追加したデータを合わせて組み込む.それを表示すると下のようになる.

0229_4.png


データの中にある欠損値NANを消すために欠損値NANを含む行全てを削除する.これでdf_monthを欠損値のないデータフレームにすることができる.

0229_5.png

下の写真は欠損値が除去されたdf_monthです.

0229_9.png


そして次に月足のデータを日足のデータにする.指定されたCSVファイル('tukasi.csv')からデータを読み込み,各行の'日付'列を日付型に変換しています。その後、各行ごとに取引カレンダーを参照.その際に,土日と祝日は削除する.2021年以降の取引日だけを抽出して新しいDataFrame(df_2021_onwards)を作成しています.最終的に,'日付'列を文字列に変換して結果を表示しています。

0229_6.png
0229_7.png


tests.csvからデータを読み取り,df_kabuを作成.'日付'列を'Day'にリネーム.df_kabutdf_2021_onwardsを結合し,df_fusionを作成する.そのDataFrameの'データ日付'列を削除,欠損値を含む行を削除.最終的なDataFrameを'fusion_data_forVARLiNGAM.csvとして保存する.

0229_8.png

VARLiNGAMの実装 

flask(1)の中のVARLiNGAMフォルダの中にあるVAR_LiNGAM_True_latest.ipynbで行う.

データ分析,因果探索,可視化のために必要なライブラリのインポートを行う.

0229_10.png


集めたデータの変換で最後にできたfusion_data_forVARLiNGAM.csvを読み取り,そのデータをdf_firstに書き込む.書き込まれた内容が下に表示される.

0229_11.png


'MinMaxScaler'オブジェクト('scaler')を作成.'fit_transform'メソッドを使用して,元のデータフレーム('df_first')の各列の値を最小値0,最大値1の範囲にスケーリングします.結果は'normalized_df'として得られる.正規化されたデータを新しいcsvファイルに保存.正規化されたデータフレーム('normalized_df')に元のデータフレーム('df_first')のインデックスを設定.最後に正規化されたデータフレームを表示.

0229_12.png


因果検出を実行するために,VARLiNGAM(ベクトルオートレッシュ回帰モデルを用いた因果関係推定手法)のモデルを構築し,'fit'メソッドを使用して,指定されたデータ('df_first')に対して学習を行っている.'lags=2'はラグの数を指定し,'prune=True'は因果関係を整理するオプション.

0229_13.png


'adjacency_matrices_'プロパティを使用して,VARLiNGAMモデルによって推定された係数行列を取得.結果は,因果関係の強さや方向表す係数行列が表示される.

0229_14.png


'lingam.VARLiNGAM()'を使用してVAR-LiNGAMのモデルインスタンスを生成.
'bootstrap'メソッドを呼び出して,ブートストラップ法により因果関係の推定を行う.'normalized_df'は正規化されたデータを指定し,'n_sampling=100'はブートストラップサンプルの数を指定.
'result'には,ブートストラップ法によって得られた因果関係の推定結果が格納される.

0229_15.png


一番上のコードは,'get_error_independence_p_values'メソッドを使用して,各変数のエラー項が互いに独立であるかどうかの検定を行い,その結果のp値を取得.
p値は'p_values'に格納され,'print'で表示される.

次のコードでは,objectが返されるので,メソッドで抽出した因果方向の順位付けを得ることが出来る.コードでは,optionを上位8位の因果方向,optionを係数0.3以上の因果方向に限定している.

その下のコードでは,効用関数で結果の確認が出来る.'print_casual_directions'関数を使用して,因果関係の方向性のカウントを表示.'cbc'は先に取得した因果関係の方向性のカウント結果.'100'は表示する上位の数を指定.表示されるのは上位100の因果関係の方向性.'labels'は変数のラベルを指定.このラベルは変数名などの情報を含んでおり,結果の解釈を容易に.

0229_16.png


このコードは,因果探索アルゴリズムによって推定された複数の有向非巡回グラフ(DAG)の構造と因果効果の強さを表示するもの.
'result.get_directed_acyclic_graph_counts()' は因果探索結果から有向非巡回グラフ (DAG) の構造を取得.
'n_dags=3' は表示する DAG の数を指定.この場合,上位3つのDAGが表示される.
'min_casual_effect=0.2'は表示するDAGに含まれる因果関係の最小値を指定. 0.2より大きい因果関係を持つエッジのみ表示される.
'split_by_casual_effect_sign=True'は因果関係の符号でグラフを分割するオプション.正の因果効果と負の因果効果を別々に表示.
'print_dagc()'は取得したDAGの構造と因果効果の強さを表示.'dagc'は取得したDAGの情報.'100'は表示する上位の数を指定.表示されるのは上位100の因果関係.'labels=labels'は変数のラベルを指定.

0229_17.png


'display_max_rows'はDataFrameの表示時に表示される最大行数を指定.表示される行数は10行に制限される.
'display_max_columns'はDataFrameの表示時に表示される最大列数を指定.表示される列数が10列に制限される.

0229_18.png

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS