Causality 基本使用教程

%reload_ext autoreload
%autoreload 2
%matplotlib inline

导入基本库

import os, sys
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from pathlib import Path
Path.ls = lambda x: list(x.iterdir())
from tqdm import tqdm

添加causality源码路径

sys.path.append('../../srcs')

基本函数测试

from mibebin.basic import MI, TE, CMI
x = np.random.randint(10,size=1000)
y = np.random.randint(10,size=1000)
z = np.random.randint(100,size=(3,1000))
MI(x,y,bins=10)
0.07459715403009781
CMI(x,y,z,bins=10)
0.6319964745340467

非线性

from mibebin.data import generate_nonlinear
from mibebin.data import generate_triangle

from mibebin.calculator_TE import Cal_TE
from mibebin.calculator_MI import Cal_MI
from mibebin.calculator_Cor import Cal_Cor
data1 = generate_nonlinear()
data2 = generate_triangle(length=3600,noise_std1=0.1, noise_std2=0.2,shift=3)

ex1_te = Cal_TE(data1,label_x='x',label_y='fx',taus=20,bins=10,k=0)
ex1_mi = Cal_MI(data1,label_x='x',label_y='fx',taus=20,bins=10,k=0)
ex2_te = Cal_TE(data2,label_x='sin',label_y='cos',taus=360,bins=10,k=0)
ex2_mi = Cal_MI(data2,label_x='sin',label_y='cos',taus=360,bins=10,k=0)
ex2_cor = Cal_Cor(data2,label_x='sin',label_y='cos',taus=360,bins=10,k=0)
ex1_te.fit()
  0%|          | 0/20 [00:00<?, ?it/s]
 90%|█████████ | 18/20 [00:00<00:00, 176.18it/s]
100%|██████████| 20/20 [00:00<00:00, 174.49it/s]

ex1_te.plot()
../_images/causality_15_0.png
data2.plot(figsize=(10,2))
<matplotlib.axes._subplots.AxesSubplot at 0x7f3e751a58d0>
../_images/causality_16_1.png
cal_sig = True
ex2_te.fit(cal_sig=cal_sig)
ex2_mi.fit(cal_sig=cal_sig)
ex2_cor.fit(cal_sig=cal_sig)
  0%|          | 0/360 [00:00<?, ?it/s]
  9%|▉         | 34/360 [00:00<00:00, 333.96it/s]
 19%|█▉        | 68/360 [00:00<00:00, 333.02it/s]
 28%|██▊       | 102/360 [00:00<00:00, 333.43it/s]
 38%|███▊      | 136/360 [00:00<00:00, 334.12it/s]
 47%|████▋     | 170/360 [00:00<00:00, 334.76it/s]
 57%|█████▋    | 204/360 [00:00<00:00, 335.32it/s]
 66%|██████▌   | 238/360 [00:00<00:00, 334.05it/s]
 75%|███████▌  | 271/360 [00:00<00:00, 331.14it/s]
 84%|████████▍ | 304/360 [00:00<00:00, 330.57it/s]
 94%|█████████▍| 338/360 [00:01<00:00, 332.09it/s]
100%|██████████| 360/360 [00:01<00:00, 332.82it/s]
  0%|          | 0/10 [00:00<?, ?it/s]
 10%|█         | 1/10 [00:01<00:10,  1.13s/it]
 20%|██        | 2/10 [00:02<00:09,  1.13s/it]
 30%|███       | 3/10 [00:03<00:07,  1.12s/it]
 40%|████      | 4/10 [00:04<00:06,  1.12s/it]
 50%|█████     | 5/10 [00:05<00:05,  1.11s/it]
 60%|██████    | 6/10 [00:06<00:04,  1.11s/it]
 70%|███████   | 7/10 [00:07<00:03,  1.11s/it]
 80%|████████  | 8/10 [00:08<00:02,  1.11s/it]
 90%|█████████ | 9/10 [00:09<00:01,  1.11s/it]
100%|██████████| 10/10 [00:11<00:00,  1.10s/it]
100%|██████████| 10/10 [00:11<00:00,  1.11s/it]
  0%|          | 0/360 [00:00<?, ?it/s]
 18%|█▊        | 63/360 [00:00<00:00, 627.32it/s]
 35%|███▍      | 125/360 [00:00<00:00, 624.67it/s]
 52%|█████▏    | 188/360 [00:00<00:00, 623.94it/s]
 70%|██████▉   | 251/360 [00:00<00:00, 624.50it/s]
 87%|████████▋ | 314/360 [00:00<00:00, 625.10it/s]
100%|██████████| 360/360 [00:00<00:00, 623.53it/s]
  0%|          | 0/10 [00:00<?, ?it/s]
 10%|█         | 1/10 [00:00<00:05,  1.66it/s]
 20%|██        | 2/10 [00:01<00:04,  1.65it/s]
 30%|███       | 3/10 [00:01<00:04,  1.65it/s]
 40%|████      | 4/10 [00:02<00:03,  1.64it/s]
 50%|█████     | 5/10 [00:03<00:03,  1.65it/s]
 60%|██████    | 6/10 [00:03<00:02,  1.65it/s]
 70%|███████   | 7/10 [00:04<00:01,  1.65it/s]
 80%|████████  | 8/10 [00:04<00:01,  1.64it/s]
 90%|█████████ | 9/10 [00:05<00:00,  1.64it/s]
100%|██████████| 10/10 [00:06<00:00,  1.64it/s]
100%|██████████| 10/10 [00:06<00:00,  1.64it/s]
  0%|          | 0/360 [00:00<?, ?it/s]
100%|██████████| 360/360 [00:00<00:00, 5105.16it/s]
  0%|          | 0/10 [00:00<?, ?it/s]
 20%|██        | 2/10 [00:00<00:00, 14.41it/s]
 40%|████      | 4/10 [00:00<00:00, 14.41it/s]
 60%|██████    | 6/10 [00:00<00:00, 14.45it/s]
 80%|████████  | 8/10 [00:00<00:00, 14.41it/s]
100%|██████████| 10/10 [00:00<00:00, 14.39it/s]
100%|██████████| 10/10 [00:00<00:00, 14.38it/s]

ex2_te.plot(figsize=(10,2))
ex2_mi.plot(figsize=(10,2))
ex2_cor.plot(figsize=(10,2))
../_images/causality_18_0.png ../_images/causality_18_1.png ../_images/causality_18_2.png

这里没有添加pvalue值检验,需要进一步测试