基于循环模型的统计因果关系发现
cyclicmodel的Python项目详细描述
周期模型
基于循环模型的统计因果发现。
这个项目正在开发中。
摘要
执行统计因果发现的python包 在下列条件下:
- 有一些未观察到的共同因素 存在双向因果关系
cyclicmodel
是基于
^{
示例
importnumpyasnpimportpymc3aspmimportcyclicmodelascym# Generate synthetic data,# which assumes causal relation from x1 to x2n=200x1=np.random.randn(n)x2=x1+np.random.uniform(low=-0.5,high=0.5,size=n)xs=np.vstack([x1,x2]).T# Model settingshyper_params=cym.define_model.CyclicModelParams(dist_std_noise='log_normal',df_indvdl=8.0,dist_l_cov_21='uniform, -0.9, 0.9',dist_scale_indvdl='uniform, 0.1, 1.0',dist_beta_noise='uniform, 0.5, 6.0')# Generate PyMC3 modelmodel=cym.define_model.get_pm3_model(xs,hyper_params,verbose=10)# Run variational inference with PyMC3withmodel:fit=pm.FullRankADVI().fit(n=100000)trace=fit.sample(1000,include_transformed=True)# Check the posterior mean of the coefficientsprint(np.mean(trace['b_21']))# from x1 to x2print(np.mean(trace['b_12']))# from x2 to x1
安装
pip install cyclicmodel
参考文献
- LiNGAM - Discovery of non-gaussian linear causal models
- Shimizu, S., & Bollen, K. (2014). Bayesian estimation of causal direction in acyclic structural equation models with individual-specific confounder variables and non-Gaussian distributions. Journal of Machine Learning Research, 15(1), 2629-2652.