工业园区网站建设,网站制作 招聘,三分钟做网站,wordpress 分类输出文章目录 概述1 连续数值变量1.1 ParCorr 偏相关#xff08;ParCorr类#xff09;1.2 鲁棒偏相关#xff08;RobustParCorr#xff09;非线性检验1.3 GPDC1.4 CMIknn 2a. 分类/符号时间序列2b. 混合分类/连续时间序列多变量X和Y的测试 概述
这个表格概述了 X ⊥ Y ∣ Z X\… 文章目录 概述1 连续数值变量1.1 ParCorr 偏相关ParCorr类1.2 鲁棒偏相关RobustParCorr非线性检验1.3 GPDC1.4 CMIknn 2a. 分类/符号时间序列2b. 混合分类/连续时间序列多变量X和Y的测试 概述
这个表格概述了 X ⊥ Y ∣ Z X\perp Y | Z X⊥Y∣Z的测试及其相关的假设
条件独立性检验假设条件ParCorr连续变量 X , Y , Z X,Y,Z X,Y,Z具有线性依赖关系和高斯噪声 X , Y X,Y X,Y必须是单变量RobustParCorr连续变量 X , Y , Z X,Y,Z X,Y,Z具有线性依赖关系对不同边缘分布具有鲁棒性 X , Y X,Y X,Y必须是单变量ParCorrWLS连续变量 X , Y , Z X,Y,Z X,Y,Z具有线性依赖关系可以处理异方差依赖关系 X , Y X,Y X,Y必须是单变量GPDC / GPDCtorch连续变量 X , Y , Z X,Y,Z X,Y,Z具有加性依赖关系 X , Y X,Y X,Y必须是单变量CMIknn连续变量 X , Y , Z X,Y,Z X,Y,Z具有更一般的依赖关系基于排列的检验 X , Y X,Y X,Y可以是多变量Gsquared离散/分类变量 X , Y , Z X,Y,Z X,Y,Z X , Y X,Y X,Y必须是单变量CMIsymb离散/分类变量 X , Y , Z X,Y,Z X,Y,Z基于排列的检验 X , Y X,Y X,Y 可以是多变量RegressionCI混合数据集包含单变量离散/分类和线性连续变量 X , Y , Z X,Y,Z X,Y,Z X , Y X,Y X,Y必须是单变量PairwiseMultCI元条件独立性检验将上述每个单变量检验转变为多变量检验包括可能有助于增加效应大小的方法
在概述教程中讨论的密度图可以帮助选择使用哪种测试。
需要注意的是那些假设条件较少的测试通常比假设条件较多的测试具有更低的检测能力。例如对于实际上是线性的依赖关系ParCorr的效果会比CMIknn好得多。此外非参数测试在计算上要昂贵得多。
# Imports
import numpy as np
import matplotlib
from matplotlib import pyplot as plt
%matplotlib inline
## use %matplotlib notebook for interactive figures
# plt.style.use(ggplot)
import sklearnimport tigramite
from tigramite import data_processing as pp
from tigramite.toymodels import structural_causal_processes as toysfrom tigramite import plotting as tp
from tigramite.pcmci import PCMCIfrom tigramite.independence_tests.parcorr import ParCorr
from tigramite.independence_tests.robust_parcorr import RobustParCorr
from tigramite.independence_tests.parcorr_wls import ParCorrWLS
from tigramite.independence_tests.gpdc import GPDC
from tigramite.independence_tests.cmiknn import CMIknn
from tigramite.independence_tests.cmisymb import CMIsymb
from tigramite.independence_tests.gsquared import Gsquared
from tigramite.independence_tests.regressionCI import RegressionCI1 连续数值变量
1.1 ParCorr 偏相关ParCorr类
在概述教程中有解释。
1.2 鲁棒偏相关RobustParCorr
如果在数据中仍然存在线性依赖关系但分布又不是高斯分布建议使用鲁棒偏相关RobustParCorr测试。这种测试在进行偏相关测试之前会先将数据转换为正态分布1。
在这里我们还展示了新的函数toys.generate_structural_causal_process它允许随机创建具有一定数量参数的结构因果过程模型详见文档说明。在接下来的示例中噪声项来自于极值Weibull分布和均匀分布。此外我们还应用了一些多项式变换使数据变得更加极端。
# np.random.seed(1)
T 500
links, noises toys.generate_structural_causal_process(N3, L4, dependency_funcs[linear], dependency_coeffs[-0.5, 0.5], auto_coeffs[0.3, 0.5], contemp_fraction0.,max_lag2, noise_dists[weibull, uniform],noise_means[0.],noise_sigmas[1., 1.5],noise_seed5,seed9)
for j in links:print(j, [(link[0], link[1], link[2].__name__) for link in links[j]])print(noises[j].__name__)
data, nonstat toys.structural_causal_process(links,TT, noisesnoises)
data[:,0] data[:,0] 0.3*data[:,0]**3
data[:,1] data[:,1] 0.3*data[:,1]**5
data[:,2] np.sign(data[:,2])*data[:,2]**2
var_names [r$X^0$, r$X^1$, r$X^2$]dataframe pp.DataFrame(data, var_namesvar_names)
tp.plot_timeseries(dataframe)0 [((0, -1), 0.5, ‘linear’), ((2, -1), -0.5, ‘linear’), ((1, -2), 0.5, ‘linear’)] weibull 1 [((1, -1), 0.3, ‘linear’), ((0, -2), -0.5, ‘linear’)] weibull 2 [((2, -1), 0.3, ‘linear’), ((0, -2), 0.5, ‘linear’)] uniform
# Init
pcmci_robust_parcorr PCMCI(dataframedataframe, cond_ind_testRobustParCorr())我们可以使用密度图功能来展示偏斜的边缘和联合密度。在这里我们将偏斜的数据标准化以显示它明显非高斯分布。
# tp.plot_densityplots(dataframedataframe, add_densityplot_args{matrix_lags:matrix_lags}); plt.show()
# correlations pcmci_robust_parcorr.get_lagged_dependencies(tau_max20, val_onlyTrue)[val_matrix]
# matrix_lags np.argmax(np.abs(correlations), axis2)
matrix_lags Nonematrix tp.setup_density_matrix(Ndataframe.N, var_namesdataframe.var_names)# Standardize to better compare skewness with gaussianized data
dataframe.values[0] - dataframe.values[0].mean(axis0)
dataframe.values[0] / dataframe.values[0].std(axis0)matrix.add_densityplot(dataframedataframe, matrix_lagsmatrix_lags, label_colorred, labelstandardized data,snskdeplot_args {cmap:Reds, alpha:1., levels:4})# Transform data to normal marginals
data_normal pp.trafo2normal(data)
dataframe_normal pp.DataFrame(data_normal, var_namesvar_names)matrix.add_densityplot(dataframedataframe_normal, matrix_lagsmatrix_lags, label_colorblack, labelgaussianized data,snskdeplot_args {cmap:Greys, alpha:1., levels:4})
matrix.adjustfig()
# plt.show()pcmci_parcorr PCMCI(dataframedataframe, cond_ind_testParCorr())
results pcmci_parcorr.run_pcmci(tau_max2)pcmci_robust_parcorr PCMCI(dataframedataframe, cond_ind_testRobustParCorr())
results_robust pcmci_robust_parcorr.run_pcmci(tau_max2)fig, axes plt.subplots(nrows1, ncols3)
axes[0].set_title(True graph)
tp.plot_graph(graphpcmci_robust_parcorr.get_graph_from_dict(links, tau_maxNone),var_namesvar_names,fig_ax(fig, axes[0]),show_colorbarFalse,)axes[1].set_title(ParCorr)
tp.plot_graph(val_matrixresults[val_matrix],graphresults[graph],var_namesvar_names,fig_ax(fig, axes[1]),show_colorbarFalse,)axes[2].set_title(RobustParCorr)
tp.plot_graph(val_matrixresults_robust[val_matrix],graphresults_robust[graph],var_namesvar_names,fig_ax(fig, axes[2]),show_colorbarFalse,)
plt.show()鲁棒偏相关右图在这里比标准的偏相关左图产生更可靠的结果因为边缘分布事先被转换为正态分布。
在教程tigarite_tutorial_heteroskedastic_ParCorrWLS中我们介绍了另一种适用于异方差数据的偏相关版本称为ParCorrWLS。
非线性检验
如果存在非线性依赖关系建议使用非参数检验。 random_state np.random.default_rng(seed42)
data random_state.standard_normal((500, 3))
for t in range(1, 500):data[t, 0] 0.4*data[t-1, 1]**2data[t, 2] 0.3*data[t-2, 1]**2
var_names [r$X^0$, r$X^1$, r$X^2$]dataframe pp.DataFrame(data, var_namesvar_names)
tp.plot_timeseries(dataframe); plt.show()pcmci_parcorr PCMCI(dataframedataframe, cond_ind_testParCorr(),verbosity0)
results pcmci_parcorr.run_pcmci(tau_max2, pc_alpha0.2, alpha_level 0.01)
tp.plot_graph(val_matrixresults[val_matrix],graphresults[graph],var_namesvar_names,show_colorbarFalse,)偏相关在这里有两个失败之处1它无法检测到两个非线性链接2它错误地检测到了一个链接因为它同样无法排除非线性依赖。
1.3 GPDC
Tigramite通过基于高斯过程回归和残差上的距离相关性GPDC的测试来覆盖非线性加性依赖关系。对于GPDC没有可用的距离相关性DC的解析空模型分布。为了进行显著性检验Tigramite通过参数significance analytic预先计算每个样本大小的分布存储在内存中从而避免了对每个条件独立性测试进行计算成本高昂的排列测试significance shuffle_test。高斯过程回归使用sklearn的默认参数执行除了核函数在这里默认为径向基函数一个白噪声核这两个超参数在内部被优化以及假定的噪声水平alpha被设置为零因为我们添加了一个白噪声核。这些和其他参数可以通过gp_params字典来设置。有关进一步讨论请参见sklearn的文档。还存在一个模块gpdc_torch.py它利用gpytorch在GPU上进行更快的计算。
gpdc GPDC(significanceanalytic, gp_paramsNone)
pcmci_gpdc PCMCI(dataframedataframe, cond_ind_testgpdc,verbosity0)与偏相关ParCorr相比非线性链接被GPDC正确检测到。
results pcmci_gpdc.run_pcmci(tau_max2, pc_alpha0.1, alpha_level 0.01)
tp.plot_graph(val_matrixresults[val_matrix],graphresults[graph],var_namesvar_names,show_colorbarFalse,)作为一个简短的离题我们可以通过观察散点图来了解GPDC是如何工作的。
array, dymmy, dummy, dummy gpdc._get_array(X[(0, -1)], Y[(2, 0)], Z[(1, -2)], tau_max2)
x, meanx gpdc._get_single_residuals(array, target_var0, return_meansTrue)
y, meany gpdc._get_single_residuals(array, target_var1, return_meansTrue)fig, axes plt.subplots(nrows1, ncols3, figsize(8,3))
axes[0].scatter(array[2], array[0], colorgrey, alpha0.3)
axes[0].scatter(array[2], meanx, colorblack)
axes[0].set_title(GP of %s on %s % (var_names[0], var_names[1]) )
axes[0].set_xlabel(var_names[1]); axes[0].set_ylabel(var_names[0])
axes[1].scatter(array[2], array[1], colorgrey, alpha0.3)
axes[1].scatter(array[2], meany, colorblack)
axes[1].set_title(GP of %s on %s % (var_names[2], var_names[1]) )
axes[1].set_xlabel(var_names[1]); axes[1].set_ylabel(var_names[2])
axes[2].scatter(x, y, colorred, alpha0.3)
axes[2].set_title(DC of residuals: \n val%.3f / p-val%.3f % (gpdc.run_test(X[(0, -1)], Y[(2, 0)], Z[(1, -2)], tau_max2)) )
axes[2].set_xlabel(resid. var_names[0]); axes[2].set_ylabel(resid. var_names[2])
plt.tight_layout()让我们来看一个具有乘性噪声的模型中更为非线性的依赖关系
random_state np.random.default_rng(seed11)
data random_state.standard_normal((600, 3))
for t in range(1, 600):data[t, 0] * 0.2*data[t-1, 1]data[t, 2] * 0.3*data[t-2, 1]
dataframe pp.DataFrame(data, var_namesvar_names)
tp.plot_timeseries(dataframe); plt.show()由于乘性噪声违反了GPDC所基于的加性依赖的假设虚假的链接被错误地检测出来因为它无法被排除条件。然而与ParCorr相比两个真实的链接被检测出来因为距离相关性DC可以检测到任何类型的依赖关系底层的sklearn高斯过程函数可能会发出警告
pcmci_gpdc PCMCI(dataframedataframe, cond_ind_testgpdc)
results pcmci_gpdc.run_pcmci(tau_max2, pc_alpha0.1, alpha_level 0.01)
tp.plot_graph(val_matrixresults[val_matrix],graphresults[graph],var_namesvar_names,show_colorbarFalse,)在这里的散点图中我们可以看到高斯过程无法很好地拟合依赖关系因此残差不是独立的。
array, dymmy, dummy, dummy gpdc._get_array(X[(0, -1)], Y[(2, 0)], Z[(1, -2)], tau_max2)
x, meanx gpdc._get_single_residuals(array, target_var0, return_meansTrue)
y, meany gpdc._get_single_residuals(array, target_var1, return_meansTrue)fig, axes plt.subplots(nrows1, ncols3, figsize(8,3))
axes[0].scatter(array[2], array[0], colorgrey)
axes[0].scatter(array[2], meanx, colorblack)
axes[0].set_title(GP of %s on %s % (var_names[0], var_names[1]) )
axes[0].set_xlabel(var_names[1]); axes[0].set_ylabel(var_names[0])
axes[1].scatter(array[2], array[1], colorgrey)
axes[1].scatter(array[2], meany, colorblack)
axes[1].set_title(GP of %s on %s % (var_names[2], var_names[1]) )
axes[1].set_xlabel(var_names[1]); axes[1].set_ylabel(var_names[2])
axes[2].scatter(x, y, colorred, alpha0.3)
axes[2].set_title(DC of residuals: \n val%.3f / p-val%.3f % (gpdc.run_test(X[(0, -1)], Y[(2, 0)], Z[(1, -2)], tau_max2)) )
axes[2].set_xlabel(resid. var_names[0]); axes[2].set_ylabel(resid. var_names[2])
plt.tight_layout()1.4 CMIknn
Tigramite中实现的最通用的条件独立性测试是基于使用k-最近邻估计器估计的条件互信息CMIknn。这个测试在下面的论文中有描述
Runge, Jakob. 2018. “基于条件互信息最近邻估计器的条件独立性测试。” 载于第21届国际人工智能与统计会议论文集。
CMIknn不涉及对依赖关系的明确假设。然而由于密度是通过局部样本超点隐式近似的因此有一个假设是这些超立方体内密度是恒定的。参数knn决定了超立方体的大小即数据自适应的局部长度尺度。
现在我们甚至不能预计算空模型分布因为CMIknn不像GPDC那样基于残差空模型分布依赖于更多因素。因此我们使用significanceshuffle_test在每个单独的测试中生成它。测试的洗牌测试 I ( X ; Y ∣ Z ) 0 I(X;Y|Z)0 I(X;Y∣Z)0随机 X X X值是局部的每个样本点 x x x的值被随机映射到其最近邻居中的一个shuffle_neighbors参数在子空间 Z Z Z中。另一个可选参数是transform它指定在CMI估计之前是否转换数据。新的默认值是transformranks它比旧的transformstandardize效果更好。下面的单元可能需要几分钟时间。
# cmi_knn CMIknn(significanceshuffle_test, knn0.1, shuffle_neighbors5, transformranks, sig_samples200)
# pcmci_cmi_knn PCMCI(
# dataframedataframe,
# cond_ind_testcmi_knn,
# verbosity0)
# results pcmci_cmi_knn.run_pcmci(tau_max2, pc_alpha0.05, alpha_level 0.01)# tp.plot_graph(
# val_matrixresults[val_matrix],
# graphresults[graph],
# var_namesvar_names,
# link_colorbar_labelcross-MCI,
# node_colorbar_labelauto-MCI,
# vmin_edges0.,
# vmax_edges 0.3,
# edge_ticks0.05,
# cmap_edgesOrRd,
# vmin_nodes0,
# vmax_nodes.5,
# node_ticks.1,
# cmap_nodesOrRd,
# ); plt.show()在这里CMIknn正确地检测到了真实的链接并且也揭示了虚假的链接。虽然CMIknn现在可能看起来是最好的独立性测试选择我们必须注意到这种通用性是以更低的检测能力为代价的即当依赖关系实际上遵循某种参数形式时。那么ParCorr或GPDC是更有力的措施。当然ParCorr也比GPDC更好地检测线性链接。
另外需要注意的是由于洗牌测试CMIknn的计算成本非常高。你可以通过sig_samples参数减少洗牌样本的数量以增加p值估计的误差为代价。
或者你可以使用significancefixed_thres选项。然后pc_alpha被解释为任何条件独立性测试中的单边阈值 I ∗ I^* I∗。然后不会进行条件独立性假设检验。对于测试统计量 I ( X ; Y ∣ Z ) I(X;Y|Z) I(X;Y∣Z) 的条件独立性的标准则是 I ( X ; Y ∣ Z ) I ∗ I(X;Y|Z)I^* I(X;Y∣Z)I∗ I ∗ I^* I∗应被视为超参数。请注意为CMIknn选择 I ∗ I^* I∗是棘手的因为 I ( X ; Y ∣ Z ) I(X;Y|Z) I(X;Y∣Z)的值取决于变量的维度由于有限样本的估计偏差。好的一面是即使这样CMIknn也相当快。
然后你也可以使用像pc_alpha [0.001, 0.005, 0.01, 0.05]或任何其他你选择的阈值列表。然后计算所有这些阈值的图形并使用CMIknn的新get_model_selection_criterion函数在这些图形中选择。该函数使用sklearn的cross_val_score基于模型选择_folds的k折交叉验证集和KNeighborsRegressor模型与估计器的邻居数量相同但使用标准的欧几里得范数在每个节点上使用其在给定阈值产生的图形中的父节点。它将返回最小分数预测误差的结果。
这个选项只对依赖于排列测试的条件独立性测试有意义这些测试是CMIknn和CMIsymb.
# Pick pc_alpha here interpreted as fixed threshold with significancefixed_thres
pc_alpha 0.05 #[0.001, 0.005, 0.01, 0.025, 0.05, 0.1]cmi_knn CMIknn(significancefixed_thres, model_selection_folds3)
pcmci_cmi_knn PCMCI(dataframedataframe, cond_ind_testcmi_knn, verbosity0)
results pcmci_cmi_knn.run_pcmciplus(tau_max2, pc_alphapc_alpha)
# if fixed_thres is used, pc_alpha (and alpha_level) is interpreted as a threshold on the test statistic.tp.plot_graph(val_matrixresults[val_matrix],graphresults[graph],var_namesvar_names,link_colorbar_labelcross-MCI,node_colorbar_labelauto-MCI,vmin_edges0.,vmax_edges 0.3,edge_ticks0.05,cmap_edgesOrRd,vmin_nodes0,vmax_nodes.5,node_ticks.1,cmap_nodesOrRd,); plt.show()在这个例子中选择 pc_alpha [0.001, 0.005, 0.01, 0.025, 0.05, 0.1] 并不能得到正确的结果。阈值设定没有统计检验的严谨性但可以帮助进行因果特征选择或在更大的机器学习流水线中使用因果发现等任务。
2a. 分类/符号时间序列
分类或符号或离散数据在值之间没有顺序或度量比如苹果和梨子。为了适应这类时间序列Tigramite包括了Gsquared和CMIsymb条件独立性测试。这两种测试都是直接从离散值的直方图估计得出的。为了获得空模型分布Gsquared使用 x 2 x^2 x2分布对于零条目调整自由度这只在渐近情况下有效取决于数据。对于较小的样本量使用CMIsymb类它包括基于条件互信息的局部排列测试CMIsymb的计算时间要比Gsquared长得多。
在下面的过程中 X 0 X^0 X0, X 1 X^1 X1有两个类别而 X 2 X^2 X2有三个。 X 0 X^0 X0 X 2 X^2 X2的概率取决于 X 1 X^1 X1的概率其中 X 1 X^1 X1充当混杂因子。
T 1000
def get_data(T, seed1):random_state np.random.default_rng(seed)data random_state.binomial(n1, p0.4, size(T, 3))for t in range(T):prob 0.4data[t-1, 1].squeeze()*0.2data[t, 0] random_state.choice([0, 1], p[prob, 1.-prob])prob 0.4data[t-2, 1].squeeze()*0.2data[t, 2] random_state.choice([0, 1, 2], p[prob, (1.-prob)/2., (1.-prob)/2.])return data
dataframe pp.DataFrame(get_data(T), var_namesvar_names)
tp.plot_timeseries(dataframe, figsize(10,4)); plt.show()在这里我们关注Gsquared。请注意G2统计量值随样本量的大小而变化但它与条件互信息相关相关公式为 G 2 n C M I G 2nCMI G2nCMI。其中 n n n是样本量。因此我们在这里转换val_matrix以获得更好解释和可绘图的量。
gsquared Gsquared(significanceanalytic)
pcmci_cmi_symb PCMCI(dataframedataframe, cond_ind_testgsquared)
results pcmci_cmi_symb.run_pcmci(tau_min 1, tau_max2, pc_alpha0.2, alpha_level 0.01)val_matrix results[val_matrix]
val_matrix / (2.*T)tp.plot_graph(val_matrixval_matrix,graphresults[graph],var_namesvar_names,link_colorbar_labelcross-MCI,node_colorbar_labelauto-MCI,vmin_edges0.,vmax_edges 0.3,edge_ticks0.05,cmap_edgesOrRd,vmin_nodes0,vmax_nodes.5,node_ticks.1,cmap_nodesOrRd,); plt.show()请参考关于CMIsymb的独立教程以及CMIknnMixed该教程讨论了如何处理连续和分类变量的组合甚至是同时包含两种类型的变量。
在这里CMIsymb需要更长的时间并且给出了相同的结果但对于较小的样本量和更高维度的条件集和/或更多的分类值Gsquared的渐近空模型分布可能不再有效这时更倾向于使用CMIsymb。
# cmi_symb CMIsymb(significanceshuffle_test)
# pcmci_cmi_symb PCMCI(
# dataframedataframe,
# cond_ind_testcmi_symb)
# results pcmci_cmi_symb.run_pcmci(tau_min 1, tau_max2, pc_alpha0.2, alpha_level 0.01)# tp.plot_graph(
# val_matrixval_matrix,
# graphresults[graph],
# var_namesvar_names,
# link_colorbar_labelcross-MCI,
# node_colorbar_labelauto-MCI,
# vmin_edges0.,
# vmax_edges 0.3,
# edge_ticks0.05,
# cmap_edgesOrRd,
# vmin_nodes0,
# vmax_nodes.5,
# node_ticks.1,
# cmap_nodesOrRd,
# ); plt.show()2b. 混合分类/连续时间序列
通常人们可能会遇到一种情况即在数据集中一些变量是分类的而另一些是连续的。这种情况可以通过RegressionCI独立性测试来解决。然后必须通过dataframe的data_type参数为每个变量设置类型。这里更一般地将其实现为与数据形状相同的二进制数据数组描述变量中的个别样本或所有样本是连续的还是离散的连续变量用0表示离散变量用1表示。在这里一个变量的所有样本必须是相同的类型。
# Generate some mixed-type data with a binary variable (can also be multinomial) causing two continuous ones.
random_state np.random.default_rng(42)
T 1000
data np.zeros((T, 3))
data[:, 1] random_state.binomial(n1, p0.5, sizeT)
for t in range(2, T):data[t, 0] 0.5 * data[t-1, 0] random_state.normal(0.2 data[t-1, 1] * 0.6, 1)data[t, 2] 0.4 * data[t-1, 2] random_state.normal(0.2 data[t-2, 1] * 0.6, 1)data_type np.zeros(data.shape, dtypeint)
# X0 is continuous, encoded as 0 in data_type
data_type[:,0] 0
# X1 is discrete, encoded as 1 in data_type
data_type[:,1] 1
# X2 is continuous, encoded as 0 in data_type
data_type[:,2] 0dataframe pp.DataFrame(data,data_typedata_type,var_namesvar_names)
tp.plot_timeseries(dataframe, figsize(10,4)); plt.show()regressionCI RegressionCI(significanceanalytic)pcmci PCMCI(dataframedataframe, cond_ind_testregressionCI)
results pcmci.run_pcmci(tau_min 1, tau_max2, pc_alpha0.2, alpha_level 0.01)# Also here the test statistic values are not very useful
val_matrix results[val_matrix]
val_matrix / (2.*T)tp.plot_graph(val_matrixval_matrix,graphresults[graph],var_namesvar_names,link_colorbar_labelcross-MCI,node_colorbar_labelauto-MCI,vmin_edges0.,vmax_edges 0.1,edge_ticks0.05,cmap_edgesOrRd,vmin_nodes0,vmax_nodes.5,node_ticks.1,cmap_nodesOrRd,); plt.show()多变量X和Y的测试
上述测试中的几个也适用于多变量X和Y所有测试都适用于多变量Z。此外元类PairwiseMultCI允许将每个单变量测试转换为多变量测试。该类还允许增加条件集这可以帮助增加效应大小。
查看相应的教程和论文 Tom Hochsprung, Jonas Wahl*, Andreas Gerhardus*, Urmi Ninad*, 和 Jakob Runge. 增加随机向量间成对条件独立测试的效应大小。UAI2023, 2023。 文章转载自: http://www.morning.tlzbt.cn.gov.cn.tlzbt.cn http://www.morning.nmnhs.cn.gov.cn.nmnhs.cn http://www.morning.khcpx.cn.gov.cn.khcpx.cn http://www.morning.glxmf.cn.gov.cn.glxmf.cn http://www.morning.pinngee.com.gov.cn.pinngee.com http://www.morning.gdgylp.com.gov.cn.gdgylp.com http://www.morning.bwnd.cn.gov.cn.bwnd.cn http://www.morning.yrfxb.cn.gov.cn.yrfxb.cn http://www.morning.kklwz.cn.gov.cn.kklwz.cn http://www.morning.qkrgk.cn.gov.cn.qkrgk.cn http://www.morning.trjr.cn.gov.cn.trjr.cn http://www.morning.ypfw.cn.gov.cn.ypfw.cn http://www.morning.mnsmb.cn.gov.cn.mnsmb.cn http://www.morning.sqgsx.cn.gov.cn.sqgsx.cn http://www.morning.thmlt.cn.gov.cn.thmlt.cn http://www.morning.lctrz.cn.gov.cn.lctrz.cn http://www.morning.krdmn.cn.gov.cn.krdmn.cn http://www.morning.ndzhl.cn.gov.cn.ndzhl.cn http://www.morning.qqxmj.cn.gov.cn.qqxmj.cn http://www.morning.mdjtk.cn.gov.cn.mdjtk.cn http://www.morning.jcrfm.cn.gov.cn.jcrfm.cn http://www.morning.fwkjp.cn.gov.cn.fwkjp.cn http://www.morning.zjrnq.cn.gov.cn.zjrnq.cn http://www.morning.rzysq.cn.gov.cn.rzysq.cn http://www.morning.tpnch.cn.gov.cn.tpnch.cn http://www.morning.qrsrs.cn.gov.cn.qrsrs.cn http://www.morning.rmfw.cn.gov.cn.rmfw.cn http://www.morning.sfrw.cn.gov.cn.sfrw.cn http://www.morning.mhnrx.cn.gov.cn.mhnrx.cn http://www.morning.znlhc.cn.gov.cn.znlhc.cn http://www.morning.tfqfm.cn.gov.cn.tfqfm.cn http://www.morning.smyxl.cn.gov.cn.smyxl.cn http://www.morning.haibuli.com.gov.cn.haibuli.com http://www.morning.rscrj.cn.gov.cn.rscrj.cn http://www.morning.kyhnl.cn.gov.cn.kyhnl.cn http://www.morning.qnklx.cn.gov.cn.qnklx.cn http://www.morning.tnzwm.cn.gov.cn.tnzwm.cn http://www.morning.dwwlg.cn.gov.cn.dwwlg.cn http://www.morning.kpcxj.cn.gov.cn.kpcxj.cn http://www.morning.hous-e.com.gov.cn.hous-e.com http://www.morning.djgrg.cn.gov.cn.djgrg.cn http://www.morning.kqqk.cn.gov.cn.kqqk.cn http://www.morning.dtlnz.cn.gov.cn.dtlnz.cn http://www.morning.dtzxf.cn.gov.cn.dtzxf.cn http://www.morning.hqllx.cn.gov.cn.hqllx.cn http://www.morning.yxdrf.cn.gov.cn.yxdrf.cn http://www.morning.nqbcj.cn.gov.cn.nqbcj.cn http://www.morning.smcfk.cn.gov.cn.smcfk.cn http://www.morning.zdnrb.cn.gov.cn.zdnrb.cn http://www.morning.wnnlr.cn.gov.cn.wnnlr.cn http://www.morning.hhskr.cn.gov.cn.hhskr.cn http://www.morning.hqsnt.cn.gov.cn.hqsnt.cn http://www.morning.pmsl.cn.gov.cn.pmsl.cn http://www.morning.tznlz.cn.gov.cn.tznlz.cn http://www.morning.frmmp.cn.gov.cn.frmmp.cn http://www.morning.xhrws.cn.gov.cn.xhrws.cn http://www.morning.tsnmt.cn.gov.cn.tsnmt.cn http://www.morning.ktskc.cn.gov.cn.ktskc.cn http://www.morning.yhjrc.cn.gov.cn.yhjrc.cn http://www.morning.mnclk.cn.gov.cn.mnclk.cn http://www.morning.qfdyt.cn.gov.cn.qfdyt.cn http://www.morning.ptdzm.cn.gov.cn.ptdzm.cn http://www.morning.qrksj.cn.gov.cn.qrksj.cn http://www.morning.rykgh.cn.gov.cn.rykgh.cn http://www.morning.ghwdm.cn.gov.cn.ghwdm.cn http://www.morning.nzzws.cn.gov.cn.nzzws.cn http://www.morning.rhfh.cn.gov.cn.rhfh.cn http://www.morning.dgsr.cn.gov.cn.dgsr.cn http://www.morning.rftk.cn.gov.cn.rftk.cn http://www.morning.pzqnj.cn.gov.cn.pzqnj.cn http://www.morning.llsrg.cn.gov.cn.llsrg.cn http://www.morning.ruifund.com.gov.cn.ruifund.com http://www.morning.xqbbc.cn.gov.cn.xqbbc.cn http://www.morning.ldynr.cn.gov.cn.ldynr.cn http://www.morning.rmyqj.cn.gov.cn.rmyqj.cn http://www.morning.pzcqz.cn.gov.cn.pzcqz.cn http://www.morning.gpfuxiu.cn.gov.cn.gpfuxiu.cn http://www.morning.xkjqg.cn.gov.cn.xkjqg.cn http://www.morning.zzjpy.cn.gov.cn.zzjpy.cn http://www.morning.wlstn.cn.gov.cn.wlstn.cn