書評:Shocks, Crises, and False Alarms: How to Assess True Macroeconomic Risk

2025/4/20

Shocks, Crises, and False Alarms: How to Assess True Macroeconomic Risk Philipp Carlsson-Szlezak, Paul Swartz Shocks, Crises, and False Alarms: How to Assess True Macroeconomic Risk  本書はマクロ経済における近年見られたような、ショック、危機などのリスクを案内します。  マクロ経済のリスクを判断するとき、リスクが実際のショック ...

ReadMore

合衆国の新関税の税率と貿易収支

2025/4/17

2025年4月2日に合衆国の新しい関税の税率が公表されました。現在の貿易収支の状況と導入される関税の税率をまとめます。 合衆国の貿易収支 図1 合衆国の貿易収支2023年(単位:USD million)  図1は、左側が輸出国、右側が輸入国です。マウスポインタを領域の上に置くと、輸出入額(単位:100万USドル)を表示します。 データソースはJETROがまとめている貿易投資年報より参照。 新関税の税率と各国の対米貿易収支 図2 関税税率と対米貿易収支 対米貿易収支は、輸出額から輸入額を減算した値(単位:1 ...

ReadMore

強化学習による因果探索 gCastle因果探索アルゴリズムの検証(3)

2025/3/18

gCastleに実装された探索アルゴリズムの中で、強化学習を使ったアルゴリズムが高い性能を示しています。本稿ではこの探索のための強化学習アルゴリズムを解説します。 強化学習を使った探索  強化学習は一般的にポリシーを学習することを目的に用いられますが、彼らはこれをDAGの探索に使っています。  巡回セールスマンの問題と同様に、d次元のnシーケンスでベストスコアを導くことで、入力データからバイナリの隣接行列の生成を考えます。  隣接行列を出力するためにエンコーダ/デコーダ・モデルを作りますが、エンコーダ自己 ...

ReadMore

CastleBoardの使い方 gCastle因果探索アルゴリズムの検証(2)

2025/3/2

中国のAI技術動向の調査を兼ねて、gCastleに実装された因果探索アルゴリズムを検証しました。gCastleはGUIツールCastleBoardを含んでいますが、パッケージにツールのマニュアル類は添付されていません。そのため、本稿では実際にアルゴリズムを検証するためのCastleBoardの使い方について解説します。 CastleBoardの操作  GUIツールはいくつかの設定項目への入力でテストデータを生成できるため、テストプログラムを組むより簡単にアルゴリズムを検証できます。ツールの機能は主に二つの ...

ReadMore

マイニング・セクターのリスク許容度、関税の影響 (DoubleMLの推論)

2025/3/14

 2025年2月に合衆国の新政権の政策として、鉄鋼とアルミニウムに25%の関税が課されることが決定されました。一方で、ウクライナへのこれまでの支援の対価として、ウクライナの鉱物資源などの天然資源の権益取得が交渉されています。  この関税政策が、原料である鉄鉱石やボーキサイトなどの鉱物資源の採掘を行なっている企業に与える影響について分析します。  分析手段として機械学習を使った推論手法、DoubleML(Double Machine Learning)を用います。このDoubleMLという推論手法と同じ名称 ...

ReadMore

gCastle 因果探索アルゴリズムの検証

2025/2/28

gCastleは、因果探索アルゴリズムが実装された因果の構造を学習するツールチェインです。パッケージは、Webアプリを含んでおり、因果探索アルゴリズムがGUIベースの操作で検証できるようになっています。 gCastle 概要  Huawei社のリサーチラボから提供されています。因果探索アルゴリズムが実装されており、Webアプリを使用してアルゴリズムの動作が検証できます。  GCastleの名称は、Gradient-based Causal Structure Learning pipeline. の頭文字 ...

ReadMore

クレジット・カードの種別と利用額の最適化 YLearnによる因果推論(2)

2025/2/20

YLearn因果推論パッケージを使ったケース・スタディを使ってYLearnの機能を解説します。YLearnの因果推論パイプラインを使ったマーケティング上の分析の一つになります。クレジット・カードのグレードを更新した場合の効果の推論です。 機能と仕様  以下、簡単に機能をまとめ、最後にケーススタディを使って動作を確認します。ケース・スタディでは、Kaggleの実際のデータセットを使います。 DAG グラフと交絡因子  観測されていない変数はconfounding arcとして定義し、下の図1では(黒の点線) ...

ReadMore

YLearnによる因果推論(1) 概要とセットアップ

2025/2/20

 因果推論はAIシステムが、イベント間の真の因果関係をよりよく理解する助けになります。中国製のLLMが最近、話題(注1)になっていたので、データサイエンス分野で中国の因果推論に関する取り組みとツールについて評価します。  因果推論や因果探索のツールとして、Huaweiが提供しているgCastleと、因果探索・因果推論ツール、ylearnを使います。gCastleはPyTorchで実装された因果探索パッケージです。因果関係に関連した代表的なアルゴリズムが実装されて、検証ツールが提供されています。Huawei ...

ReadMore

Jupyter-notebookがAnaconda Navigatorから起動できない問題

2025/2/6

新しいAnaconda Navigatorをインストールしたところ、jupyter-notebook(7.3.2)がNavigatorから起動できない問題がありました。 Navigatorのエラーメッセージは、次のようになっています。 【The file /Users/xxx/anaconda3/bin/Jupyter_mac.command does not exist.】 jupyter_mac.command does not exist.  問題は、インストールまたはNavigatorが参照してい ...

ReadMore

Apple Silicon Mac 用 Anacondaバージョン更新・インストール

2025/2/5

Apple Silicon用に新しいバージョンのAnacondaがリリースされていたので、Navigatorの更新を兼ねてインストールします。 (Mac OSの更新(Sequoia15.3)によって、使用中のNavigatorが起動しなくなったため) Anaconda Navigatorのインストール  以下のAnacondaのサイトにアクセスします。最近のAIに対する、人と資本、計算リソースの流れを反映した画面に様変わりしています。 https://www.anaconda.com  【1】画面左上のP ...

ReadMore

リスクモデル

CausalImpactによる為替レート推移の因果推論

Counterfactualの推論

 Counterfactual(もしそれが発生していなければ、どうなっていたか)の概念についてPythonのライブラリを使った検証例について熟考していたところ、同様のCounterfactualに関するのRパッケージがCRANに提供されているため、このライブラリを評価してみました。それは"CausalImpact"というベイズ構造化モデルを使った因果推論のRパッケージです。

 このパッケージはグーグル社のKay H. BrodersenよりApacheライセンスで提供されています。内部でbstsライブラリ(Bayesian structual time series)、Boomライブラリ(Bayesian Object Oriented Model)を使っています。

 時系列上の現象で作られた介入または干渉(intervention)[ 注 ]について因果の影響を予測するのは難しいことです。パッケージの目的は、interventionの後で、もしその介入または干渉(intervention)が発生していなければ、どのように反応が進んだかを予測するために、構造ベイズ時系列モデルを使うことで、この困難さにとり組むことです。

注:干渉または介入(intervention)

ここでいうinterventionとは、Judea Pearlのdo-operaterによる因果推論の intervention を指しています。

因果加法モデル(causal additive model)では、因果モデルの主要なツールとして、Pearlによってdo-calculus が導入されました。通常の条件確率 P[Y|X] はXの観測値 x とリンクしますが、do(.)条件確率 P[ Y| do(X=x) ]は強制してXに値 x を与えます。二つの条件確率はlookingとdoing の対立概念です。

参考文献

"Inferring causal impact using Bayesian structural time-series models"
Kay H. Brodersen Fabian Gallusser Jim Koehler Nicolas Remy Steven L. Scott

"Causality Models,Reasoning, and Inference" Judea Pearl

インストール

CausalImpactをCRANからインストールします。Boomを要求するのでBoomもインストールします。

> install.packages("Boom")
 --- このセッションで使うために、CRAN のミラーサイトを選んでください --- 
 URL 'https://mirrors.nics.utk.edu/cran/bin/macosx/big-sur-arm64/contrib/4.2/Boom_0.9.11.tgz' を試しています 
Content type 'application/x-gzip' length 87420992 bytes (83.4 MB)
==================================================
downloaded 83.4 MB


 ダウンロードされたパッケージは、以下にあります 
 	/var/folders/z3/y2vb_4653kjcytsygg5bkv7w0000gn/T//Rtmpb5olu1/downloaded_packages 
> install.packages(CausalImpact)
 要求されたパッケージ bsts をロード中です 
 要求されたパッケージ BoomSpikeSlab をロード中です 
 要求されたパッケージ Boom をロード中です 

 次のパッケージを付け加えます: ‘Boom’ 

 以下のオブジェクトは ‘package:stats’ からマスクされています:

    rWishart


 次のパッケージを付け加えます: ‘BoomSpikeSlab’ 

 以下のオブジェクトは ‘package:stats’ からマスクされています:

    knots

 要求されたパッケージ zoo をロード中です 

 次のパッケージを付け加えます: ‘zoo’ 

 以下のオブジェクトは ‘package:base’ からマスクされています:

    as.Date, as.Date.numeric

 要求されたパッケージ xts をロード中です 

 次のパッケージを付け加えます: ‘bsts’ 

 以下のオブジェクトは ‘package:BoomSpikeSlab’ からマスクされています:

    SuggestBurn

サンプルデータ

 期間2021年5月12日〜2023年3月17日のドル円為替レートを例に評価してみます。データポイントは東欧の侵攻のタイムスパンに属しています。為替の時系列データはcsvファイルで読み込むことを想定しています。

> library(CausalImpact)
> usdfxr <- read.csv(file="./Downloads/xxx/USDJPY.csv",encoding="UTF-8", header=F, sep=",")
> tail(usdfxr)
            V1       V2      V3       V4      V5 V6
432 2023-03-10 136.1675  136.99  134.119  134.86  0
433 2023-03-13 134.4365 135.037  132.298 133.211  0
434 2023-03-14  133.209 134.898  133.039 134.242  0
435 2023-03-15  134.242 135.112 132.2235 133.344  0
436 2023-03-16  133.344 133.826  131.729 133.483  0
437 2023-03-17  133.482  133.58  131.577 131.846  0

ヘッダを定義します。

> names(usdfxr) <-c("date","open","high","low","close","volume")
> head(usdfxr)
        date     open     high     low    close volume
1       date     open     high     low    close volume
2 2021-05-12  108.613  109.209 108.611  109.032      0
3 2021-05-13  109.669  109.785 109.482 109.5435      0
4 2021-05-14 109.4545 109.6535  109.21  109.348      0
5 2021-05-17  109.281  109.502 109.076  109.218      0
6 2021-05-18   109.21  109.285 108.839  108.946      0
> usd_close <- c(as.numeric(as.character(usdfxr[-1,]$close)),NA)
> head(usd_close)
[1] 109.0320 109.5435 109.3480 109.2180 108.9460 108.8980

CausalImpactのトレーニングで用いるデータの終端の詳細を規定します。モデルのトレーニング用(Pre-intervention period)、Counterfactual予測(post-intervention period)

> pre.period <- c(1, 195)
> post.period <- c(196, 430)

推論を実行するために、CausalImpactの分析を走らせます。

> impact <-CausalImpact(usd_close, pre.period,post.period)
> plot(impact)

 デフォルトでは三つのパネルを表示します。最初の表示が、事後の処置用のCounterfactual予測。2番目のパネルが観測データとCounterfactual予測の相違です。3番目のパネルは2番目のパネルからinterventionの蓄積の影響を図示しています。

分析結果

 分析の数値結果を得るには

> summary(impact)
Posterior inference {CausalImpact}

                         Average      Cumulative    
Actual                   134          31594         
Prediction (s.d.)        115 (2.7)    27103 (628.2) 
95% CI                   [110, 120]   [25893, 28285]
                                                    
Absolute effect (s.d.)   19 (2.7)     4491 (628.2)  
95% CI                   [14, 24]     [3309, 5701]  
                                                    
Relative effect (s.d.)   17% (2.7%)   17% (2.7%)    
95% CI                   [12%, 22%]   [12%, 22%]    

Posterior tail-area probability p:   0.00113
Posterior prob. of a causal effect:  99.88713%

For more details, type: summary(impact, "report")

 上記CausalImpactの事後推論の結果に表示されているActualは実際のデータ、Absolute effectは実際のデータと予測値の乖離、Relative effectはデータと予測値の乖離の%表示を意味しています。Averageは平均、Cumulativeは累積値です。

 95% CIは 95%のConfidence Intervalの略です。確率分布の中心から離れた両端の極端な値(上位のテイルと下位のテイル部分)を外した部分を指しており、信頼度が95%の確率でこの範囲に入ることを意味していいます。

 推論の結果は、予測値が平均115円で95%の確率で110円から120円の間にあることを示し、実際のデータ(134円)が平均で 17%乖離していることを示しています。

 posterior tail-area probability p(事後テイル領域確率): は、この結果が偶然に発生する確率を意味し、その値は非常に小さくなっています(p=0.00113%)。 これは乖離の原因としては統計的に非常に高い因果性があることを意味します。

 Posterior prob. of causal effect:がその確率を示しており、99.88713% の確率で因果性があることを示しています。

備考

 CausalImpactではトレーニングに使うモデルは、ベイズ構造化時系列モデルを用いています。パラメータの設定は、データセットをトレーニング用と予測用に分離して設定するだけなので、簡易にCausal effectに関するベイズ推論を実行することができます。ただし、内部で使用するモデルはベイズ構造化時系列モデルに限定されます。上記の例では非常によく適合しています。

 季節要因やその他固有の変数を追加し、詳細なモデルを特別に作り、Counterfactualの予測をするにはコードの量もMCMCの所要時間も要します。階層ベイズでは数日間MCMCを走らせることがあります。

 状態空間モデルで適合できる時系列データでは、このライブラリを使うことで、所要時間もかからず簡単に因果性の検証ができるようです。

サンプルデータとして用いた為替レートの推移については、以下にも記述。

-リスクモデル
-, , , ,