dowhy.causal_identifier 包#

子模块#

dowhy.causal_identifier.auto_identifier 模块#

class dowhy.causal_identifier.auto_identifier.AutoIdentifier(estimand_type: EstimandType, backdoor_adjustment: BackdoorAdjustment = BackdoorAdjustment.BACKDOOR_DEFAULT, optimize_backdoor: bool = False, costs: List | None = None)[source]#

基类: object

实现不同识别方法的类。

目前支持后门和工具变量识别方法。识别过程基于提供的因果图。

此类用于向后兼容 CausalModel,未来将被弃用,推荐使用函数调用 auto_identify_effect()

identify_backdoor(graph: DiGraph, action_nodes: List[str], outcome_nodes: List[str], observed_nodes: List[str], include_unobserved: bool = False, dseparation_algo: str = 'default', direct_effect: bool = False)[source]#
identify_effect(graph: DiGraph, action_nodes: str | List[str], outcome_nodes: str | List[str], observed_nodes: str | List[str], conditional_node_names: List[str] | None = None)[source]#
class dowhy.causal_identifier.auto_identifier.BackdoorAdjustment(value)[source]#

基类: Enum

一个枚举。

BACKDOOR_DEFAULT = 'default'#
BACKDOOR_EFFICIENT = 'efficient-adjustment'#
BACKDOOR_EXHAUSTIVE = 'exhaustive-search'#
BACKDOOR_MAX = 'maximal-adjustment'#
BACKDOOR_MIN = 'minimal-adjustment'#
BACKDOOR_MINCOST_EFFICIENT = 'efficient-mincost-adjustment'#
BACKDOOR_MIN_EFFICIENT = 'efficient-minimal-adjustment'#
class dowhy.causal_identifier.auto_identifier.EstimandType(value)[source]#

基类: Enum

一个枚举。

NONPARAMETRIC_ATE = 'nonparametric-ate'#
NONPARAMETRIC_CDE = 'nonparametric-cde'#
NONPARAMETRIC_NDE = 'nonparametric-nde'#
NONPARAMETRIC_NIE = 'nonparametric-nie'#
dowhy.causal_identifier.auto_identifier.build_backdoor_estimands_dict(treatment_names: List[str], outcome_names: List[str], observed_nodes: List[str], backdoor_sets: List, estimands_dict: Dict)[source]#

通过过滤未观测变量(如果需要)来构建最终的后门集合字典。

dowhy.causal_identifier.auto_identifier.construct_backdoor_estimand(treatment_name: List[str], outcome_name: List[str], common_causes: List[str])[source]#
dowhy.causal_identifier.auto_identifier.construct_frontdoor_estimand(treatment_name: List[str], outcome_name: List[str], frontdoor_variables_names: List[str])[source]#
dowhy.causal_identifier.auto_identifier.construct_iv_estimand(treatment_name: List[str], outcome_name: List[str], instrument_names: List[str])[source]#
dowhy.causal_identifier.auto_identifier.construct_mediation_estimand(estimand_type: EstimandType, action_nodes: List[str], outcome_nodes: List[str], mediator_nodes: List[str])[source]#
dowhy.causal_identifier.auto_identifier.find_valid_adjustment_sets(graph: DiGraph, action_nodes: List[str], outcome_nodes: List[str], observed_nodes: List[str], backdoor_paths: List, bdoor_graph: DiGraph, dseparation_algo: str, backdoor_sets: List, filt_eligible_variables: List, backdoor_adjustment: BackdoorAdjustment, max_iterations: int)[source]#
dowhy.causal_identifier.auto_identifier.get_default_backdoor_set_id(graph: DiGraph, action_nodes: List[str], outcome_nodes: List[str], backdoor_sets_dict: Dict)[source]#
dowhy.causal_identifier.auto_identifier.identify_ate_effect(graph: DiGraph, action_nodes: List[str], outcome_nodes: List[str], observed_nodes: List[str], backdoor_adjustment: BackdoorAdjustment, optimize_backdoor: bool, estimand_type: EstimandType, costs: List, conditional_node_names: List[str] | None = None)[source]#
dowhy.causal_identifier.auto_identifier.identify_backdoor(graph: DiGraph, action_nodes: List[str], outcome_nodes: List[str], observed_nodes: List[str], backdoor_adjustment: BackdoorAdjustment, include_unobserved: bool = False, dseparation_algo: str = 'default', direct_effect: bool = False)[source]#
dowhy.causal_identifier.auto_identifier.identify_cde_effect(graph: DiGraph, action_nodes: List[str], outcome_nodes: List[str], observed_nodes: List[str], backdoor_adjustment: BackdoorAdjustment, estimand_type: EstimandType)[source]#

识别受控直接效应(CDE)。关于其定义,请参阅 Vanderwheele (2011) 的文章《受控直接和中介效应:定义、识别和界限》。https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4193506/

使用 do-演算规则,识别过程会产生一个调整集合。其基本原则是,在一个移除治疗到结果之间直接边的图中,对调整集合进行条件化处理可以d-分离治疗和结果。

dowhy.causal_identifier.auto_identifier.identify_effect_auto(graph: DiGraph, action_nodes: str | List[str], outcome_nodes: str | List[str], observed_nodes: str | List[str], estimand_type: EstimandType, conditional_node_names: List[str] | None = None, backdoor_adjustment: BackdoorAdjustment = BackdoorAdjustment.BACKDOOR_DEFAULT, optimize_backdoor: bool = False, costs: List | None = None) IdentifiedEstimand#

返回已识别的可估计量(如果存在)的主要方法。

如果 estimand_type 是非参数 ATE,则使用后门、工具变量和前门识别方法,基于因果图检查是否存在可识别的可估计量。

参数:
  • optimize_backdoor – 如果为 True,使用优化算法计算后门集合

  • costs – 与图中变量相关的非负成本。仅用于

estimand_type=’non-parametric-ate’ 和 backdoor_adjustment=’efficient-mincost-adjustment’。如果用户未提供成本,且 backdoor_adjustment=’efficient-mincost-adjustment’,则假设图中所有变量的成本等于一。:param conditional_node_names: 用于确定治疗的变量。如果未提供,则假定干预是静态的。:returns: 目标可估计量,IdentifiedEstimand 类的实例

dowhy.causal_identifier.auto_identifier.identify_efficient_backdoor(graph: DiGraph, action_nodes: List[str], outcome_nodes: List[str], observed_nodes: List[str], backdoor_adjustment: BackdoorAdjustment, costs: List, conditional_node_names: List[str] | None = None)[source]#

实现了计算高效后门集合的算法,如 Rotnitzky 和 Smucler (2020)、Smucler、Sapienza 和 Rotnitzky (2021) 以及 Smucler 和 Rotnitzky (2022) 中所述。

对于 backdoor_adjustment=’efficient-adjustment’,计算最优后门集合,即由可观测变量组成的后门集合,该集合产生的干预均值的非参数估计量在基于可观测后门集合的所有估计量中具有最小的渐近方差。当没有潜在变量时,这个最优后门集合总是存在,并且算法保证在这种情况下可以计算出来。在具有潜在变量的非参数图模型下,这样的后门集合可能不存在。当已知存在这种后门集合的某些充分条件不满足时,会引发错误。

对于 backdoor_adjustment=’efficient-minimal-adjustment’,计算最优最小后门集合,即由可观测变量组成的最小后门集合,该集合产生的干预均值的非参数估计量在基于可观测最小后门集合的所有估计量中具有最小的渐近方差。

对于 backdoor_adjustment=’efficient-mincost-adjustment’,计算最优最小成本后门集合,即由可观测变量组成的最小成本后门集合,该集合产生的干预均值的非参数估计量在基于可观测最小成本后门集合的所有估计量中具有最小的渐近方差。后门集合的成本定义为组成该集合的变量的成本总和。

通过此方法计算出的各种最优后门集合,不仅在非参数图模型和干预均值的非参数估计量下是最优的,而且根据 Henckel、Perkovic 和 Maathuis (2020) 的结果,在线性图模型和 OLS 估计量下也是最优的。

参数:

costs – 一个列表,包含与图中变量相关的非负成本。仅用于

estimatand_type=’non-parametric-ate’ 和 backdoor_adjustment=’efficient-mincost-adjustment’。如果用户未提供成本,且 backdoor_adjustment=’efficient-mincost-adjustment’,则假定图中所有变量的成本等于一。列表的结构应为 [(节点, {“成本”: x}) for node in nodes] 的形式。:param conditional_node_names: 用于确定治疗的变量。如果未提供,则假定干预将治疗设定为常数。:returns: backdoor_sets,一个字典列表,每个字典的值为一个后门集合。

dowhy.causal_identifier.auto_identifier.identify_frontdoor(graph: DiGraph, action_nodes: List[str], outcome_nodes: List[str], observed_nodes: List[str], dseparation_algo: str = 'default')[source]#

如果存在有效的前门变量集合,则找到它。

dowhy.causal_identifier.auto_identifier.identify_mediation(graph: DiGraph, action_nodes: List[str], outcome_nodes: List[str])[source]#

如果存在有效的中介变量,则找到它。

目前仅支持单变量中介集合。

dowhy.causal_identifier.auto_identifier.identify_mediation_first_stage_confounders(graph: DiGraph, action_nodes: List[str], outcome_nodes: List[str], mediator_nodes: List[str], observed_nodes: List[str], backdoor_adjustment: BackdoorAdjustment)[source]#
dowhy.causal_identifier.auto_identifier.identify_mediation_second_stage_confounders(graph: DiGraph, action_nodes: List[str], mediator_nodes: List[str], outcome_nodes: List[str], observed_nodes: List[str], backdoor_adjustment: BackdoorAdjustment)[source]#
dowhy.causal_identifier.auto_identifier.identify_nde_effect(graph: DiGraph, action_nodes: List[str], outcome_nodes: List[str], observed_nodes: List[str], backdoor_adjustment: BackdoorAdjustment, estimand_type: EstimandType)[source]#
dowhy.causal_identifier.auto_identifier.identify_nie_effect(graph: DiGraph, action_nodes: List[str], outcome_nodes: List[str], observed_nodes: List[str], backdoor_adjustment: BackdoorAdjustment, estimand_type: EstimandType)[source]#

dowhy.causal_identifier.backdoor 模块#

class dowhy.causal_identifier.backdoor.Backdoor(graph, nodes1, nodes2)[source]#

基类: object

用于在源节点和目标节点之间搜索后门变量的优化实现的类。

get_backdoor_vars()[source]#

获取每对节点需要进行条件化的后门变量集合。

返回:

集合列表,每个集合包含对应于给定节点对的后门变量。

is_backdoor(path)[source]#

检查路径是否为后门路径。

参数:

path – 构成路径的节点列表。

class dowhy.causal_identifier.backdoor.HittingSetAlgorithm(list_of_sets, colliders={})[source]#

基类: object

用于 Hitting Set 算法的类,旨在获取每对节点需要进行条件化的近似最小后门变量集合。

参数:

list_of_sets – 集合列表,每个集合包含表示源节点和目标节点之间单一后门路径的节点。

find_set()[source]#

找到近似最小的节点集合,使得 list_of_sets 中的每个集合至少包含一个节点。

返回:

近似最小节点集合。

num_sets()[source]#

获取节点对之间的后门路径数量。

class dowhy.causal_identifier.backdoor.NodePair(node1, node2)[source]#

基类: object

用于存储两个节点之间后门变量的数据结构。

get_condition_vars()[source]#
is_complete()[source]#
set_complete()[source]#
update(path, condition_vars=None)[source]#
class dowhy.causal_identifier.backdoor.Path[source]#

基类: object

用于存储两个节点之间特定路径的数据结构。

get_condition_vars()[source]#
is_blocked()[source]#
update(path, is_blocked)[source]#

path 是一个列表

dowhy.causal_identifier.efficient_backdoor 模块#

class dowhy.causal_identifier.efficient_backdoor.EfficientBackdoor(graph: DiGraph, action_nodes: List[str], outcome_nodes: List[str], observed_nodes: List[str], conditional_node_names=None, costs=None)[source]#

基类: object

实现寻找最优(高效)后门集合的方法。

参数:
  • graph – nx.DiGraph 一个因果图。

  • costs – list 一个列表,包含与图中变量相关的非负成本。仅用于 estimatand_type=’non-parametric-ate’ 和 method_name=’efficient-mincost-adjustment’。如果用户未提供成本,且 method_name=’efficient-mincost-adjustment’,则假定图中所有变量的成本等于一。列表的结构应为 [(节点, {“成本”: x}) for node in nodes] 的形式。

  • conditional_node_names – list 一个列表,包含用于确定治疗的变量。如果未提供,则假定干预将治疗设定为常数。

ancestors_all(nodes)[source]#

计算一组节点所有祖先集合的方法。一个节点总是它自己的祖先。

参数:

nodes – list 图中节点的列表。

返回 ancestors:

set 作为 nodes 中节点的祖先的节点集合。

backdoor_graph(G)[source]#
计算与以下内容相关的适当后门图的方法

治疗和结果。

参数:

G – nx.DiGraph 一个有向无环图。

返回 Gbd:

nx.DiGraph G 的适当后门图。

build_D()[source]#

返回与治疗、结果、条件和可观测变量相关的 D 流网络。如果节点没有 ‘cost’ 属性,此函数将假定成本为无穷大。

有关此流网络的完整定义,请参阅 Smucler 和 Rotnitzky (2022) 发表在 Journal of Causal Inference 上的文章。

返回 D:

nx.DiGraph D 流网络。

build_H0()[source]#

返回与治疗、结果、条件和可观测变量相关的 H0 图。有关此图的完整定义,请参阅 Smucler、Sapienza 和 Rotnitzky (2021) 发表在 Biometrika 上的文章。

返回 H0:

nx.Graph H0 图。

build_H1()[source]#

返回与治疗、结果、条件和可观测变量相关的 H1 图。有关此图的完整定义,请参阅 Smucler、Sapienza 和 Rotnitzky (2021) 发表在 Biometrika 上的文章。

返回 H1:

nx.Graph H1 图。

causal_vertices()[source]#
计算位于因果路径中的所有顶点集合的方法

在治疗和结果之间。

返回 causal_vertices:

set 包含位于治疗和结果之间某些因果路径上的顶点的集合。

compute_smallest_mincut()[source]#

返回与治疗、结果、条件和可观测变量相关的流网络 D 中的最小割集,该最小割集包含在任何其他最小割集中。

返回 S_c:

set 具有上述属性的最小割集。

forbidden()[source]#
计算关于以下内容的可忽略顶点集合的方法

结果的禁忌集的方法。

返回 forbidden:

set 禁忌集。

h_operator(S)[source]#

给定流网络 D 中顶点集合 S,返回算子 h(S),即无向图 H1 中的顶点集合。

有关此算子的完整定义,请参阅 Smucler 和 Rotnitzky (2022) 发表在 Journal of Causal Inference 上的文章。

参数:

S – set 与治疗、结果、条件和可观测变量相关的流网络 D 中的顶点集合。

返回 Z:

set 通过对 S 应用 h 算子获得的集合。

ignore()[source]#
计算关于以下内容的可忽略顶点集合的方法

治疗、结果、条件和可观测变量。用于构建 H0 和 H1 图。有关此集合的完整定义,请参阅 Smucler、Sapienza 和 Rotnitzky (2021) 发表在 Biometrika 上的文章。

返回 ignore:

set 可忽略顶点集合。

optimal_adj_set()[source]#

返回关于治疗、结果、条件和可观测变量的最优调整集合。

如果在 Smucler、Sapienza 和 Rotnitzky (2021) 发表在 Biometrika 上的文章中概述的最优调整集合存在的充分条件不满足,则会引发错误。

返回:

optimal: set 最优调整集合。

optimal_mincost_adj_set()[source]#

返回关于治疗、结果、条件和可观测变量的最优最小成本调整集合。

请注意,当成本恒定时,这是最小基数最优调整集合中的一个。

返回:

optimal_mincost: set 最优最小成本调整集合。

optimal_minimal_adj_set()[source]#

返回关于治疗、结果、条件和可观测变量的最优最小调整集合。

返回:

optimal_minimal: set 最优最小调整集合。

unblocked(H, Z)[source]#

计算关于治疗的 Z 的未阻塞集合的方法。有关此集合的完整定义,请参阅 Smucler、Sapienza 和 Rotnitzky (2021) 发表在 Biometrika 上的文章。

参数 H:

nx.Graph 一个无向图。

参数:

Z – list 图 H 中的节点列表。

返回 unblocked:

set 未阻塞集合。

dowhy.causal_identifier.id_identifier 模块#

class dowhy.causal_identifier.id_identifier.IDExpression[source]#

基类: object

用于存储因果可估计量的类,该可估计量是使用 ID 算法进行识别步骤的结果。该对象存储一个需要计算乘积的估计量列表 (self._product) 和一个需要对其乘积进行边缘化的变量列表 (self._sum)。

add_product(element: Dict | IDExpression)[source]#

将估计量添加到乘积列表中。

参数:

element – 要附加到乘积列表的估计量。

add_sum(element: Set)[source]#

将变量添加到列表中。

参数:

element – 要附加到列表 self._sum 的变量集合。

get_val(return_type: str)[source]#

获取估计量列表(用于乘积)或变量列表(用于边缘化)。

参数:

return_type – “prod” 返回估计量列表,或 “sum” 返回变量列表。

class dowhy.causal_identifier.id_identifier.IDIdentifier[source]#

基类: object

此类用于向后兼容 CausalModel,未来将被弃用,推荐使用函数调用 id_identify_effect()

identify_effect(graph: DiGraph, action_nodes: str | List[str], outcome_nodes: str | List[str], observed_nodes: str | List[str])[source]#
dowhy.causal_identifier.id_identifier.identify_effect_id(graph: DiGraph, action_nodes: str | List[str], outcome_nodes: str | List[str]) IDExpression[source]#

ID 算法的实现。链接 - https://ftp.cs.ucla.edu/pub/stat_ser/shpitser-thesis.pdf 伪代码已在第 40 页提供。

参数:

treatment_names – 包含处理变量名称的 OrderedSet。

:param outcome_names: 包含结果变量名称的 OrderedSet。

返回:

目标可估量,IDExpression 类的一个实例。

dowhy.causal_identifier.identified_estimand 模块#

class dowhy.causal_identifier.identified_estimand.IdentifiedEstimand(identifier, treatment_variable, outcome_variable, estimand_type=None, estimands=None, backdoor_variables=None, instrumental_variables=None, frontdoor_variables=None, mediator_variables=None, mediation_first_stage_confounders=None, mediation_second_stage_confounders=None, default_backdoor_id=None, identifier_method=None, no_directed_path=False)[source]#

基类: object

用于存储因果可估量(通常作为识别步骤的结果)的类。

get_backdoor_variables(key: str | None = None)[source]#

返回一个包含后门变量的列表。

如果调用此方法的估计器是后门方法,则返回与其目标可估量对应的后门变量。否则,返回默认后门可估量的后门变量。

get_frontdoor_variables()[source]#

返回一个包含前门变量的列表(如果存在)

get_instrumental_variables()[source]#

返回一个包含工具变量的列表(如果存在)

get_mediator_variables()[source]#

返回一个包含中介变量的列表(如果存在)

set_backdoor_variables(bdoor_variables_arr: List, key: str | None = None)[source]#
set_identifier_method(identifier_name: str)[source]#

dowhy.causal_identifier.identify_effect 模块#

class dowhy.causal_identifier.identify_effect.CausalIdentifier(*args, **kwargs)[source]#

基类:Protocol

定义 CausalIdentifier 的协议,所有 CausalIdentifier 必须至少符合此方法列表。

此类用于向后兼容 CausalModel,未来将被弃用,推荐使用函数调用 auto_identify_effect()

identify_effect(graph: DiGraph, action_nodes: str | List[str], outcome_nodes: str | List[str], **kwargs)[source]#

根据因果图识别待估计的因果效应 :param graph: 待分析的因果图 :param action_nodes: 处理(干预)的名称 :param outcome_nodes: 结果的名称 :param **kwargs: 特定 CausalIdentifier 的 identify_effect 方法所需的额外参数,例如:AutoIdentifier 中的 conditional_node_names 或 IDIdentifier 中的 node_names :returns: 如果识别成功,则返回表示因果效应的概率表达式(可估计量),否则返回 NULL

dowhy.causal_identifier.identify_effect.identify_effect(graph: DiGraph, action_nodes: str | List[str], outcome_nodes: str | List[str], observed_nodes: str | List[str]) IdentifiedEstimand[source]#

基于因果图识别要估计的因果效应

参数:
  • graph – 要分析的因果图

  • treatment – 处理的名称

  • outcome – 结果的名称

返回:

如果识别成功,则返回因果效应的概率表达式(可估量),否则返回 NULL

模块内容#

class dowhy.causal_identifier.AutoIdentifier(estimand_type: EstimandType, backdoor_adjustment: BackdoorAdjustment = BackdoorAdjustment.BACKDOOR_DEFAULT, optimize_backdoor: bool = False, costs: List | None = None)[source]#

基类: object

实现不同识别方法的类。

目前支持后门和工具变量识别方法。识别过程基于提供的因果图。

此类用于向后兼容 CausalModel,未来将被弃用,推荐使用函数调用 auto_identify_effect()

identify_backdoor(graph: DiGraph, action_nodes: List[str], outcome_nodes: List[str], observed_nodes: List[str], include_unobserved: bool = False, dseparation_algo: str = 'default', direct_effect: bool = False)[source]#
identify_effect(graph: DiGraph, action_nodes: str | List[str], outcome_nodes: str | List[str], observed_nodes: str | List[str], conditional_node_names: List[str] | None = None)[source]#
class dowhy.causal_identifier.BackdoorAdjustment(value)[source]#

基类: Enum

一个枚举。

BACKDOOR_DEFAULT = 'default'#
BACKDOOR_EFFICIENT = 'efficient-adjustment'#
BACKDOOR_EXHAUSTIVE = 'exhaustive-search'#
BACKDOOR_MAX = 'maximal-adjustment'#
BACKDOOR_MIN = 'minimal-adjustment'#
BACKDOOR_MINCOST_EFFICIENT = 'efficient-mincost-adjustment'#
BACKDOOR_MIN_EFFICIENT = 'efficient-minimal-adjustment'#
class dowhy.causal_identifier.EstimandType(value)[source]#

基类: Enum

一个枚举。

NONPARAMETRIC_ATE = 'nonparametric-ate'#
NONPARAMETRIC_CDE = 'nonparametric-cde'#
NONPARAMETRIC_NDE = 'nonparametric-nde'#
NONPARAMETRIC_NIE = 'nonparametric-nie'#
class dowhy.causal_identifier.IDIdentifier[source]#

基类: object

此类用于向后兼容 CausalModel,未来将被弃用,推荐使用函数调用 id_identify_effect()

identify_effect(graph: DiGraph, action_nodes: str | List[str], outcome_nodes: str | List[str], observed_nodes: str | List[str])[source]#
class dowhy.causal_identifier.IdentifiedEstimand(identifier, treatment_variable, outcome_variable, estimand_type=None, estimands=None, backdoor_variables=None, instrumental_variables=None, frontdoor_variables=None, mediator_variables=None, mediation_first_stage_confounders=None, mediation_second_stage_confounders=None, default_backdoor_id=None, identifier_method=None, no_directed_path=False)[source]#

基类: object

用于存储因果可估量(通常作为识别步骤的结果)的类。

get_backdoor_variables(key: str | None = None)[source]#

返回一个包含后门变量的列表。

如果调用此方法的估计器是后门方法,则返回与其目标可估量对应的后门变量。否则,返回默认后门可估量的后门变量。

get_frontdoor_variables()[source]#

返回一个包含前门变量的列表(如果存在)

get_instrumental_variables()[source]#

返回一个包含工具变量的列表(如果存在)

get_mediator_variables()[source]#

返回一个包含中介变量的列表(如果存在)

set_backdoor_variables(bdoor_variables_arr: List, key: str | None = None)[source]#
set_identifier_method(identifier_name: str)[source]#
dowhy.causal_identifier.construct_backdoor_estimand(treatment_name: List[str], outcome_name: List[str], common_causes: List[str])[source]#
dowhy.causal_identifier.construct_frontdoor_estimand(treatment_name: List[str], outcome_name: List[str], frontdoor_variables_names: List[str])[source]#
dowhy.causal_identifier.construct_iv_estimand(treatment_name: List[str], outcome_name: List[str], instrument_names: List[str])[source]#
dowhy.causal_identifier.identify_effect(graph: DiGraph, action_nodes: str | List[str], outcome_nodes: str | List[str], observed_nodes: str | List[str]) IdentifiedEstimand[source]#

基于因果图识别要估计的因果效应

参数:
  • graph – 要分析的因果图

  • treatment – 处理的名称

  • outcome – 结果的名称

返回:

如果识别成功,则返回因果效应的概率表达式(可估量),否则返回 NULL

dowhy.causal_identifier.identify_effect_auto(graph: DiGraph, action_nodes: str | List[str], outcome_nodes: str | List[str], observed_nodes: str | List[str], estimand_type: EstimandType, conditional_node_names: List[str] | None = None, backdoor_adjustment: BackdoorAdjustment = BackdoorAdjustment.BACKDOOR_DEFAULT, optimize_backdoor: bool = False, costs: List | None = None) IdentifiedEstimand[source]#

返回已识别的可估计量(如果存在)的主要方法。

如果 estimand_type 是非参数 ATE,则使用后门、工具变量和前门识别方法,基于因果图检查是否存在可识别的可估计量。

参数:
  • optimize_backdoor – 如果为 True,使用优化算法计算后门集合

  • costs – 与图中变量相关的非负成本。仅用于

estimand_type=’non-parametric-ate’ 和 backdoor_adjustment=’efficient-mincost-adjustment’。如果用户未提供成本,且 backdoor_adjustment=’efficient-mincost-adjustment’,则假设图中所有变量的成本等于一。:param conditional_node_names: 用于确定治疗的变量。如果未提供,则假定干预是静态的。:returns: 目标可估计量,IdentifiedEstimand 类的实例

dowhy.causal_identifier.identify_effect_id(graph: DiGraph, action_nodes: str | List[str], outcome_nodes: str | List[str]) IDExpression[source]#

ID 算法的实现。链接 - https://ftp.cs.ucla.edu/pub/stat_ser/shpitser-thesis.pdf 伪代码已在第 40 页提供。

参数:

treatment_names – 包含处理变量名称的 OrderedSet。

:param outcome_names: 包含结果变量名称的 OrderedSet。

返回:

目标可估量,IDExpression 类的一个实例。