因果推断分析 (空间统计)

摘要

通过近似随机实验并控制混杂变量来估计连续暴露变量对连续结果变量的因果效应。

在统计实验中,暴露变量(例如药物剂量)和结果变量(例如健康结果)之间的因果关系将通过为每位参与者随机分配特定的暴露水平来确定,以使结果中的任何差异必须仅归因于暴露中的差异,而非参与者的任何其他属性,例如年龄、既往病史和获取医疗保健情况。 但是,进行对照实验通常是不可能或不道德的,因此通常通过观测研究建立关系。 例如,要研究污染对抑郁症患病率的影响,您无法故意让个人暴露在高污染环境中以观察对抑郁症的影响。 相反,您只能观察样本中个体的污染暴露情况和抑郁症患病率。 然而,由于许多变量(称为混杂变量)同时影响污染和抑郁,因此在未对这些变量进行控制的情况下,将无法直接估计因果效应。

要模拟随机对照实验的过程,该工具将计算每个观测的倾向得分,并使用倾向得分对观测进行加权,以保持暴露和结果变量之间的因果关系,但是将移除混杂变量和暴露变量之间的相关性。 此加权数据集通常称为伪总体,它具有与对照实验类似的属性,在对照实验中,将为每位参与者随机分配暴露。 该工具将使用加权观测创建一个暴露响应函数 (ERF),该函数用于估计如果所有总体成员均接受给定暴露值,但不更改其混杂变量时的平均结果。

了解有关因果推断分析工作原理的详细信息

插图

“因果推断分析”工具图示
通过平衡混杂变量来估计暴露和结果之间的因果效应。

使用情况

  • 在因果推断分析中,假设所有重要的混杂变量都包含在模型中。 这意味着,如果未将任何影响暴露和结果变量的变量纳入混杂变量,则因果效应的估计将存在偏差。 该工具无法确定是否已包含所有重要的混杂变量,因此需要考虑哪些变量可能与您的暴露变量和结果变量相关,并将它们纳入模型中,这一点非常重要。 如果存在无法包含重要混杂变量,则应极其谨慎和怀疑地解释该工具的结果。 或者,在获取所有混杂变量的数据之前,不要使用该工具。

  • 暴露变量必须为连续变量(非二元变量或类别变量),但混杂变量可以为连续变量、类别变量或二元变量。 建议结果变量为连续变量,但允许使用二元结果变量,并且通常可以将其解释为概率或比例。

  • 该工具同时接受空间和非空间输入数据集。 可以使用表、点、面形和折线作为输入,并且输出的类型将与输入的类型相同。

  • 该工具的主要输出是 ERF,它作为活动地图中的图形图层以及地理处理消息中的图像返回。 您还可以使用输出暴露响应函数表参数创建包含各种暴露响应值的表。

    了解有关 ERF 的详细信息

  • 倾向得分计算方法参数用于指定估计倾向得分的方式。 倾向得分是在给定一组混杂变量的情况下,接收特定暴露值的可能性(或概率)。 通过创建模型来估计倾向得分,该模型将根据混杂变量来预测暴露变量。 可以使用以下倾向得分计算方法:

  • 平衡方法参数用于指定使用倾向得分来平衡混杂变量的方式。 以下两种平衡方法可用:

    • 倾向得分匹配 - 将对每个观测与具有相似倾向得分,但具有不同暴露值的各种其他观测进行匹配。 通过将观测的结果值与匹配的结果值进行比较,可以了解如果具有不同的暴露,则观测可能具有的结果值。 将所有观测与各种其他观测进行匹配后,为每个观测分配平衡权重,该权重等于该观测与任何其他观测相匹配的次数。 这种加权方案背后的原因是,具有高匹配计数的观测具有的混杂变量在暴露变量的许多值中都很常见,因此其最能代表因果效应。
    • 逆倾向得分加权 - 通过反转倾向得分并乘以具有给定暴露的总体概率来为每个观测分配平衡权重。 由此将为具有低倾向得分的观测提供较高的平衡权重,为具有高倾向得分的观测提供较低的平衡权重。 这种加权方案背后的原因是,倾向得分是衡量特定混杂变量集的暴露值常见或不常见程度的指标。 通过提高不常见观测(倾向得分较低的观测)的影响(增大平衡权重)并降低常见观测的影响,混杂变量的总体分布将在暴露变量的所有值中保持成比例。

    了解有关倾向得分、倾向得分匹配和逆倾向得分加权的详细信息

  • 默认情况下,该工具将修剪(从分析中移除)具有最高和最低 1% 暴露值的观测。 暴露变量中的极值或异常值会导致因果推断分析存在偏差。 通过修剪这些极值,可以降低有影响的观测的影响,这些观测可能会使因果效应的估计失真。 可以使用暴露下分位数暴露上分位数参数更改暴露修剪量。 您还可以使用倾向得分下分位数倾向得分上分位数参数,根据倾向得分来修剪观测,但默认情况下不会执行倾向得分修剪。 当使用逆倾向得分加权时,通常需要修剪一些最低的倾向得分,因为接近于零的倾向得分会产生较大且不稳定的平衡权重。

  • 输出要素或表将包含倾向得分、平衡权重的字段,以及指示是否将对要素进行修剪的字段(0 表示将对要素进行修剪,1 表示要素已包含在分析中)。 还将包含暴露变量、结果变量和混杂变量的副本。

  • 在混杂变量和暴露变量之间实现平衡是推导暴露变量和结果变量之间因果关系的关键。 要确定平衡权重是否有效平衡混杂变量,该工具将计算每个混杂变量和暴露变量之间的加权相关性(由平衡权重进行加权)。 然后,聚合加权相关性并与阈值进行比较。 如果聚合相关性小于阈值,则将确定混杂变量经过平衡。 可以使用平衡类型参数指定聚合类型(平均值、中值或最大绝对相关性),并在平衡阈值参数中提供阈值。 默认情况下,该工具将使用绝对平均相关性和阈值 0.1。 使用 0.1 作为阈值是一种常见惯例,但应该根据领域专业知识、研究目标和所研究总体的内在特征来调整阈值。 阈值越低,表明因果效应估计中偏差的容差越小;但阈值越小,则平衡将越困难。

  • 如果平衡权重未充分平衡混杂变量,则该工具将返回错误并且不会生成 ERF;但是,将显示各种消息,其中包含有关如何有效平衡混杂变量的信息。 建议您首先尝试通过选择混杂变量,并针对倾向得分计算方法平衡方法参数使用不同的选项来解决错误。 如果错误仍未解决,则可以使用平衡类型参数的不同选项或者增大平衡阈值参数的值来生成 ERF,但这可能会导致因果效应的估计存在偏差。

    了解如何实现平衡的混杂变量。

  • 混杂变量应包含整个暴露变量范围内的各种值。 对于类别混杂变量,每个级别的类别内应该存在较宽范围的暴露值,并且每个类别变量中的类别不能超过 60 个。 对于倾向得分匹配,如果暴露变量在每个混杂变量的所有值之间未呈现足够的变化,则将难以实现平衡。

  • 用于计算新暴露的目标结果值参数可用于探索每个观测的假设方案(有时称为反事实方案)。 该工具将针对每个观测使用局部 ERF 来计算每个观测所需的暴露水平,以实现所需结果。 例如,每个县都可以估计在给定目标下,达到哮喘住院率所需的污染水平。 如果提供了目标结果值,则输出要素或表将针对每个目标结果包含 2 个附加字段:一个字段用于新暴露值,另一个字段用于新暴露值与当前暴露值之间的差值。 如果存在多个暴露值,这些暴露值可以产生目标结果,则该工具将使用最接近观测的当前暴露值的暴露值。 同样,您还可以在用于计算新结果的目标暴露值参数中提供目标暴露值,以研究对于各种目标暴露,结果变量可能如何局部变化。

    如果创建输出 ERF 表,则会将任何目标结果或目标暴露值追加到表的末尾。 如果对于目标结果存在多个解决方案,则所有解决方案都将包含在表中。

  • 如果选中启用暴露响应函数弹出窗口参数,则将为每个观测创建局部暴露响应函数。 本地 ERF 将在输出要素或表的弹出窗口中显示为图表。 创建局部 ERF 需要附加假设固定治疗效果,而诸如种族、收入和性别等变量往往会违反这一假设。

    了解有关局部 ERF 估计和假设的详细信息

    警告:

    如果存在许多观测,则创建弹出窗口可能会占用大量内存和计算资源。 建议您在建模探索阶段运行该工具,而不启用弹出窗口,并且仅在确定所有其他工具参数后,再创建弹出窗口。

  • 一个常见的误解是,只能通过将混杂变量作为解释变量包含在预测模型(例如广义线性回归基于森林的增强分类与回归工具)中来估计因果效应。 但是,仅当所有解释变量与暴露变量独立,并且所有相关变量都包含在模型中时,才能做出这样的判断。 由于大多数数据集中的变量彼此之间都存在关联,因此无法直接估计因果效应。

  • 该工具的常规方法基于以下参考文献:

    • 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
混杂变量

混杂变量的字段。 这些变量与暴露变量和结果变量相关,必须对其进行平衡,才能估计暴露变量和结果变量之间的因果效应。 混杂变量可以为连续变量、类别变量或二元变量。 文本字段必须为类别字段,整型字段可以为类别字段或连续字段,其他数值字段必须为连续字段。

为了使暴露-响应函数不存在偏差,必须将与暴露和结果变量相关的所有变量都作为混杂变量纳入其中。

Value Table
输出要素或表

输出要素或表,其中包含倾向得分、平衡权重,以及指示是否将对要素进行修剪(从分析中排除)的字段。 还将包含暴露变量、结果变量和混杂变量。

Feature Class; Table
倾向得分计算方法
(可选)

指定将用于计算每个观测的倾向得分的方法。

观测的倾向得分是在给定混杂变量值的情况下,接收观测的暴露值的可能性(或概率)。 较高的倾向得分意味着暴露对于具有关联混杂变量的个体来说是常见的,而较低的倾向得分意味着暴露值对于具有混杂变量的个体来说是不常见的。 例如,如果某人患有高血压(暴露变量),但没有高血压的任何风险因素(混杂变量),则其倾向得分将较低,因为在没有任何风险因素的情况下患高血压比较罕见。 相反,对于具有许多风险因素的人来说,高血压的倾向得分会更高,因为这种情况更加常见。

通过统计模型来估计倾向得分,该模型使用混杂变量作为解释变量来预测暴露变量。 可以使用 OLS 回归模型或者使用梯度提升回归树的机器学习模型。 建议您首先使用回归,并且仅当回归无法平衡混杂变量时,再使用梯度提升。

  • 回归OLS 回归将用于估计倾向得分。 这是默认设置。
  • 梯度提升将使用梯度提升回归树来估计倾向得分。
String
平衡方法
(可选)

指定将用于平衡混杂变量的方法。

每种方法都会估计一组平衡权重,这些平衡权重用于移除混杂变量和暴露变量之间的相关性。 建议您首先使用匹配,并且仅当匹配无法平衡混杂变量时,再使用逆倾向得分加权。 逆倾向得分加权的计算速度比倾向得分匹配更快,因此当匹配的计算时间对于数据不可行时,也建议使用此方法。

  • 倾向得分匹配倾向得分匹配将用于平衡混杂变量。 这是默认设置。
  • 逆倾向得分加权逆倾向得分加权将用于平衡混杂变量。
String
启用暴露响应函数弹出窗口
(可选)

指定是否将为每个观测创建弹出图表,其中显示了观测的局部 ERF。

  • 选中 - 将在输出要素或表上创建局部 ERF 弹出图表。
  • 未选中 - 将不会在输出要素或表上创建局部 ERF 弹出图表。 这是默认设置。
Boolean
输出暴露响应函数表
(可选)

包含暴露响应函数值的表。 该表将包含最小和最大暴露(修剪后)之间 200 个均匀间隔的暴露值以及暴露响应函数的估计响应。 如果所有总体成员均得到相关联的暴露值,则响应字段将表示结果变量的平均值。 如果创建引导置信区间,则将创建附加字段,其中包含暴露值置信区间的上限和下限,以及用于构建置信区间的标准差和样本数量。 如果提供任何目标结果或暴露值,则会将其追加到表的末尾。

Table
用于计算新暴露的目标结果值
(可选)

目标结果值的列表,将根据这些值为每个观测计算实现结果所需的暴露变化。 例如,如果暴露变量为空气质量指数,结果变量为各县的年度哮喘住院率,则可以确定要实现哮喘住院率低于 0.01、0.005 和 0.001,空气质量指数需要降低的量。 对于每个提供的目标结果值,将在输出上创建 2 个新字段。 第 1 个字段将包含会导致目标结果的暴露值,第 2 个字段将包含产生目标结果所需的暴露变量的变化(正值表示暴露需要增大,负值表示暴露需要减小)。 在某些情况下,对于某些观测,将不存在任何解决方案,因此您应该仅提供通过更改暴露变量可以实现的目标结果。 例如,由于任何 PM2.5 水平都不可能导致哮喘住院率为零,因此使用等于零的目标结果将导致没有任何解决方案。 如果多个暴露值可以产生目标结果,则将使用需要暴露变化最小的一个。

如果创建输出暴露响应函数表,则其将包含任何目标结果值以及追加到表末尾的关联暴露值。 如果存在多个解决方案,则会将多条记录追加到具有重复结果值的表中。

如果创建局部 ERF 弹出图表,则目标结果和关联暴露值将显示在每个观测的弹出窗口中。

Double
用于计算新结果的目标暴露值
(可选)

目标暴露值的列表,将用于为每个观测计算新结果。 对于每个目标暴露值,该工具将会估计如果其暴露变量更改为目标暴露,则观测将会得到的新结果值。 例如,如果暴露变量为空气质量指数,结果变量为各县的年度哮喘住院率,则可以估计每个观测的住院率在不同空气质量水平下的变化情况。 对于每个提供的目标暴露值,将在输出上创建 2 个新字段。 第 1 个字段包含观测得到目标暴露时的估计结果值,第 2 个字段包含结果变量的估计变化(正值指示结果变量将增大,负值指示结果变量将减小)。 修剪后,目标暴露必须位于暴露变量的范围内。

如果创建输出暴露响应函数表,则其将包含任何目标暴露值以及追加到表末尾的关联响应值。

如果创建局部 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 意味着在查找匹配观测时,将为倾向得分和暴露变量分配相同的权重。

如果未提供任何值,则将在工具运行时估计该值并将其显示在消息中。 由于将提供最佳平衡的值难以预测,因此建议您允许工具估计该值。 提供手动值可用于减少计算时间或者重现先前的结果。 如果所得的暴露响应函数将显示具有较大权重的垂直观测带,则增大相对权重可以提供更加真实和精确的暴露响应函数。

Double
平衡类型
(可选)

指定将用于确定混杂变量是否平衡的方法。 当使用倾向得分匹配或逆倾向得分加权估计权重后,将计算每个混杂变量的加权相关性。 如果平均值、中值或者最大绝对相关性小于平衡阈值,则混杂变量将视为平衡,这意味着其与暴露变量完全不相关。

  • 平均值如果平均绝对相关性小于平衡阈值,则混杂变量将视为平衡。 这是默认设置。
  • 中值如果平值绝对相关性小于平衡阈值,则混杂变量将视为平衡。
  • 最大值如果最大绝对相关性小于平衡阈值,则混杂变量将视为平衡。
String
平衡阈值
(可选)

将与混杂变量的加权相关性进行比较以确定其是否平衡的阈值。 值必须位于 0 和 1 之间。 平衡阈值越大,表明对混杂变量不平衡和暴露响应函数存在偏差的容忍度越高。 默认值为 0.1。

Double
带宽估计方法
(可选)

指定将用于估计暴露响应函数带宽的方法。

  • 插件将使用插件方法来估计带宽。 这是默认设置。
  • 交叉验证将使用最小化均方交叉验证误差的带宽。
  • 手动将使用自定义带宽。
String
带宽
(可选)

当使用手动带宽时,暴露响应函数的带宽值。

Double
创建引导置信区间
(可选)

指定是否将使用 M-out-of-N 引导为暴露响应函数创建 95% 置信区间。 置信区间将在输出图形图层中显示为暴露响应函数上方和下方的虚线。

  • 选中 - 将创建暴露响应函数的置信区间。
  • 未选中 - 将不会创建暴露响应函数的置信区间。 这是默认设置。
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],...]

混杂变量的字段。 这些变量与暴露变量和结果变量相关,必须对其进行平衡,才能估计暴露变量和结果变量之间的因果效应。 混杂变量可以为连续变量、类别变量或二元变量。 文本字段必须为类别字段,整型字段可以为类别字段或连续字段,其他数值字段必须为连续字段。

为了使暴露-响应函数不存在偏差,必须将与暴露和结果变量相关的所有变量都作为混杂变量纳入其中。

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
(可选)

包含暴露响应函数值的表。 该表将包含最小和最大暴露(修剪后)之间 200 个均匀间隔的暴露值以及暴露响应函数的估计响应。 如果所有总体成员均得到相关联的暴露值,则响应字段将表示结果变量的平均值。 如果创建引导置信区间,则将创建附加字段,其中包含暴露值置信区间的上限和下限,以及用于构建置信区间的标准差和样本数量。 如果提供任何目标结果或暴露值,则会将其追加到表的末尾。

Table
target_outcomes
[target_outcomes,...]
(可选)

目标结果值的列表,将根据这些值为每个观测计算实现结果所需的暴露变化。 例如,如果暴露变量为空气质量指数,结果变量为各县的年度哮喘住院率,则可以确定要实现哮喘住院率低于 0.01、0.005 和 0.001,空气质量指数需要降低的量。 对于每个提供的目标结果值,将在输出上创建 2 个新字段。 第 1 个字段将包含会导致目标结果的暴露值,第 2 个字段将包含产生目标结果所需的暴露变量的变化(正值表示暴露需要增大,负值表示暴露需要减小)。 在某些情况下,对于某些观测,将不存在任何解决方案,因此您应该仅提供通过更改暴露变量可以实现的目标结果。 例如,由于任何 PM2.5 水平都不可能导致哮喘住院率为零,因此使用等于零的目标结果将导致没有任何解决方案。 如果多个暴露值可以产生目标结果,则将使用需要暴露变化最小的一个。

如果创建输出暴露响应函数表,则其将包含任何目标结果值以及追加到表末尾的关联暴露值。 如果存在多个解决方案,则会将多条记录追加到具有重复结果值的表中。

如果创建局部 ERF 弹出图表,则目标结果和关联暴露值将显示在每个观测的弹出窗口中。

Double
target_exposures
[target_exposures,...]
(可选)

目标暴露值的列表,将用于为每个观测计算新结果。 对于每个目标暴露值,该工具将会估计如果其暴露变量更改为目标暴露,则观测将会得到的新结果值。 例如,如果暴露变量为空气质量指数,结果变量为各县的年度哮喘住院率,则可以估计每个观测的住院率在不同空气质量水平下的变化情况。 对于每个提供的目标暴露值,将在输出上创建 2 个新字段。 第 1 个字段包含观测得到目标暴露时的估计结果值,第 2 个字段包含结果变量的估计变化(正值指示结果变量将增大,负值指示结果变量将减小)。 修剪后,目标暴露必须位于暴露变量的范围内。

如果创建输出暴露响应函数表,则其将包含任何目标暴露值以及追加到表末尾的关联响应值。

如果创建局部 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 意味着在查找匹配观测时,将为倾向得分和暴露变量分配相同的权重。

如果未提供任何值,则将在工具运行时估计该值并将其显示在消息中。 由于将提供最佳平衡的值难以预测,因此建议您允许工具估计该值。 提供手动值可用于减少计算时间或者重现先前的结果。 如果所得的暴露响应函数将显示具有较大权重的垂直观测带,则增大相对权重可以提供更加真实和精确的暴露响应函数。

Double
balance_type
(可选)

指定将用于确定混杂变量是否平衡的方法。 当使用倾向得分匹配或逆倾向得分加权估计权重后,将计算每个混杂变量的加权相关性。 如果平均值、中值或者最大绝对相关性小于平衡阈值,则混杂变量将视为平衡,这意味着其与暴露变量完全不相关。

  • MEAN如果平均绝对相关性小于平衡阈值,则混杂变量将视为平衡。 这是默认设置。
  • MEDIAN如果平值绝对相关性小于平衡阈值,则混杂变量将视为平衡。
  • MAXIMUM如果最大绝对相关性小于平衡阈值,则混杂变量将视为平衡。
String
balance_threshold
(可选)

将与混杂变量的加权相关性进行比较以确定其是否平衡的阈值。 值必须位于 0 和 1 之间。 平衡阈值越大,表明对混杂变量不平衡和暴露响应函数存在偏差的容忍度越高。 默认值为 0.1。

Double
bw_method
(可选)

指定将用于估计暴露响应函数带宽的方法。

  • PLUG_IN将使用插件方法来估计带宽。 这是默认设置。
  • CV将使用最小化均方交叉验证误差的带宽。
  • MANUAL将使用自定义带宽。
String
bandwidth
(可选)

当使用手动带宽时,暴露响应函数的带宽值。

Double
create_bootstrap_ci
(可选)

指定是否将使用 M-out-of-N 引导为暴露响应函数创建 95% 置信区间。

  • CREATE_CI将创建暴露响应函数的置信区间。
  • NO_CI将不会创建暴露响应函数的置信区间。 这是默认设置。
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())