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()

data2.plot(figsize=(10,2))
<matplotlib.axes._subplots.AxesSubplot at 0x7f3e751a58d0>

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))



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