✍️

LiNGAMで因果探索する際の概観分析について調査した(線形性)

に公開

はじめに

こんにちは、因果探索アプリケーション Causalas 開発の井手です。

今回は、因果探索アルゴリズムの一つであるLiNGAMを用いた因果探索における、概観分析について調査しました。
LiNGAMに関連する論文を中心に調査を行い、因果探索する際に共通して実施される概観分析の項目として、線形性の分析方法についてまとめましたので紹介します。

LiNGAMの概観分析における正規性の確認については、前回の記事を参照してください。

線形性

LiNGAMは線形性を前提とした因果探索手法です。
そのため、多くの論文では因果探索の実行前に各変数の線形性を検証することで、LiNGAMの前提条件を満たしているか確認しています。

ペアプロット(散布図行列)

線形性の確認する方法としては、ペアプロット(散布図行列)ピアソンの相関係数のヒートマップを描画して視覚的に分析する方法が一般的です。

ペアプロット(散布図行列)による分析では、各変数のペアごとに散布図を作成し、変数間に直線的な関係があるかどうかを確認します。
また、方向によって正の相関か負の相関かを確認したり、データの中に線形関係から外れた値が存在するかどうかなども確認することができます。

# データを生成
df = pd.DataFrame({
    'x0': np.linspace(0, 10, 100),  # 線形関係の変数
    'x1': np.linspace(0, 10, 100) + np.random.normal(0, 1, 100),  # 線形関係の変数
    'x2': np.sin(np.linspace(0, 10, 100)),  # 非線形関係の変数
    'x3': np.random.rand(100),  # 独立関係の変数
})

# ペアプロットの作成
sns.pairplot(df, plot_kws={'edgecolor': 'none', 'alpha': 0.5})
plt.gcf().set_size_inches(5, 5)
plt.show()

ピアソンの相関係数

ピアソンの相関係数は、2つの変数間の線形関係の強さと方向をもとめる指標です。
1に近いほど正の線形関係が強く、-1に近いほど負の線形関係が強いことを表します。0の場合は線形関係がありません。
また、ヒートマップを使用して各変数間の相関係数を視覚的に表現することで、どの変数間の線形関係が強いかを一目で確認することができます。

# データを生成
df = pd.DataFrame({
    'x0': np.linspace(0, 10, 100),  # 線形関係の変数
    'x1': np.linspace(0, 10, 100) + np.random.normal(0, 1, 100),  # 線形関係の変数
    'x2': np.sin(np.linspace(0, 10, 100)),  # 非線形関係の変数
    'x3': np.random.rand(100),  # 独立関係の変数
})

# 相関行列の計算
corr = df.corr()

# ヒートマップの作成
sns.heatmap(corr, annot=True, vmin=-1, vmax=1, cmap='Blues')
plt.gcf().set_size_inches(4, 4)
plt.show()

例えば以下の論文では、ペアプロット(散布図行列)やピアソンの相関係数のヒートマップを確認しています。

Towards Personalized Anti-Phishing: Counterfactual Explanation Approach[1]

この研究では、フィッシングに対する個人の脆弱性を高める特性が何か特定することを目的として因果探索を実施しています。
相互に相関している変数について、例えばストレスや感情の安定性などの変数に線形関係が観察されるとしています。

多重共線性

また、線形性を確認する上で重要なのが多重共線性です。
多重共線性とは説明変数間に強い相関が存在する状態を指し、これがあると回帰分析の結果が不安定になり、因果関係の解釈が難しくなる可能性があります。
そのため、多重共線性の高い変数を特定し、必要に応じてそれらの変数を除外している論文が存在します。

多重共線性の程度を示す指標として、VIF(Variance Inflation Factor) があります。
一般的にVIFが10を超える場合、その変数は多重共線性の問題が発生する可能性があると判断されます。

# データを生成
df = pd.DataFrame({
    'x0': np.linspace(0, 10, 100),  # 線形関係の変数
    'x1': np.linspace(0, 10, 100) + np.random.normal(0, 1, 100),  # 線形関係の変数
    'x2': np.sin(np.linspace(0, 10, 100)),  # 非線形関係の変数
    'x3': np.random.rand(100),  # 独立関係の変数
})

# 相関行列の計算
corr = df.corr()

# VIF値の計算
vif = np.diag(np.linalg.pinv(corr))
for i, value in enumerate(vif):
    # x0のVIF値 = 11.71843
    # x1のVIF値 = 11.65690
    # x2のVIF値 = 1.06883
    # x3のVIF値 = 1.01957
    print(f'x{i}のVIF値 = {value:.5f}')

例えば以下の論文では、VIFを計算し多重共線性を確認しています。

Shared micromobility, perceived accessibility, and social capital[2]

この研究では、シェアードマイクロモビリティの利用とアクセシビリティ、社会資本の相互関係を調査する目的で因果探索を実施しています。
VIF値を計算した結果、対象変数に関して問題のある多重共線性は見つからなかったとしています。

線形性が確認できない、もしくは多重共線性がある場合

データセット内の変数間の関係を確認した結果、線形性が確認できない、もしくは多重共線性がある場合には、以下のアクションが考えられます。

そのままLiNGAMを実行

例えば以下の論文では、線形関係には因果関係を定性的に分析しやすいというメリットを説明しています。

Principles and strategies for developing network models in cancer.[3]

線形関係を仮定する場合は、例えば「変数Aの値が増加すると変数Bの値も増加する」といった定性的な特徴を特定できます。
一方、非線形関係の場合は、例えば「変数Aの値が増加すると変数Bの値も増加するが、あるポイントを超えると変数Bの値は減少し、変化率も大きくなる」のように因果関係の解釈が難しいものが多く、ドメイン知識が必要になります。

そのため、ドメイン知識などで明らかな非線形な関係が確認されていない場合には、近似として線形を仮定し、LiNGAMを試してみることを推奨します。

変数を除外

非線形の変数や多重共線性を持つ変数をデータセットから除外してLiNGAMを実行することも可能です。ただし、その変数が未観測共通原因となるリスクがあります。

ドメイン知識などに基づき、その変数が未観測共通原因にはならないと判断できる場合には、変数を除外してLiNGAMを実行することが有用です。
また、未観測共通原因があることを仮定した因果探索アルゴリズムを実行することも一つの方法です。
未観測共通原因を仮定したアルゴリズムには、BottomUpParceLiNGAM[4]RCD[5]CAM-UV[6]などがあります。

グループを仮定するアルゴリズムを使用

通常のLiNGAMアルゴリズムが適さないと判断される場合は、他の因果探索アルゴリズムを検討する必要があります。
例えば、Pythonのlingamパッケージには含まれていませんが、複数の変数をグループ化して因果探索を行うGroupLiNGAMアルゴリズムも存在します。

GroupLiNGAM: Linear non-Gaussian acyclic models for sets of variables[7]

GroupLiNGAMは、複数の変数をグループ化することでグループ同士の因果関係を探索するので、多重共線性が存在する変数をグループ化して因果探索することによって多重共線性の影響を除外することができます。

おわりに

本記事では、LiNGAMを適用する際の概観分析について論文を調査しました。データの線形性の概観分析による対応は、LiNGAMに関連する論文の中でも特に出現頻度が高く重要な分析であることが分かります。これらの分析を行うことで、より信頼性の高い因果関係の推定が可能になります。

脚注
  1. Z. Fan, W. Li, K. Laskey, K. C. Chang. Towards Personalized Anti-Phishing: Counterfactual Explanation Approach. Papers in Evolutionary Economic Geography, PREPRINT (Version 1) available at Research Square, 2024 ↩︎

  2. Z. An, C. Mullen, X. Guan, D. Ettema, E. Heinen. Shared micromobility, perceived accessibility, and social capital. Transportation, 1-36, 2024. ↩︎

  3. D. Pe'er and N. Hacohen. Principles and strategies for developing network models in cancer. Cell, 144(6): 864-873, 2011. ↩︎

  4. T. Tashiro, S. Shimizu, A. Hyvärinen, T. Washio. ParceLiNGAM: a causal ordering method robust against latent confounders. Neural computation, 26(1): 57-83, 2014. ↩︎

  5. T. N. Maeda and S. Shimizu. RCD: Repetitive causal discovery of linear non-Gaussian acyclic models with latent confounders. In Proc. 23rd International Conference on Artificial Intelligence and Statistics (AISTATS2020), Palermo, Sicily, Italy. PMLR 108:735-745, 2020. ↩︎

  6. T. N. Maeda and S. Shimizu. Causal additive models with unobserved variables. In Proc. 37th Conference on Uncertainty in Artificial Intelligence (UAI). PMLR 161:97-106, 2021. ↩︎

  7. Y. Kawahara, K. Bollen, S. Shimizu and T. Washio. GroupLiNGAM: Linear non-Gaussian acyclic models for sets of variables. Arxiv preprint arXiv:1006.5041, 2010. ↩︎

SCREEN AS 因果探索チーム

Discussion