文章标题
Conditional independence testing based on a nearest-neighbor estimator of conditional mutual information(Runge,2018,Google schorlar citation 106)
研究背景
条件独立性检测是因果结构(因果图)发现的前提,需要处理连续和离散变量,线性和非线性关系等多种场景进行处理。传统的Partial correlation仅针对线性依赖关系和Gassian error进行测试,基于kernel matrix的条件独立性检测计算量大同时对kernel函数的选择依赖性高。
研究目标
利用对变量间线性还是非线性不敏感的条件互信息检验变量之间的条件独立性,从而支持因果结构发现。本文侧重研究基于最近邻方法来实现条件互信息的计算和空分布的估计,从而执行条件独立性检测,因果结构发现是本文条件独立性检测的一个应用场景。
应用特色
可应用于时间序列数据的因果结构发现。
解决方案
算法
Step1:进行各变量父亲变量集合的初步筛选
参数
pc-alpha
Step2:算法
个人理解,这里条件依赖两个变量的父亲节点,只是为了双重剔除有错误的父亲节点。依据Markov assumption,条件依赖一个节点的父亲节点,则这个节点和其他非子孙节点就是独立的,所以both 依赖两个节点的父亲节点,假设两者之间没有直接联系,那两者一定是独立的。而这里的p-value是通过类似机器学习的方式,or AIC等方式实现的。
参数
估算条件互信息
使用k近邻估计方法。
k-cmi参数
估计空分布和P-value
null distribution estimation
通过permutation based method来估计H0的distribution,permutation产生1000个样本,计算每个样本的CMI估计分布。
k-permutation 参数
实验
环境安装
安装jupyter
https://github.com/jakobrunge/tigramite/blob/master/tutorials/tigramite_tutorial_basics.ipynb
如果发现无法通过jupyter notebook打开notebook,可能因为你没有在当前虚拟环境中安装jupyter
pip install jupyter
conda install -n your_virtual_env ipykernel# 若发现jupyter notebook中无自定义虚拟环境
python -m ipykernel install --user --name your_env --display-name "your_name"# 安装内核
安装tigramite
- 通过Git下载程序
- 安装指定的package,在Anoconda的终端环境下进入到你下载的tigramite文件目录下。通过在终端输入D: 进入到你想要进入的硬盘,然后通过cd操作进入到目标文件目录。
+ python setup.py install
打开tigramite自带的tutorial
通过在目标conda虚拟环境下使用jupyter notebook命令可以打开特定的notebook
jupyter notebook D:\code\JupyterNotes\tigramite_tutorials\tigramite_tutorial_basics.ipynb
模拟数据
采用一个函数