dowhy.utils 包#

子模块#

dowhy.utils.api 模块#

dowhy.utils.api.parse_state(state)[source]#

dowhy.utils.cit 模块#

dowhy.utils.cit.compute_ci(r=None, nx=None, ny=None, confidence=0.95)[source]#

计算相关系数的参数置信区间。 参见:https://online.stat.psu.edu/stat505/lesson/6/6.3

这是通过应用Fisher的r到z变换完成的 z = .5[ln((1+r)/(1-r))] = arctanh(r)

标准误差为1/sqrt(N-3),其中N为样本大小

对于相应的置信水平,正态分布的临界值是通过stats.norm.ppf((1 - alpha)/2)计算得出的,用于双尾测试。

在z空间中的上下置信区间是通过公式 z ± 临界值*误差 计算的

置信区间随后被转换回r空间

:param stat : 相关系数 :param nx : 向量x的长度 :param ny : 向量y的长度 :param confidence : 置信水平 (0.95 = 95%)

:返回 : 包含置信区间的数组

dowhy.utils.cit.conditional_MI(data=None, x=None, y=None, z=None)[source]#

方法返回给定Z条件下X和Y之间的条件互信息 I(X, Y | Z) = H(X|Z) - H(X|Y,Z)

= H(X,Z) - H(Z) - H(X,Y,Z) + H(Y,Z) = H(X,Z) + H(Y,Z) - H(X,Y,Z) - H(Z)

:param data : 数据集 :param x,y,z : 数据集中的列名 :returns : 给定Z的条件下,X和Y之间的条件互信息

dowhy.utils.cit.entropy(x)[source]#

” 返回随机变量x的熵 H(x) = - Σ p(x)log(p(x)) :param x : 计算熵的随机变量 :returns : 随机变量的熵

dowhy.utils.cit.partial_corr(data=None, x=None, y=None, z=None, method='pearson')[source]#

计算偏相关,即在去除z的影响后x和y之间的关联程度。这是通过计算两个线性回归残差之间的相关系数来完成的: xsim z, ysim z 参见:1 https://en.wikipedia.org/wiki/Partial_correlation

:param data : pandas dataframe :param x : 数据中的列名 :param y : 数据中的列名 :param z : 字符串或列表 :param method : 表示相关类型的字符串 - “pearson” 或 “spearman”

: returns: a python dictionary with keys as

n: 样本大小 r: 偏相关系数 CI95: 95% 参数置信区间 p-val: p值

dowhy.utils.cli_helpers 模块#

dowhy.utils.cli_helpers.query_yes_no(question, default=True)[source]#

通过标准输入提出一个是/否问题并返回答案。

来源: https://stackoverflow.com/questions/3041986/apt-command-line-interface-like-yes-no-input

如果输入无效,系统将提示用户直到他们提供有效的输入。

副作用:阻塞程序执行,直到给出有效的输入(是/否)。

Parameters:
  • question(str) – 向用户提出的问题。

  • default(bool|None) – 当按下回车键时没有输入值时的默认值。 当为 None 时,没有默认值,查询将循环。

Returns:

一个布尔值,指示用户是否输入了是或否。

dowhy.utils.dgp 模块#

class dowhy.utils.dgp.DataGeneratingProcess(**kwargs)[source]#

基础类:object

数据生成过程实现的基类。

子类实现了创建各种数据生成过程的函数。所有数据生成过程都在“dowhy.utils.dgps”包中。

DEFAULT_PERCENTILE = 0.9#
convert_to_binary(data, deterministic=False)[source]#
generate_data()[source]#
generation_process()[source]#

dowhy.utils.graph_operations 模块#

dowhy.utils.graph_operations.add_edge(i, j, g)[source]#

向图 g 添加一条边 i –> j。仅当此添加不会导致图中出现循环时,才会添加该边。

dowhy.utils.graph_operations.adjacency_matrix_to_adjacency_list(adjacency_matrix, labels=None)[source]#

将图的邻接矩阵转换为邻接表。

Parameters:
  • adjacency_matrix – 一个表示图邻接矩阵的numpy数组。

  • labels – 标签列表。

Returns:

作为字典的邻接表。

dowhy.utils.graph_operations.adjacency_matrix_to_graph(adjacency_matrix, labels=None)[source]#

将给定的图邻接矩阵转换为DOT格式。

Parameters:
  • adjacency_matrix – 一个表示图邻接矩阵的numpy数组。

  • labels – 标签列表。

Returns:

以DOT格式显示的图形。

dowhy.utils.graph_operations.convert_to_undirected_graph(g)[source]#
dowhy.utils.graph_operations.daggity_to_dot(daggity_string)[源代码]#

将输入的 daggity_string 转换为有效的 DOT 图形格式。

Parameters:

daggity_string – 从Daggity网站输出的图形

Returns:

DOT 字符串

dowhy.utils.graph_operations.del_edge(i, j, g)[source]#

删除图中的边 i –> j。只有当删除这条边不会导致图断开连接时,才会删除这条边。

dowhy.utils.graph_operations.find_ancestor(node_set, node_names, adjacency_matrix, node2idx, idx2node)[source]#

在给定的图中查找一组给定节点的祖先。

Parameters:
  • node_set – 必须获取其祖先节点的节点集合。

  • node_names – 图中所有节点的名称。

  • adjacency_matrix – 图的邻接矩阵。

  • node2idx – 一个字典,将节点名称映射到它们在邻接矩阵中的行或列索引。

  • idx2node – 一个字典,将邻接矩阵中的行或列索引映射到相应的节点名称。

Returns:

包含node_set中所有节点的祖先的OrderedSet。

dowhy.utils.graph_operations.find_c_components(adjacency_matrix, node_set, idx2node)[源代码]#

获取图中的C组件。

Parameters:
  • adjacency_matrix – 图的邻接矩阵。

  • node_set – 必须获取其祖先节点的节点集合。

  • idx2node – 一个字典,将邻接矩阵中的行或列索引映射到相应的节点名称。

Returns:

图中C组件的列表。

dowhy.utils.graph_operations.find_predecessor(i, j, g)[source]#

在图的路径中找到两个节点i和j之间的前驱节点k。

dowhy.utils.graph_operations.get_random_node_pair(n)[source]#

随机生成一对节点。

dowhy.utils.graph_operations.get_simple_ordered_tree(n)[source]#

生成一个简单的有序树。该树只是一个由n个节点组成的有向无环图,结构为0 –> 1 –> …. –> n。

dowhy.utils.graph_operations.induced_graph(node_set, adjacency_matrix, node2idx)[source]#

获取与节点子集对应的诱导图。

Parameters:
  • node_set – 必须获取其祖先节点的节点集合。

  • adjacency_matrix – 图的邻接矩阵。

  • node2idx – 一个字典,将节点名称映射到它们在邻接矩阵中的行或列索引。

Returns:

表示诱导图的邻接矩阵的Numpy数组。

dowhy.utils.graph_operations.is_connected(g)[source]#

检查有向无环图是否连通。

dowhy.utils.graph_operations.str_to_dot(string)[source]#

将输入字符串从graphviz库转换为有效的DOT图形格式。

Parameters:

string – 以DOT格式表示的图。

Returns:

DOT字符串转换为适合DoWhy库的格式。

dowhy.utils.graphviz_plotting 模块#

dowhy.utils.graphviz_plotting.plot_causal_graph_graphviz(causal_graph: Graph, layout_prog: str | None = None, display_causal_strengths: bool = True, causal_strengths: Dict[Tuple[Any, Any], float] | None = None, colors: Dict[Any | Tuple[Any, Any], str] | None = None, filename: str | None = None, display_plot: bool = True, figure_size: Tuple[int, int] | None = None) None[源代码]#

dowhy.utils.networkx_plotting 模块#

dowhy.utils.networkx_plotting.plot_causal_graph_networkx(causal_graph: Graph, layout_prog: str | None = None, causal_strengths: Dict[Tuple[Any, Any], float] | None = None, colors: Dict[Any | Tuple[Any, Any], str] | None = None, filename: str | None = None, display_plot: bool = True, label_wrap_length: int = 3, figure_size: Tuple[int, int] | None = None) None[源代码]#

dowhy.utils.ordered_set 模块#

class dowhy.utils.ordered_set.OrderedSet(elements=None)[source]#

基础类:object

用于有序集合的Python类。 代码取自 buyalsky/ordered-hash-set

add(element)[source]#

如果元素不存在,则将其添加到集合中的函数。

Parameters:

element – 要添加的元素。

difference(other_set)[source]#

函数用于移除self._set中同时存在于other_set中的元素。

Parameters:

other_set – 用于获取差集的集合。可以是列表、集合或OrderedSet。

Returns:

表示 self._set 和 other_set 中元素差异的新 OrderedSet。

get_all()[source]#

返回集合中所有元素的列表的函数。

Returns:

集合中所有项目的列表。

intersection(other_set)[源代码]#

计算 self._set 和 other_set 的交集的函数。

Parameters:

other_set – 用于获取交集的集合。可以是列表、集合或OrderedSet。

Returns:

表示具有与OrderedSet对象和other_set共同元素的新的OrderedSet。

is_empty()[source]#

用于确定集合是否为空的函数。

Returns:

True 如果集合为空,False 否则。

union(other_set)[source]#

计算 self._set 和 other_set 的并集的函数。

Parameters:

other_set – 用于获取并集的集合。可以是列表、集合或OrderedSet。

Returns:

新的OrderedSet表示包含来自OrderedSet对象和other_set的元素的集合。

dowhy.utils.plotting 模块#

dowhy.utils.plotting.bar_plot(values: Dict[str, float], uncertainties: Dict[str, Tuple[float, float]] | None = None, ylabel: str = '', filename: str | None = None, display_plot: bool = True, figure_size: List[int] | None = None, bar_width: float = 0.8, xticks: List[str] | None = None, xticks_rotation: int = 90, sort_names: bool = False) None[源代码]#

方便函数,用于绘制带有不确定性条(如果提供)的给定值的条形图。适用于各种归因结果(包括置信区间)。

Parameters:
  • values – 一个字典,其中键是标签,值是要绘制的值。

  • uncertainties – 要添加到误差条的属性字典。

  • ylabel – y轴的标签。

  • filename – 如果输出应该绘制到文件中,则为可选的文件名。

  • display_plot – 可选地指定是否应显示图表(默认为 True)。

  • figure_size – 要绘制的图形的大小。

  • bar_width – 柱子的宽度。

  • xticks – 明确指定x轴上柱状图的标签。

  • xticks_rotation – 指定x轴上标签的旋转角度。

  • sort_names – 如果为True,图中的名称将按字母顺序排序。如果为False,则使用values中给出的顺序。

dowhy.utils.plotting.plot(causal_graph: Graph, layout_prog: str | None = None, causal_strengths: Dict[Tuple[Any, Any], float] | None = None, colors: Dict[Any | Tuple[Any, Any], str] | None = None, filename: str | None = None, display_plot: bool = True, figure_size: Tuple[int, int] | None = None, **kwargs) None[source]#

用于绘制因果图的便捷函数。此函数根据系统上可用的内容使用不同的后端。当使用Graphviz作为后端时,效果最佳。这需要共享系统库(例如brew install graphvizapt-get install graphviz)以及Python的pygraphviz包(pip install pygraphviz)。当Graphviz不可用时,它将回退到networkx后端。

Parameters:
  • causal_graph – 要绘制的图形

  • layout_prog – 定义布局类型。如果未提供,则对于graphviz图使用'dot'布局,对于networkx图使用自定义布局。

  • causal_strengths – 一个可选的字典,包含 Edge -> float 条目。

  • colors – 一个可选的字典,包含边或节点的颜色规范。

  • filename – 如果输出应该绘制到文件中,则为可选的文件名。

  • display_plot – 可选地指定是否应显示图表(默认为 True)。

  • figure_size – 一个元组,用于定义pyplot的宽度和高度(作为一个元组)。此参数用于修改pyplot的'figure.figsize'参数。如果未提供,则使用当前/默认值。

  • kwargs – 剩余参数将原封不动地传递给后端。

示例用法:

>>> plot(nx.DiGraph([('X', 'Y')])) # plots X -> Y
>>> plot(nx.DiGraph([('X', 'Y')]), causal_strengths={('X', 'Y'): 0.43}) # annotates arrow with 0.43
>>> plot(nx.DiGraph([('X', 'Y')]), colors={('X', 'Y'): 'red', 'X': 'green'}) # colors X -> Y red and X green
dowhy.utils.plotting.plot_adjacency_matrix(adjacency_matrix: DataFrame, is_directed: bool, filename: str | None = None, display_plot: bool = True) None[source]#
dowhy.utils.plotting.pretty_print_graph(graph: DiGraph) None[source]#

以时间滞后漂亮地打印图形边缘。

Parameters:

graph (networkx.Graph) – 网络图。

Returns:

Return type:

dowhy.utils.propensity_score 模块#

dowhy.utils.propensity_score.binarize_discrete(data, covariates, variable_types)[source]#
dowhy.utils.propensity_score.binary_treatment_model(data, covariates, treatment, variable_types)[source]#
dowhy.utils.propensity_score.categorical_treatment_model(data, covariates, treatment, variable_types)[source]#
dowhy.utils.propensity_score.continuous_treatment_model(data, covariates, treatment, variable_types)[source]#
dowhy.utils.propensity_score.discrete_to_integer(discrete)[source]#
dowhy.utils.propensity_score.get_type_string(variables, variable_types)[source]#
dowhy.utils.propensity_score.propensity_of_treatment_score(data, covariates, treatment, model='logistic', variable_types=None)[source]#
dowhy.utils.propensity_score.state_propensity_score(data, covariates, treatments, variable_types=None)[来源]#

dowhy.utils.regression 模块#

dowhy.utils.regression.create_polynomial_function(max_degree)[source]#

创建多项式函数列表

Parameters:

max_degree – 要创建的多项式函数的次数

Returns:

lambda函数列表

dowhy.utils.regression.generate_moment_function(W, g)[source]#

生成并返回用于平均因果效应的矩函数 m(W,g) = g(1,W) - g(0,W)

dowhy.utils.regression.get_numeric_features(X)[source]#

查找数据集中的数值特征列

Parameters:

X – pandas 数据框

返回:数值特征的索引列表

模块内容#