因果推論分析 (Causal Inference Analysis) (空間統計)

サマリー

ランダム化実験を近似し、交絡変数を制御することで、連続要因変数が連続結果変数に及ぼす因果関係を推定します。

統計的実験で要因変数 (薬剤の投与量など) と結果変数 (健康状態など) の因果関係を判断するには、各参加者に特定の要因レベルを無作為に割り当てます。こうすることで、結果における差異が参加者の他の属性 (年齢、既往症、医療へのアクセスなど) に左右されず、要因の差異のみに起因するようにします。 しかし、対照実験を実施することが不可能または非倫理的であることが多いため、因果関係は観察研究によって確立されることがほとんどです。 たとえば、汚染がうつ病の発症率に及ぼす影響を調査するために、人々を意図的に高濃度の汚染にさらし、うつ病がどのような状態になるかを確認することはできません。 できることといえば、サンプル内の人々がどれだけの汚染にさらされていて、うつ病の発症率はどの程度であるかを観察することぐらいでしょう。 しかし、汚染とうつ病の両方に影響を及ぼす変数 (これを「交絡変数」と呼びます) が多数存在するため、これらの変数を制御することなく、因果関係を直接推定することはできません。

このツールでは、ランダム化対照実験のプロセスをエミュレートするために、それぞれの観測に対して傾向スコアを計算します。この傾向スコアは、要因変数と結果変数間の因果関係を保ちながら、交絡変数と要因変数の相関をなくすように、観測に重み付けするために使用されます。 このように重み付けされたデータセットは「擬個体群」と呼ばれることが多く、それぞれの参加者に対して無作為に要因を割り当てる対照実験と類似した性質を持ちます。 ツールは、重み付けされた結果をもとに exposure-response 関数 (ERF) を生成し、母集団のすべてのメンバーに所定の要因値を与えるが交絡変数を変えなかった場合の平均転帰を推定します。

因果推論分析の詳細

因果推論分析ツールの図
要因と結果間の因果効果は、交絡変数のバランスを調整することで推定します。

使用法

  • 因果推論分析では、すべての重要な交絡変数がモデルに含まれていることが前提となっています。 つまり、要因変数と結果変数に影響を及ぼす変数が交絡変数として含まれていなければ、因果効果の推定に偏りが生じます。 このツールでは、すべての重要な交絡変数が含まれているかどうかは判断できないため、要因変数と結果変数に関連する可能性がある変数を考察し、それらをモデルに含めることが非常に重要になります。 含まれていない重要な交絡変数がある場合は、慎重を期して疑念を持ちながらツールの結果を解釈するようにしてください。 あるいは、すべての交絡変数に対してデータを取得するまでツールを使用しないという選択肢もあります。

  • 要因変数は連続変数でなくてはなりませんが (バイナリやカテゴリは使用してはなりません)、交絡変数は連続、カテゴリ、バイナリのいずれでもかまいません。 結果変数は連続変数であることが推奨されますが、バイナリ型の結果変数も使用でき、しばしば確率や割合として解釈されます。

  • このツールでは、空間入力データセットと非空間入力データセットの両方を使用できます。 入力としてはテーブル、ポイント、ポリゴン、ポリラインを使用でき、出力は入力と同じタイプになります。

  • ツールの主な出力は ERF で、アクティブ マップではグラフィック レイヤーとして返され、ジオプロセシング メッセージではイメージとして返されます。 また、[出力 Exposure-Response 関数テーブル] パラメーターを使用し、さまざまな Exposure-Response 値を含むテーブルを作成することもできます。

    ERF の詳細

  • [傾向スコアの計算方法] パラメーターでは、傾向スコアの推定方法を指定できます。 傾向スコアとは、一定の交絡変数が与えられた場合に、特定の要因値を受ける可能性 (または確率) を表します。 傾向スコアは、交絡変数から要因変数を予測するモデルを作成することで推定されます。 使用できる傾向スコアの計算方法は次のとおりです。

  • [バランス調整方法] パラメーターでは、傾向スコアを使用して交絡変数のバランスを調整する方法を指定できます。 次の 2 つのバランス調整方法を使用できます。

    • [傾向スコア マッチング] - それぞれの観測が、傾向スコアが類似しているが要因値が異なる他のさまざまな観測とマッチングされます。 観測の結果値を一致の結果値と比較することで、観測の要因が異なる場合にその結果値がどのようなものになるかを確認できます。 すべての観測をその他のさまざまな観測をマッチングさせた後、それぞれの観測にはバランス加重が割り当てられます。これは、観測が他の観測とマッチングした回数に相当します。 この加重スキームには、一致数が多い観測は、要因変数の多くの値に共通する交絡変数を持つため、因果効果を最も典型的に表しているという根拠があります。
    • [逆傾向スコア加重] - 傾向スコアを反転し、要因の全確率を乗じることで、観測にバランス加重を割り当てます。 低い傾向スコアを持つ観測に対して高いバランス加重が適用され、高い傾向スコアを持つ観測に対して低いバランス加重が適用されます。 この加重スキームには、傾向スコアが特定の交絡変数に対して要因値がどれだけ一般的であるか、あるいは一般的でないかの尺度となるという根拠があります。 一般的ではない観測 (傾向スコアが低い観測) の影響を大きくし (バランス加重を増やす)、一般的な観測の影響を少なくすることで、要因変数のすべての値にわたって交絡変数の影響の全体的な分布が均等に保たれます。

    傾向スコア、傾向スコア マッチング、逆傾向スコア加重の詳細

  • デフォルトでは、ツールは要因値の上下 1 パーセントを含む観測をトリミング (分析から除外) します。 要因変数の極値や外れ値により、因果推論分析にバイアスが生じることがあります。 このような極値をトリミングすることで、因果効果の推定を歪めかねない、影響力のある観測の影響を抑えることができます。 要因のトリミング量を変更するには、[要因の下位分位数] パラメーターと [要因の上位分位数] パラメーターを使用します。 また、[傾向スコアの下位分位数] パラメーターと [傾向スコアの上位分位数] パラメーターを使用して、傾向スコアをもとに観測をトリミングすることもできますが、デフォルトでは傾向スコアのトリミングは行われません。 逆傾向スコア加重を使用する場合、最も低い傾向スコアのいくつかをトリミングしなくてはならないことがあります。これは、傾向スコアがゼロに近くなると、バランス加重が大きく不安定になることがあるからです。

  • 出力フィーチャまたはテーブルには、傾向スコアやバランス加重のフィールド、およびフィーチャがトリミングされたかどうかを示すフィールドが含まれます (0 の場合はフィーチャはトリミングされており、1 の場合はフィーチャが分析に含まれていることを意味します)。 要因変数、結果変数、交絡変数のコピーも含まれます。

  • 交絡変数と要因変数の間でバランスを調整することが、要因変数と結果変数の因果関係を導出するうえで重要となります。 このツールでは、バランス加重が交絡変数のバランスを効果的に調整しているかどうかを判断するために、各交絡変数と要因変数間の加重相関を計算します (バランス加重によって加重)。 次に、加重相関が集計され、閾値と比較されます。 集計された相関が閾値よりも低い場合、交絡変数はバランス調整されていると判断されます。 [バランス タイプ] パラメーターで集計タイプ (平均、中央値、最大絶対相関) を指定し、[バランスの閾値] パラメーターで閾値を指定します。 デフォルトでは、ツールは平均絶対相関と閾値 0.1 を使用します。 閾値として 0.1 を用いるのは一般的な慣例ですが、閾値は専門分野、研究目的、調査対象の母集団の本質的な特徴に従って調整する必要があります。 閾値が低ければ、因果効果の推定におけるバイアスに対する許容度が低いことを意味します。しかし、閾値が低ければバランスを調整するのが困難になります。

  • バランス加重によって交絡変数のバランスが十分にとられない場合、ツールはエラーを返し、ERF を生成しません。しかし、交絡変数のバランスがどの程度効果的にとれているかを示す情報とともに、さまざまなメッセージが表示されます。 まず、交絡変数の選択と、[傾向スコアの計算方法] パラメーターおよび [バランス調整方法] パラメーターのさまざまなオプションを用いて、エラーの解消を試みることをお勧めします。 それでもエラーが解消しない場合は、[バランス タイプ] パラメーターのオプションを変更するか、[バランスの閾値] パラメーターの値を大きくすることで ERF を生成できますが、これによって因果効果の推定にバイアスが生じることがあります。

    バランス調整済みの交絡変数を達成する方法

  • 交絡変数は、要因変数の全範囲にわたりさまざまな値を含む必要があります。 カテゴリ交絡変数の場合、カテゴリの各レベル内に幅広い要因値が含まれる必要があります。また、それぞれのカテゴリ変数に含まれるカテゴリ数は 60 を超えてはなりません。 傾向スコア マッチングの場合、各交絡変数のすべての値にわたって要因変数のバリエーションが十分でなければ、バランスを調整することが困難になります。

  • 各観測の what-if シナリオ (「反事実シナリオ」と呼ばれることもあります) を調査するには、[新しい要因を計算するためのターゲット結果値] パラメーターを使用できます。 ツールは、各観測の局所 ERF を使用し、望ましい結果を得るために各観測で必要な要因レベルを計算します。 たとえば、各郡では、喘息による入院率を所定のターゲット値以下にするために必要な汚染レベルを推定することができます。 ターゲット結果値が提示されている場合、出力フィーチャまたはテーブルにはターゲット結果ごとに 2 つのフィールドが追加されます。1 つは新しい要因値のフィールド、もう 1 つは新しい要因値と現在の要因値との差のフィールドです。 ターゲット結果を生成する要因値が複数存在する場合、ツールでは、観測の現在の要因値に最も近い値を使用します。 同様に、[新しい結果を計算するためのターゲット要因値] パラメーターにターゲット要因値を指定することで、さまざまなターゲット要因に対する結果変数の局所的な変化を調査することもできます。

    出力 ERF テーブルが作成される場合、ターゲット結果またはターゲット要因値はテーブルの末尾に付加されます。 ターゲット結果に対して複数の解が存在する場合は、すべての解がテーブルに含まれます。

  • [Exposure-Rresponse 関数のポップアップの有効化] パラメーターをオンにすると、各観測に対して局所 exposure-response 関数が作成されます。 局所 ERF は、出力フィーチャまたはテーブルのポップアップにチャートとして表示されます。 局所 ERF を作成するには、固定処置効果の仮定が追加で必要となりますが、これは人種、収入、性別などの変数では違反となることがほとんどです。

    局所 ERF の推定と仮定に関する詳細

    注意:

    観測が多数ある場合、ポップアップの作成はメモリと計算能力に大きな負荷がかかります。 モデリングの探索段階ではポップアップを有効にせずにツールを実行し、他のすべてのツール パラメーターを決定してからポップアップを作成することをお勧めします。

  • [一般化線形回帰分析 (Generalized Linear Regression)] ツールや [フォレストベースおよびブースト分類と回帰分析 (Forest-based and Boosted Classification and Regression)] ツールなどの予測モデルに、交絡変数を説明変数として含めなければ、因果効果を推定できないという認識は誤っています。 しかし、これはすべての説明変数が交絡変数に依存しておらず、すべての関連する変数がモデルに含まれている場合にのみ該当します。 ほとんどのデータセットでは、すべての変数が互いに関連しているため、因果関係を直接推定することはできません。

  • ツールの一般的な方法論については、以下の文献をご参照ください。

    • Khoshnevis, Naeem, Xiao Wu, and Danielle Braun. 2023. "CausalGPS: Matching on Generalized Propensity Scores with Continuous Exposures." R package version 0.4.0. https://CRAN.R-project.org/package=CausalGPS.
    • Wu, Xiao, Fabrizia Mealli, Marianthi-Anna Kioumourtzoglou, Francesca Dominici, and Danielle Braun. 2022. "Matching on Generalized Propensity Scores with Continuous Exposures." Journal of the American Statistical Association. https://doi.org/10.1080/01621459.2022.2144737.

パラメーター

ラベル説明データ タイプ
入力フィーチャまたはテーブル

要因変数、結果変数、交絡変数のフィールドを含む入力フィーチャまたはテーブル。

Feature Layer; Table View
結果テーブル

結果変数の数値フィールド。 これは、要因変数の変化に対応する変数です。 結果変数は、連続かバイナリでなくてはなりません (カテゴリは使用できません)。

Field
要因フィールド

要因変数の数値フィールド (「処置変数」と呼ばれることもあります)。 結果変数に変化をもたらす変数。 要因変数は、連続でなくてはなりません (バイナリとカテゴリは使用できません)。

Field
交絡変数

交絡変数のフィールド。 要因変数と結果変数の両方に関連する変数で、要因変数と結果変数間の因果効果を推定するためにはバランスをとる必要があります。 交絡変数は、連続、カテゴリ、バイナリのいずれでもかまいません。 テキスト フィールドはカテゴリ、整数フィールドはカテゴリか連続、その他の数値フィールドは連続でなくてはなりません。

Exposure-Response 関数の偏りをなくすには、要因変数と結果変数に関連するすべての変数を交絡変数として含める必要があります。

Value Table
出力フィーチャまたはテーブル

傾向スコア、バランス重み、フィーチャがトリミング (分析から除外) されているかどうかを示すフィールドを含む出力フィーチャまたはテーブル。 要因変数、結果変数、交絡変数も含まれます。

Feature Class; Table
傾向スコアの計算方法
(オプション)

各観測の傾向スコアを計算するために使用する方法を指定します。

観測の傾向スコアとは、交絡変数の値が与えられた場合に、観測された要因値を受け取る可能性 (または確率) を指します。 傾向スコアが高ければ、関連する交絡変数を持つ個体において要因値は一般的であることを意味し、傾向スコアが低ければ、交絡変数を持つ個体において要因値は一般的ではないことを意味します。 たとえば、高血圧 (要因変数) であるが高血圧の危険因子 (交絡因子) を持たない個人の場合、この個人の傾向スコアは低くなります。これは、危険因子がないのに高血圧になることは一般的ではないからです。 反対に、多くの危険因子を持つ個人の場合、高血圧になることはより一般的なので、傾向スコアも高くなります。

傾向スコアは、交絡変数を説明変数として使用し、要因変数を予測する統計モデルによって推定されます。 OLS 回帰モデルまたは勾配ブースト回帰ツリーを使用する機械学習モデルを使用できます。 まず回帰を使用し、回帰で交絡変数のバランスがとれなかった場合にのみ勾配ブースティングを使用することをお勧めします。

  • 回帰OLS 回帰は、傾向スコアを推定するために使用されます。 これがデフォルトです。
  • 勾配ブースティング勾配ブースト回帰ツリーは、傾向スコアを推定するために使用されます。
String
バランス調整方法
(オプション)

交絡変数のバランスを調整する方法を指定します。

それぞれの方法は、交絡変数と要因変数間の相関を除去する一連のバランス重みを推定します。 まずマッチングを使用し、マッチングで交絡変数のバランスをとれなかった場合にのみ逆傾向スコア加重を使用することをお勧めします。 逆傾向スコア加重は傾向スコア マッチングよりも短時間で計算されるため、データに対してマッチングの計算時間が現実的ではない場合にもお勧めします。

  • 傾向スコア マッチング傾向スコア マッチングは、交絡変数のバランスをとるために使用されます。 これがデフォルトです。
  • 逆傾向スコア加重逆傾向スコア加重は、交絡変数のバランスをとるために使用されます。
String
Exposure-Response 関数のポップアップの有効化
(オプション)

観測の局所 ERF を表示するポップアップ チャートを、観測ごとに作成するかどうかを指定します。

  • オン - 局所 ERF ポップアップ チャートは出力フィーチャまたはテーブルに作成されます。
  • オフ - 局所 ERF ポップアップ チャートは出力フィーチャまたはテーブルに作成されません。 これがデフォルトです。
Boolean
出力 Exposure-Response 関数テーブル
(オプション)

exposure-response 関数の値を含むテーブル。 このテーブルには、最小要因と最大要因間の 200 の等間隔の要因値 (トリミング後) と、exposure-response 関数から推定された、対応する応答値が表示されます。 応答フィールドは、母集団の全メンバーが関連する要因値を受け取った場合の結果変数の平均値を表します。 ブートストラップ信頼区間が作成される場合、要因値の信頼区間の上限と下限、および信頼区間の構築に使用された標準偏差とサンプル数を含む追加フィールドが作成されます。 ターゲット結果値または要因値が指定されている場合、テーブルの末尾に付加されます。

Table
新しい要因を計算するためのターゲット結果値
(オプション)

ターゲット結果値のリスト。ここから、観測ごとに結果を得るために必要な要因の変化量が計算されます。 たとえば、要因変数が大気質指標で、結果変数が郡の年間喘息入院率である場合、喘息入院率を 0.01、0.005、0.001 未満にするために大気質指標をどれだけ削減する必要があるかを決定できます。 指定されたターゲット結果値ごとに、出力に新しいフィールドが 2 つ作成されます。 最初のフィールドにはターゲット結果を生成する要因値が含まれ、2 つ目のフィールドにはターゲット結果を得るために必要な要因変数の変化量が含まれます (正の値は要因を増加させる必要があることを示し、負の値は要因を減少させる必要があることを示します)。 場合によっては、観測に解がないこともあるので、要因変数を変えることで実現できるターゲット結果のみを指定する必要があります。 たとえば、喘息による入院率をゼロにするような PM2.5 レベルは存在しないため、ターゲット結果を 0 にすると解なしになります。 ターゲット結果をもたらす要因値が複数ある場合、要因への変化量が最小の要因値が使用されます。

出力 exposure-response 関数テーブルが作成される場合、ターゲット結果値と関連する要因値がテーブルの末尾に付加されます。 複数の解が存在する場合、結果値が繰り返される複数のレコードがテーブルに付加されます。

局所 ERF ポップアップ チャートが作成される場合、ターゲット結果と関連する要因値が各観測のポップアップに表示されます。

Double
新しい結果を計算するためのターゲット要因値
(オプション)

観測ごとに新しい結果を計算するために使用されるターゲット要因値のリスト。 ツールは、要因変数がターゲット要因に変更された場合に観測が受け取る新しい結果値を、ターゲット要因値ごとに推定します。 たとえば、要因変数が大気質指標で、結果変数が郡の年間喘息入院率である場合、大気質のレベルが変わると各観測の入院率がどのように変化するかを推定できます。 指定されたターゲット要因値ごとに、出力に新しいフィールドが 2 つ作成されます。 最初のフィールドには、観測がターゲット要因を受け取った場合に推定される結果値、2 つ目のフィールドには結果変数の推定変化量が含まれます (正の値は結果変数が増加することを示し、負の値は結果変数が減少することを示します)。 ターゲット要因は、トリミング後の要因変数の範囲内である必要があります。

出力 exposure-response 関数テーブルが作成される場合、ターゲット要因値と関連する応答値がテーブルの末尾に付加されます。

局所 ERF ポップアップ チャートが作成される場合、ターゲット要因値と関連する結果が各フィーチャのポップアップに表示されます。

Double
要因の下位分位数
(オプション)

要因変数のトリミングに使用される下位分位数。 この分位数よりも小さい要因値を含む観測は、傾向スコアを推定する前に分析から除外されます。 指定する値は、0 ~ 1 の間の値でなければなりません。 デフォルトは 0.01 です。つまり、要因値の下位 1 パーセントがトリミングされます。 傾向スコアの推定を改善するために、最小の要因値をある程度トリミングすることをお勧めします。

Double
要因の上位分位数
(オプション)

要因変数のトリミングに使用される上位分位数。 この分位数よりも大きい要因値を含む観測は、傾向スコアを推定する前に分析から除外されます。 指定する値は、0 ~ 1 の間の値でなければなりません。 デフォルトは 0.99 です。つまり、要因値の上位 1 パーセントがトリミングされます。 傾向スコアの推定を改善するために、最大の要因値をある程度トリミングすることをお勧めします。

Double
傾向スコアの下位分位数
(オプション)

傾向スコアのトリミングに使用される下位分位数。 この分位数よりも少ない傾向スコアを持つ観測は、傾向スコア マッチングまたは逆傾向スコア加重を行う前に分析から除外されます。 指定する値は、0 ~ 1 の間の値でなければなりません。 デフォルトは 0 で、トリミングは実行されません。

多くの場合、下位の傾向スコアのトリミングは、逆傾向スコア加重を使用する場合に必要となります。 傾向スコアがゼロに近くなると、バランス重みが大きく不安定になることがあります。

Double
傾向スコアの上位分位数
(オプション)

傾向スコアのトリミングに使用される上位分位数。 この分位数よりも大きい傾向スコアを持つ観測は、傾向スコア マッチングまたは逆傾向スコア加重を行う前に分析から除外されます。 指定する値は、0 ~ 1 の間の値でなければなりません。 デフォルトは 1 で、トリミングは実行されません。

Double
要因ビンの数
(オプション)

傾向スコア マッチングに使用される要因ビンの数。 マッチングでは、要因変数は等間隔のビンに分割され、マッチングはそれぞれのビン内で行われます。 少なくとも 2 つの要因ビンが必要です。また、各ビンに少なくとも 5 つの要因値を含めることを推奨します。 値を指定しない場合、ツールの実行中に値が見積もられ、メッセージに表示されます。

Long
傾向スコアの要因に対する相対加重
(オプション)

傾向スコア マッチングを実行する際に使用される、要因変数に対する傾向スコアの相対加重 (スケールと呼ばれることもあります)。 各要因ビン内で、傾向スコアと要因変数の値の差を用いて一致が決定されます。 このパラメーターは、各基準の優先順位付けの方法を指定します。 たとえば、0.5 に等しい値とは、一致する観測を見つける際に、傾向スコアと要因変数に対して等しい重みを与えることを意味します。

値を指定しない場合、ツールの実行中に値が見積もられ、メッセージに表示されます。 最適なバランスを実現する値は予測困難なので、ツールを使用して値を推定することをお勧めします。 手動で値を指定すると、計算時間の短縮や、以前の結果の再現が可能です。 結果として得られる exposure-response 関数が、重みが大きい観測の垂直バンドを示す場合、相対加重を増やすことでより現実的で正確な exposure-response 関数を得られる可能性があります。

Double
バランス タイプ
(オプション)

交絡変数のバランスがとれているかどうかを判断する方法を指定します。 傾向スコア マッチングまたは逆傾向スコア加重で重みを推定した後、各交絡変数に対して加重相関が計算されます。 平均、中央値、または最大絶対相関がバランスの閾値よりも小さい場合、交絡変数はバランスがとれていると判断されます。つまり、交絡変数と要因変数の相関は十分に解消されていることを意味します。

  • 平均平均絶対相関がバランスの閾値よりも小さい場合、交絡変数のバランスはとれていると見なされます。 これがデフォルトです。
  • 中央値中央絶対相関がバランスの閾値よりも小さい場合、交絡変数のバランスはとれていると見なされます。
  • 最大最大絶対相関がバランスの閾値よりも小さい場合、交絡変数のバランスはとれていると見なされます。
String
バランスの閾値
(オプション)

交絡変数の加重相関と比較し、バランスがとれているかどうかを判断する閾値。 指定する値は、0 ~ 1 の間の値でなければなりません。 バランスの閾値が大きいほど、交絡変数の不均衡や exposure-response 関数のバイアスの許容度が大きいことを意味します。 デフォルトは 0.1 です。

Double
バンド幅推定方法
(オプション)

exposure-response 関数のバンド幅を推定するために使用される方法。

  • プラグインバンド幅を推定するには、プラグイン方法が使用されます。 これがデフォルトです。
  • 交差検証二乗平均平方根の交差検証の誤差を最小化するバンド幅が使用されます。
  • 手動カスタム バンド幅が使用されます。
String
バンド幅
(オプション)

手動バンド幅を使用する場合の exposure-response 関数のバンド幅値。

Double
ブートストラップ信頼区間の作成
(オプション)

exposure-response 関数の 95% 信頼区間が、M-out-of-N ブートストラップを使用して作成されるかどうかを指定します。 信頼区間は、出力グラフィックス レイヤーで exposure-response 関数の上下に端線として表示されます。

  • オン - exposure-response 関数の信頼区間は作成されます。
  • オフ - exposure-response 関数の信頼区間は作成されません。 これがデフォルトです。
Boolean

arcpy.stats.CausalInferenceAnalysis(in_features, outcome_field, exposure_field, confounding_variables, out_features, {ps_method}, {balancing_method}, {enable_erf_popups}, {out_erf_table}, {target_outcomes}, {target_exposures}, {lower_exp_trim}, {upper_exp_trim}, {lower_ps_trim}, {upper_ps_trim}, {num_bins}, {scale}, {balance_type}, {balance_threshold}, {bw_method}, {bandwidth}, {create_bootstrap_ci})
名前説明データ タイプ
in_features

要因変数、結果変数、交絡変数のフィールドを含む入力フィーチャまたはテーブル。

Feature Layer; Table View
outcome_field

結果変数の数値フィールド。 これは、要因変数の変化に対応する変数です。 結果変数は、連続かバイナリでなくてはなりません (カテゴリは使用できません)。

Field
exposure_field

要因変数の数値フィールド (「処置変数」と呼ばれることもあります)。 結果変数に変化をもたらす変数。 要因変数は、連続でなくてはなりません (バイナリとカテゴリは使用できません)。

Field
confounding_variables
[[var1, cat1], [var2, cat2],...]

交絡変数のフィールド。 要因変数と結果変数の両方に関連する変数で、要因変数と結果変数間の因果効果を推定するためにはバランスをとる必要があります。 交絡変数は、連続、カテゴリ、バイナリのいずれでもかまいません。 テキスト フィールドはカテゴリ、整数フィールドはカテゴリか連続、その他の数値フィールドは連続でなくてはなりません。

Exposure-Response 関数の偏りをなくすには、要因変数と結果変数に関連するすべての変数を交絡変数として含める必要があります。

Value Table
out_features

傾向スコア、バランス重み、フィーチャがトリミング (分析から除外) されているかどうかを示すフィールドを含む出力フィーチャまたはテーブル。 要因変数、結果変数、交絡変数も含まれます。

Feature Class; Table
ps_method
(オプション)

各観測の傾向スコアを計算するために使用する方法を指定します。

観測の傾向スコアとは、交絡変数の値が与えられた場合に、観測された要因値を受け取る可能性 (または確率) を指します。 傾向スコアが高ければ、関連する交絡変数を持つ個体において要因値は一般的であることを意味し、傾向スコアが低ければ、交絡変数を持つ個体において要因値は一般的ではないことを意味します。 たとえば、高血圧 (要因変数) であるが高血圧の危険因子 (交絡因子) を持たない個人の場合、この個人の傾向スコアは低くなります。これは、危険因子がないのに高血圧になることは一般的ではないからです。 反対に、多くの危険因子を持つ個人の場合、高血圧になることはより一般的なので、傾向スコアも高くなります。

傾向スコアは、交絡変数を説明変数として使用し、要因変数を予測する統計モデルによって推定されます。 OLS 回帰モデルまたは勾配ブースト回帰ツリーを使用する機械学習モデルを使用できます。 まず回帰を使用し、回帰で交絡変数のバランスがとれなかった場合にのみ勾配ブースティングを使用することをお勧めします。

  • REGRESSIONOLS 回帰は、傾向スコアを推定するために使用されます。 これがデフォルトです。
  • GRADIENT_BOOSTING勾配ブースト回帰ツリーは、傾向スコアを推定するために使用されます。
String
balancing_method
(オプション)

交絡変数のバランスを調整する方法を指定します。

それぞれの方法は、交絡変数と要因変数間の相関を除去する一連のバランス重みを推定します。 まずマッチングを使用し、マッチングで交絡変数のバランスをとれなかった場合にのみ逆傾向スコア加重を使用することをお勧めします。 逆傾向スコア加重は傾向スコア マッチングよりも短時間で計算されるため、データに対してマッチングの計算時間が現実的ではない場合にもお勧めします。

  • MATCHING傾向スコア マッチングは、交絡変数のバランスをとるために使用されます。 これがデフォルトです。
  • WEIGHTING逆傾向スコア加重は、交絡変数のバランスをとるために使用されます。
String
enable_erf_popups
(オプション)

観測の局所 ERF を表示するポップアップ チャートを、観測ごとに作成するかどうかを指定します。

  • CREATE_POPUP局所 ERF ポップアップ チャートは出力フィーチャまたはテーブルに作成されます。
  • NO_POPUP局所 ERF ポップアップ チャートは出力フィーチャまたはテーブルに作成されません。 これがデフォルトです。
Boolean
out_erf_table
(オプション)

exposure-response 関数の値を含むテーブル。 このテーブルには、最小要因と最大要因間の 200 の等間隔の要因値 (トリミング後) と、exposure-response 関数から推定された、対応する応答値が表示されます。 応答フィールドは、母集団の全メンバーが関連する要因値を受け取った場合の結果変数の平均値を表します。 ブートストラップ信頼区間が作成される場合、要因値の信頼区間の上限と下限、および信頼区間の構築に使用された標準偏差とサンプル数を含む追加フィールドが作成されます。 ターゲット結果値または要因値が指定されている場合、テーブルの末尾に付加されます。

Table
target_outcomes
[target_outcomes,...]
(オプション)

ターゲット結果値のリスト。ここから、観測ごとに結果を得るために必要な要因の変化量が計算されます。 たとえば、要因変数が大気質指標で、結果変数が郡の年間喘息入院率である場合、喘息入院率を 0.01、0.005、0.001 未満にするために大気質指標をどれだけ削減する必要があるかを決定できます。 指定されたターゲット結果値ごとに、出力に新しいフィールドが 2 つ作成されます。 最初のフィールドにはターゲット結果を生成する要因値が含まれ、2 つ目のフィールドにはターゲット結果を得るために必要な要因変数の変化量が含まれます (正の値は要因を増加させる必要があることを示し、負の値は要因を減少させる必要があることを示します)。 場合によっては、観測に解がないこともあるので、要因変数を変えることで実現できるターゲット結果のみを指定する必要があります。 たとえば、喘息による入院率をゼロにするような PM2.5 レベルは存在しないため、ターゲット結果を 0 にすると解なしになります。 ターゲット結果をもたらす要因値が複数ある場合、要因への変化量が最小の要因値が使用されます。

出力 exposure-response 関数テーブルが作成される場合、ターゲット結果値と関連する要因値がテーブルの末尾に付加されます。 複数の解が存在する場合、結果値が繰り返される複数のレコードがテーブルに付加されます。

局所 ERF ポップアップ チャートが作成される場合、ターゲット結果と関連する要因値が各観測のポップアップに表示されます。

Double
target_exposures
[target_exposures,...]
(オプション)

観測ごとに新しい結果を計算するために使用されるターゲット要因値のリスト。 ツールは、要因変数がターゲット要因に変更された場合に観測が受け取る新しい結果値を、ターゲット要因値ごとに推定します。 たとえば、要因変数が大気質指標で、結果変数が郡の年間喘息入院率である場合、大気質のレベルが変わると各観測の入院率がどのように変化するかを推定できます。 指定されたターゲット要因値ごとに、出力に新しいフィールドが 2 つ作成されます。 最初のフィールドには、観測がターゲット要因を受け取った場合に推定される結果値、2 つ目のフィールドには結果変数の推定変化量が含まれます (正の値は結果変数が増加することを示し、負の値は結果変数が減少することを示します)。 ターゲット要因は、トリミング後の要因変数の範囲内である必要があります。

出力 exposure-response 関数テーブルが作成される場合、ターゲット要因値と関連する応答値がテーブルの末尾に付加されます。

局所 ERF ポップアップ チャートが作成される場合、ターゲット要因値と関連する結果が各フィーチャのポップアップに表示されます。

Double
lower_exp_trim
(オプション)

要因変数のトリミングに使用される下位分位数。 この分位数よりも小さい要因値を含む観測は、傾向スコアを推定する前に分析から除外されます。 指定する値は、0 ~ 1 の間の値でなければなりません。 デフォルトは 0.01 です。つまり、要因値の下位 1 パーセントがトリミングされます。 傾向スコアの推定を改善するために、最小の要因値をある程度トリミングすることをお勧めします。

Double
upper_exp_trim
(オプション)

要因変数のトリミングに使用される上位分位数。 この分位数よりも大きい要因値を含む観測は、傾向スコアを推定する前に分析から除外されます。 指定する値は、0 ~ 1 の間の値でなければなりません。 デフォルトは 0.99 です。つまり、要因値の上位 1 パーセントがトリミングされます。 傾向スコアの推定を改善するために、最大の要因値をある程度トリミングすることをお勧めします。

Double
lower_ps_trim
(オプション)

傾向スコアのトリミングに使用される下位分位数。 この分位数よりも少ない傾向スコアを持つ観測は、傾向スコア マッチングまたは逆傾向スコア加重を行う前に分析から除外されます。 指定する値は、0 ~ 1 の間の値でなければなりません。 デフォルトは 0 で、トリミングは実行されません。

多くの場合、下位の傾向スコアのトリミングは、逆傾向スコア加重を使用する場合に必要となります。 傾向スコアがゼロに近くなると、バランス重みが大きく不安定になることがあります。

Double
upper_ps_trim
(オプション)

傾向スコアのトリミングに使用される上位分位数。 この分位数よりも大きい傾向スコアを持つ観測は、傾向スコア マッチングまたは逆傾向スコア加重を行う前に分析から除外されます。 指定する値は、0 ~ 1 の間の値でなければなりません。 デフォルトは 1 で、トリミングは実行されません。

Double
num_bins
(オプション)

傾向スコア マッチングに使用される要因ビンの数。 マッチングでは、要因変数は等間隔のビンに分割され、マッチングはそれぞれのビン内で行われます。 少なくとも 2 つの要因ビンが必要です。また、各ビンに少なくとも 5 つの要因値を含めることを推奨します。 値を指定しない場合、ツールの実行中に値が見積もられ、メッセージに表示されます。

Long
scale
(オプション)

傾向スコア マッチングを実行する際に使用される、要因変数に対する傾向スコアの相対加重 (スケールと呼ばれることもあります)。 各要因ビン内で、傾向スコアと要因変数の値の差を用いて一致が決定されます。 このパラメーターは、各基準の優先順位付けの方法を指定します。 たとえば、0.5 に等しい値とは、一致する観測を見つける際に、傾向スコアと要因変数に対して等しい重みを与えることを意味します。

値を指定しない場合、ツールの実行中に値が見積もられ、メッセージに表示されます。 最適なバランスを実現する値は予測困難なので、ツールを使用して値を推定することをお勧めします。 手動で値を指定すると、計算時間の短縮や、以前の結果の再現が可能です。 結果として得られる exposure-response 関数が、重みが大きい観測の垂直バンドを示す場合、相対加重を増やすことでより現実的で正確な exposure-response 関数を得られる可能性があります。

Double
balance_type
(オプション)

交絡変数のバランスがとれているかどうかを判断する方法を指定します。 傾向スコア マッチングまたは逆傾向スコア加重で重みを推定した後、各交絡変数に対して加重相関が計算されます。 平均、中央値、または最大絶対相関がバランスの閾値よりも小さい場合、交絡変数はバランスがとれていると判断されます。つまり、交絡変数と要因変数の相関は十分に解消されていることを意味します。

  • MEAN平均絶対相関がバランスの閾値よりも小さい場合、交絡変数のバランスはとれていると見なされます。 これがデフォルトです。
  • MEDIAN中央絶対相関がバランスの閾値よりも小さい場合、交絡変数のバランスはとれていると見なされます。
  • MAXIMUM最大絶対相関がバランスの閾値よりも小さい場合、交絡変数のバランスはとれていると見なされます。
String
balance_threshold
(オプション)

交絡変数の加重相関と比較し、バランスがとれているかどうかを判断する閾値。 指定する値は、0 ~ 1 の間の値でなければなりません。 バランスの閾値が大きいほど、交絡変数の不均衡や exposure-response 関数のバイアスの許容度が大きいことを意味します。 デフォルトは 0.1 です。

Double
bw_method
(オプション)

exposure-response 関数のバンド幅を推定するために使用される方法。

  • PLUG_INバンド幅を推定するには、プラグイン方法が使用されます。 これがデフォルトです。
  • CV二乗平均平方根の交差検証の誤差を最小化するバンド幅が使用されます。
  • MANUALカスタム バンド幅が使用されます。
String
bandwidth
(オプション)

手動バンド幅を使用する場合の exposure-response 関数のバンド幅値。

Double
create_bootstrap_ci
(オプション)

exposure-response 関数の 95% 信頼区間が、M-out-of-N ブートストラップを使用して作成されるかどうかを指定します。

  • CREATE_CIexposure-response 関数の信頼区間は作成されます。
  • NO_CIexposure-response 関数の信頼区間は作成されません。 これがデフォルトです。
Boolean

コードのサンプル

CausalInferenceAnalysis の例 1 (Python ウィンドウ)

次の Python スクリプトは、CausalInferenceAnalysis 関数の使用方法を示しています。

import arcpy
arcpy.stats.CausalInferenceAnalysis(
    in_features="crop_locations",
    outcome_field="corn_yield",
    exposure_field="fertilizer",
    confounding_variables="soil_type true;temperature false",
    out_features=r"CausalInference_corn_yield",
    ps_method="REGRESSION",
    balancing_method="MATCHING",
    enable_erf_popups="CREATE_POPUP",
    out_erf_table=r"erftable",
    target_outcomes=[],
    target_exposures=[],
    lower_exp_trim=0.01,
    upper_exp_trim=0.99,
    lower_ps_trim=0,
    upper_ps_trim=1,
    num_bins=None,
    scale=None,
    balance_type="MEAN",
    balance_threshold=0.1,
    bw_method="PLUG_IN",
    create_bootstrap_ci="CREATE_CI"
)
CausalInferenceAnalysis の例 2 (スタンドアロン スクリプト)

次の Python スクリプトは、CausalInferenceAnalysis 関数の使用方法を示しています。

# Estimate the causal effect between fertilizer amount 
# and corn yield using soil type and temperature as
# confounding variables.

# Import required modules.
import arcpy

# Set the workspace.
arcpy.env.workspace = "c:/data/crops.gdb"

# Run Causal Inference Analysis tool with gradient boosting
# and inverse propensity score weighting.
try:
    arcpy.stats.CausalInferenceAnalysis(
        in_features="crop_locations",
        outcome_field="corn_yield",
        exposure_field="fertilizer",
        confounding_variables="soil_type true;temperature false",
        out_features=r"CausalInference_corn_yield",
        ps_method="GRADIENT_BOOSTING",
        balancing_method="WEIGHTING",
        enable_erf_popups="CREATE_POPUP",
        out_erf_table=r"erftable",
        target_outcomes=[],
        target_exposures=[],
        lower_exp_trim=0.01,
        upper_exp_trim=0.99,
        lower_ps_trim=0,
        upper_ps_trim=1,
        num_bins=None,
        scale=None,
        balance_type="MEAN",
        balance_threshold=0.1,
        bw_method="PLUG_IN",
        create_bootstrap_ci="CREATE_CI"
    )

except arcpy.ExecuteError:
    # If an error occurred when running the tool, print the error message.
    print(arcpy.GetMessages())