Skip to contents

What is Part Mutual Information?

Part Mutual Information (PMI) quantifies the direct association between two variables XX and YY after removing the influence of a set of conditioning variables ZZ:

PMI(X;Y|Z)=x,y,zP(x,y,z)logP(x,y|z)P(x|z)P(y|z) PMI(X; Y | Z) = \sum_{x,y,z} P(x,y,z) \log \frac{P(x,y|z)}{P(x|z)P(y|z)}

This is mathematically equivalent to Conditional Mutual Information (CMI), but applied specifically to the problem of direct association network inference.

Why not just use correlation?

Consider three genes A, B, C where A regulates B and B regulates C. Standard correlation or mutual information will show a false positive association between A and C (indirect edge). PMI conditioning on B correctly identifies no direct A-C link.

Installation

remotes::install_github("danymukesha/PartMI")

Basic Usage

Mutual Information

library(PartMI)
set.seed(42)

# Independent variables
x <- rnorm(200)
y <- rnorm(200)
mi(x, y)  # near zero
#> [1] 0.2549785

# Dependent variables
y_dep <- x + rnorm(200, 0, 0.3)
mi(x, y_dep)  # positive value
#> [1] 1.113316

Part Mutual Information

# Common cause scenario
z <- rnorm(200)
x <- 0.7 * z + rnorm(200, 0, 0.5)
y <- 0.7 * z + rnorm(200, 0, 0.5)

# MI shows spurious association
mi_xy <- mi(x, y)
mi_xy
#> [1] 0.3968508

# PMI removes the common cause
pmi_xy <- pmi(x, y, z)
pmi_xy
#>         1 
#> 0.1104176

Network Inference

# Simulate a small regulatory network
n_obs <- 100
TF1  <- rnorm(n_obs)
TF2  <- rnorm(n_obs)
Gene1 <- 0.8 * TF1 + rnorm(n_obs, 0, 0.4)
Gene2 <- 0.6 * TF2 + rnorm(n_obs, 0, 0.4)
Gene3 <- 0.5 * Gene1 + 0.3 * TF2 + rnorm(n_obs, 0, 0.3)
Noise <- rnorm(n_obs)

dat <- data.frame(TF1, TF2, Gene1, Gene2, Gene3, Noise)

net <- pmi_network(dat, n_permutations = 50, threshold = 0.05)
#> Computing PMI for 6 variables...
#>   Pair 1/15 (7%)
#>   Pair 2/15 (13%)
#>   Pair 3/15 (20%)
#>   Pair 4/15 (27%)
#>   Pair 5/15 (33%)
#>   Pair 6/15 (40%)
#>   Pair 7/15 (47%)
#>   Pair 8/15 (53%)
#>   Pair 9/15 (60%)
#>   Pair 10/15 (67%)
#>   Pair 11/15 (73%)
#>   Pair 12/15 (80%)
#>   Pair 13/15 (87%)
#>   Pair 14/15 (93%)
#>   Pair 15/15 (100%)
#> Found 2 edges at threshold 0.050 (fdr corrected).

# View the adjacency matrix
print(net$adjacency)
#>       TF1 TF2 Gene1 Gene2 Gene3 Noise
#> TF1     0   0     1     0     0     0
#> TF2     0   0     0     1     0     0
#> Gene1   1   0     0     0     0     0
#> Gene2   0   1     0     0     0     0
#> Gene3   0   0     0     0     0     0
#> Noise   0   0     0     0     0     0

# Summary
print(net)
#> PMI Network
#>   Method:            binning 
#>   Threshold:         0.05 
#>   Adjusted p-value:  fdr 
#>   Permutations:      50 
#>   Nodes:             6 
#>   Edges:             2 
#>   Density:           0.1333

Estimation Methods

Binning (default)

Fast histogram-based estimator. Good for exploratory analysis. Control granularity with the bins parameter.

pmi(x, y, z, method = "binning", bins = 10)
#>         1 
#> 0.7071182

k-Nearest Neighbor (kNN)

More accurate, especially for higher-dimensional Z. Based on the Frenzel-Pompe estimator. Control bias-variance tradeoff with k.

pmi(x, y, z, method = "knn", k = 5)
#> [1] 0.02378367

Preprocessing

normalize_data(dat, method = "zscore")
#>                TF1          TF2       Gene1        Gene2       Gene3
#>   [1,] -0.84931994 -1.136394497 -0.32031614 -1.193931783 -0.82324474
#>   [2,] -0.04359688 -0.558695441 -0.79934295 -0.500681304 -0.02610482
#>   [3,]  0.25138072  1.356782011  0.21712980  0.476250890  0.99300689
#>   [4,]  0.30937384  0.720383093  0.11268060  0.999437460  0.17161246
#>   [5,]  0.82059399  0.013880418  0.66952169 -0.431990690  0.59805492
#>   [6,]  0.87906561  0.043604818  1.26054427  0.217062847  1.61043571
#>   [7,] -2.58016101  0.990093593 -2.74857589  1.224400388 -1.55264930
#>   [8,]  1.69660354 -0.082452169  1.36103488 -0.718361220  0.52964185
#>   [9,]  0.38790319  0.244958658  1.48242521  0.745724243  1.69696655
#>  [10,] -0.66808007 -1.640944116 -1.20523913 -2.406641447 -0.80284384
#>  [11,] -1.22805129  2.106910222 -1.30984615  1.714412689 -0.61230773
#>  [12,]  0.84992448  1.002222473  0.73314029  1.587431688  1.14992916
#>  [13,]  0.25630525  1.074900845  0.32986649  1.114638150  0.62212241
#>  [14,]  1.02794360 -1.925326743  0.66855764 -0.953120768 -0.14940888
#>  [15,] -0.14331567  0.139982736 -0.21912575 -0.203390355  0.02314486
#>  [16,] -0.33180602 -0.285323448  0.21544165 -0.054605467 -0.10718916
#>  [17,]  2.22484934 -1.345530653  1.85206556 -0.409520928  0.80752351
#>  [18,] -2.17601004  0.959990132 -1.73594130 -0.012104047 -1.50571190
#>  [19,]  0.32093660  1.515270605  0.46027814  1.693506309  0.18600748
#>  [20,]  0.31465941 -0.443447839  0.47144953 -1.116366669  0.35142013
#>  [21,]  0.37009667 -0.088346725  0.55680833 -0.345712239  0.26660622
#>  [22,]  0.49298910  2.038366096  0.46891107  2.983137247  1.00831087
#>  [23,] -0.36564276 -1.645166634 -0.60556597 -0.964564809 -2.03589195
#>  [24,]  1.11868707  0.978390329  0.95631763  0.685113272  0.69605654
#>  [25,] -2.60636576 -0.181311085 -2.64218107  0.399407263 -1.97508347
#>  [26,] -0.91007390  0.036450830 -0.71876165 -0.110753001 -0.84504214
#>  [27,] -0.20384243 -0.506734570 -0.30726374 -0.043363712 -0.52185216
#>  [28,]  0.08666713  1.364658539  0.04360128  0.836841006  0.66312932
#>  [29,]  0.33695084 -1.072418035 -0.17471746 -2.113410561 -0.77133750
#>  [30,]  0.57653156  1.217717124  0.39147013  1.176680188  0.86535793
#>  [31,] -1.63331206  1.704126344 -1.86242744  1.001154664 -0.82684734
#>  [32,] -0.07336746 -1.636226051 -0.22074290 -1.556130090 -1.12802206
#>  [33,]  0.45803578 -1.072129361  0.64751735 -0.811442444 -0.24685817
#>  [34,]  1.28335376  0.811077230  1.22965728  1.349712179  1.38081122
#>  [35,] -0.19810467 -0.885178430  0.24818160 -0.509290817  0.05306563
#>  [36,]  1.56404061 -0.595013402  1.58003069  0.011346076  1.82028074
#>  [37,] -0.37091228 -0.325233973 -0.24757411  0.097729301 -0.89910035
#>  [38,] -0.13259761 -0.214694630  0.34858361 -0.109844170 -0.30379469
#>  [39,]  0.08357838  0.933982612  0.61964464  1.072036936  1.00620725
#>  [40,] -0.59813843 -0.498002002 -1.11031984 -0.456218561 -0.35751041
#>  [41,]  0.65534019  0.260734048  0.97828001 -0.496204165  1.24378284
#>  [42,] -1.46588542  0.971019310 -0.89363416  0.921506046 -0.56171406
#>  [43,] -0.08706587 -1.525246687  0.36276786 -2.412720297 -0.83792162
#>  [44,] -0.63740175 -0.592933876 -0.92732626 -0.995803947 -0.24171564
#>  [45,] -0.64412142  1.105043572  0.53246305  0.798048769  1.43677764
#>  [46,]  1.10341603 -0.249801557 -0.17702661 -0.281134558 -0.25869645
#>  [47,]  1.00132672 -2.615318283  0.88431348 -2.211088242  0.17474355
#>  [48,]  1.56288526 -0.777234830  1.41565780 -0.045278670  0.53409097
#>  [49,] -0.35266926  1.057080338 -0.34750611  0.204445706 -0.30401433
#>  [50,] -0.04792358 -0.304671123  0.31066409 -1.676123063 -0.06243646
#>  [51,] -1.67762058 -0.280614392 -1.36431007  0.214969322 -1.17026909
#>  [52,] -0.48064151  0.003072240 -0.73496201  0.023463510 -1.37119126
#>  [53,]  1.73380103  0.951262574  2.13311065  0.654886025  1.69842857
#>  [54,] -0.50980793 -0.375357101 -0.54614395 -0.503142613 -0.86721824
#>  [55,] -1.28125802  0.684408243 -0.80899024 -0.417722002 -0.17685715
#>  [56,] -0.03815582  0.790922097 -0.30573124  0.067926120 -0.25418360
#>  [57,]  1.20120268 -0.953725934  0.58472562 -0.444106290  0.10274278
#>  [58,] -1.70477012  0.095012881 -1.71003384  0.078400559 -1.04091018
#>  [59,] -0.34240503 -0.427098142 -0.73940973 -1.109318600 -0.96031145
#>  [60,]  0.40007244  0.619747531  0.60048328  0.794437217  0.53828003
#>  [61,]  1.95334098 -1.490066033  1.01315214 -0.695271717  1.06183370
#>  [62,] -0.71463128  1.849555478 -1.02442549  1.318949827  0.66021088
#>  [63,]  1.48201183  1.637885144  1.30606413  1.224323440  2.21360697
#>  [64,] -0.52664775 -0.760847712 -1.18860149  0.199165320 -1.26114289
#>  [65,] -1.14203175 -0.571281501 -1.18222316 -0.217362934 -1.59473609
#>  [66,] -1.24833020 -0.832771841 -1.18516875  0.040400297 -1.05007752
#>  [67,] -0.30873833  0.013185615  0.35095348 -0.018661933  0.15560117
#>  [68,] -0.10432101 -0.386258005 -0.18188865  0.520915990  1.25156967
#>  [69,] -0.41348003  0.286254830 -0.56475146  0.170700983 -1.30451530
#>  [70,]  1.00133030 -1.892187518  0.58831832 -0.926506821 -0.61361108
#>  [71,]  0.11375178  0.336564567  0.31668428  0.060209121  0.93027449
#>  [72,] -0.19014117  0.179871883 -0.28293119 -0.462196749 -1.22913596
#>  [73,] -0.70120330 -1.591244700 -0.82086809 -0.652928038 -1.50390486
#>  [74,] -1.41467767  0.465249234 -1.31685601  1.614636860 -0.70091648
#>  [75,] -2.09713116  0.223038377 -1.30877905 -0.015108768 -1.05654790
#>  [76,]  0.13831124 -0.089862514  0.83278499  0.738919979 -0.01447452
#>  [77,] -0.05519239  0.148333729 -0.31002463 -0.022439233 -0.33993279
#>  [78,]  1.32315757  0.584673460  1.16669960  0.947463394  1.56644385
#>  [79,]  0.21823518  0.542783101  0.06564612 -0.139630348 -0.47946830
#>  [80,]  0.73896553 -0.310176638  1.47647223 -0.085920067  1.43924076
#>  [81,] -0.03909022  1.423268866  0.24884851  0.649862040  1.07932353
#>  [82,] -0.92319987  0.122782407 -1.55785322 -0.657127266 -1.74885960
#>  [83,]  0.21674007  0.013995708  0.01580490  0.368278442 -0.81067935
#>  [84,]  0.26833374  1.198000742 -0.76091920  1.789347963 -0.13746658
#>  [85,] -0.92224167  1.249970784 -0.81153109  0.505257707 -0.03355681
#>  [86,] -0.11083844 -0.605029559  0.23724372 -0.948470744  0.33488705
#>  [87,]  1.97726367 -0.923259607  1.32418062 -1.292927456  0.39377161
#>  [88,] -1.24311550 -0.610452276 -1.61252417 -0.717638379 -1.32656946
#>  [89,]  1.43340542 -1.125686652  1.80702700 -0.486674377  1.26627028
#>  [90,] -0.31488144 -1.789152650 -0.67504250 -0.962093177 -0.81840863
#>  [91,]  1.44382982  0.503204254  1.66225438  0.620758920  1.64158455
#>  [92,] -0.94864266  0.003794272 -0.69857149  0.418272851 -0.46684950
#>  [93,] -0.14936513  0.866971555  0.28237432  0.392351319  0.61754715
#>  [94,]  0.23895609  0.160998681  0.66950193  0.022552868  0.97279466
#>  [95,] -0.19709896  0.611208729  0.35574545  0.834273119  0.89672216
#>  [96,]  0.59649024 -0.380800747  1.07965367 -0.446749107  0.44133994
#>  [97,] -0.25293647 -0.889341485 -0.06525088 -1.206116531 -0.38220963
#>  [98,]  1.16250145  1.015553039  1.09555367  0.003099755  1.86484919
#>  [99,]  0.09407821  0.996910437 -0.31979143  2.237806791  0.75755381
#> [100,]  0.63114305 -1.737115265  0.02872899 -2.253741881 -1.30266004
#>              Noise
#>   [1,]  1.56315727
#>   [2,]  0.02734548
#>   [3,] -1.46227035
#>   [4,]  1.40725365
#>   [5,]  0.19786369
#>   [6,]  1.08145131
#>   [7,]  2.05463003
#>   [8,]  1.19440698
#>   [9,] -0.24069859
#>  [10,] -0.02177810
#>  [11,] -0.87496206
#>  [12,] -0.70934858
#>  [13,]  0.60339011
#>  [14,] -0.18632041
#>  [15,]  0.77230705
#>  [16,]  0.94666088
#>  [17,]  0.47717827
#>  [18,] -0.28580225
#>  [19,] -1.38634380
#>  [20,]  0.22805860
#>  [21,] -0.92570421
#>  [22,]  0.76001699
#>  [23,]  0.88702861
#>  [24,]  0.42967490
#>  [25,] -0.92600076
#>  [26,] -0.64270159
#>  [27,] -0.37876710
#>  [28,]  0.26069345
#>  [29,]  2.47249743
#>  [30,] -0.80842238
#>  [31,] -2.04601518
#>  [32,] -0.00723842
#>  [33,] -0.72690482
#>  [34,] -2.06162513
#>  [35,] -0.76200857
#>  [36,] -0.26070727
#>  [37,] -0.99015893
#>  [38,]  0.82977767
#>  [39,]  1.02197767
#>  [40,] -0.21187728
#>  [41,] -1.36998105
#>  [42,]  0.70815000
#>  [43,] -0.74255305
#>  [44,] -0.71756736
#>  [45,]  0.26257667
#>  [46,] -0.86396310
#>  [47,] -0.18172210
#>  [48,] -0.65855733
#>  [49,]  0.50603168
#>  [50,] -0.73397447
#>  [51,] -0.73142559
#>  [52,] -0.84968920
#>  [53,]  0.12436162
#>  [54,]  1.32963779
#>  [55,] -0.77659577
#>  [56,]  0.33165002
#>  [57,] -0.54356805
#>  [58,] -0.97646142
#>  [59,]  1.20567812
#>  [60,] -0.45657900
#>  [61,]  1.73596313
#>  [62,] -0.57447481
#>  [63,]  0.77104742
#>  [64,]  1.22526181
#>  [65,]  2.25646833
#>  [66,] -0.71862284
#>  [67,]  0.18979257
#>  [68,]  1.05019405
#>  [69,] -0.38894112
#>  [70,]  0.70883311
#>  [71,] -0.31784436
#>  [72,] -1.02133589
#>  [73,] -2.12643082
#>  [74,]  0.62852748
#>  [75,] -0.22899882
#>  [76,]  1.83314144
#>  [77,] -1.00435535
#>  [78,] -0.37573895
#>  [79,]  0.92155494
#>  [80,] -0.14800792
#>  [81,]  0.60191742
#>  [82,]  1.46763029
#>  [83,]  2.29260448
#>  [84,]  0.16474521
#>  [85,] -0.72575462
#>  [86,] -0.97255612
#>  [87,] -0.43385849
#>  [88,] -0.31369816
#>  [89,] -1.09908321
#>  [90,]  0.71177600
#>  [91,]  1.53882358
#>  [92,] -0.33050629
#>  [93,] -0.92822394
#>  [94,] -1.16205467
#>  [95,]  0.88433174
#>  [96,]  0.14485800
#>  [97,] -1.79373395
#>  [98,] -0.01059738
#>  [99,]  0.11362808
#> [100,] -0.73144402
#> attr(,"scaled:center")
#>         TF1         TF2       Gene1       Gene2       Gene3       Noise 
#>  0.07898012 -0.14857268  0.04375738 -0.08642766  0.05953767 -0.11316990 
#> attr(,"scaled:scale")
#>       TF1       TF2     Gene1     Gene2     Gene3     Noise 
#> 0.9719501 0.9125126 0.9055200 0.7248770 0.6432527 0.9988576
normalize_data(dat, method = "rank")
#>                TF1         TF2       Gene1       Gene2       Gene3       Noise
#>   [1,] -0.89647336 -1.15034938 -0.42614801 -1.31057911 -0.69030882  1.51410189
#>   [2,]  0.01253347 -0.56805150 -0.75541503 -0.62800601  0.03760829  0.13830421
#>   [3,]  0.29237490  1.37220381  0.06270678  0.51007346  0.85961736 -1.69539771
#>   [4,]  0.37185609  0.59776013  0.01253347  1.01522203  0.18911843  1.31057911
#>   [5,]  0.78919165  0.01253347  0.75541503 -0.42614801  0.48172685  0.29237490
#>   [6,]  0.85961736  0.08784484  1.20035886  0.37185609  1.51410189  1.05812162
#>   [7,] -2.17009038  0.89647336 -2.57582930  1.31057911 -1.69539771  1.81191067
#>   [8,]  1.69539771 -0.08784484  1.37220381 -0.85961736  0.39885507  1.10306256
#>   [9,]  0.51007346  0.29237490  1.59819314  0.75541503  1.69539771 -0.08784484
#>  [10,] -0.78919165 -1.51410189 -1.20035886 -2.17009038 -0.59776013  0.06270678
#>  [11,] -1.15034938  2.57582930 -1.31057911  1.81191067 -0.48172685 -0.93458929
#>  [12,]  0.82389363  0.97411388  0.78919165  1.51410189  1.05812162 -0.48172685
#>  [13,]  0.31863936  1.10306256  0.24042603  1.15034938  0.53883603  0.53883603
#>  [14,]  0.97411388 -2.17009038  0.69030882 -1.01522203 -0.08784484 -0.01253347
#>  [15,] -0.18911843  0.16365849 -0.21470157 -0.26631061  0.08784484  0.75541503
#>  [16,] -0.42614801 -0.26631061  0.03760829 -0.13830421 -0.03760829  0.93458929
#>  [17,]  2.57582930 -1.20035886  2.17009038 -0.37185609  0.69030882  0.45376219
#>  [18,] -1.95996398  0.78919165 -1.81191067  0.01253347 -1.59819314 -0.13830421
#>  [19,]  0.42614801  1.59819314  0.39885507  1.69539771  0.24042603 -1.59819314
#>  [20,]  0.39885507 -0.48172685  0.45376219 -1.25356544  0.31863936  0.31863936
#>  [21,]  0.48172685 -0.11303854  0.51007346 -0.34512553  0.26631061 -0.97411388
#>  [22,]  0.59776013  2.17009038  0.42614801  2.57582930  0.93458929  0.69030882
#>  [23,] -0.51007346 -1.59819314 -0.53883603 -1.10306256 -2.57582930  0.85961736
#>  [24,]  1.05812162  0.85961736  0.89647336  0.69030882  0.62800601  0.42614801
#>  [25,] -2.57582930 -0.16365849 -2.17009038  0.45376219 -2.17009038 -1.01522203
#>  [26,] -0.93458929  0.06270678 -0.62800601 -0.21470157 -0.78919165 -0.42614801
#>  [27,] -0.31863936 -0.53883603 -0.34512553 -0.08784484 -0.42614801 -0.26631061
#>  [28,]  0.11303854  1.43953147 -0.03760829  0.89647336  0.59776013  0.34512553
#>  [29,]  0.45376219 -1.05812162 -0.13830421 -1.69539771 -0.56805150  2.57582930
#>  [30,]  0.62800601  1.25356544  0.37185609  1.20035886  0.72247905 -0.82389363
#>  [31,] -1.51410189  1.81191067 -1.95996398  1.05812162 -0.72247905 -1.95996398
#>  [32,] -0.06270678 -1.43953147 -0.24042603 -1.51410189 -1.05812162  0.11303854
#>  [33,]  0.56805150 -1.01522203  0.65883769 -0.89647336 -0.16365849 -0.59776013
#>  [34,]  1.20035886  0.65883769  1.15034938  1.43953147  1.25356544 -2.17009038
#>  [35,] -0.29237490 -0.85961736  0.11303854 -0.69030882  0.11303854 -0.75541503
#>  [36,]  1.59819314 -0.65883769  1.69539771  0.06270678  1.95996398 -0.11303854
#>  [37,] -0.53883603 -0.34512553 -0.26631061  0.24042603 -0.85961736 -1.20035886
#>  [38,] -0.16365849 -0.18911843  0.26631061 -0.18911843 -0.24042603  0.78919165
#>  [39,]  0.08784484  0.72247905  0.62800601  1.10306256  0.89647336  0.97411388
#>  [40,] -0.69030882 -0.51007346 -1.01522203 -0.51007346 -0.31863936 -0.03760829
#>  [41,]  0.72247905  0.31863936  0.93458929 -0.59776013  1.10306256 -1.51410189
#>  [42,] -1.43953147  0.82389363 -0.89647336  0.93458929 -0.45376219  0.59776013
#>  [43,] -0.08784484 -1.31057911  0.34512553 -2.57582930 -0.75541503 -0.72247905
#>  [44,] -0.72247905 -0.62800601 -0.93458929 -1.15034938 -0.13830421 -0.51007346
#>  [45,] -0.75541503  1.15034938  0.48172685  0.82389363  1.31057911  0.37185609
#>  [46,]  1.01522203 -0.21470157 -0.16365849 -0.31863936 -0.21470157 -0.89647336
#>  [47,]  0.89647336 -2.57582930  0.85961736 -1.81191067  0.21470157  0.01253347
#>  [48,]  1.51410189 -0.78919165  1.43953147 -0.11303854  0.42614801 -0.45376219
#>  [49,] -0.48172685  1.05812162 -0.45376219  0.31863936 -0.26631061  0.48172685
#>  [50,] -0.01253347 -0.29237490  0.18911843 -1.59819314 -0.01253347 -0.69030882
#>  [51,] -1.59819314 -0.24042603 -1.43953147  0.34512553 -1.10306256 -0.62800601
#>  [52,] -0.59776013 -0.06270678 -0.65883769  0.11303854 -1.43953147 -0.85961736
#>  [53,]  1.81191067  0.75541503  2.57582930  0.65883769  1.81191067  0.18911843
#>  [54,] -0.62800601 -0.37185609 -0.48172685 -0.65883769 -0.82389363  1.25356544
#>  [55,] -1.31057911  0.56805150 -0.78919165 -0.39885507 -0.11303854 -0.78919165
#>  [56,]  0.06270678  0.62800601 -0.31863936  0.18911843 -0.18911843  0.39885507
#>  [57,]  1.15034938 -0.97411388  0.53883603 -0.45376219  0.13830421 -0.37185609
#>  [58,] -1.69539771  0.11303854 -1.69539771  0.21470157 -0.93458929 -1.15034938
#>  [59,] -0.45376219 -0.45376219 -0.69030882 -1.20035886 -0.89647336  1.15034938
#>  [60,]  0.53883603  0.53883603  0.59776013  0.78919165  0.45376219 -0.34512553
#>  [61,]  1.95996398 -1.25356544  0.97411388 -0.78919165  0.97411388  1.59819314
#>  [62,] -0.85961736  1.95996398 -0.97411388  1.37220381  0.56805150 -0.39885507
#>  [63,]  1.43953147  1.69539771  1.25356544  1.25356544  2.57582930  0.72247905
#>  [64,] -0.65883769 -0.75541503 -1.15034938  0.29237490 -1.20035886  1.20035886
#>  [65,] -1.10306256 -0.59776013 -1.05812162 -0.29237490 -1.81191067  1.95996398
#>  [66,] -1.25356544 -0.82389363 -1.10306256  0.13830421 -0.97411388 -0.53883603
#>  [67,] -0.37185609 -0.01253347  0.29237490 -0.03760829  0.16365849  0.26631061
#>  [68,] -0.11303854 -0.42614801 -0.18911843  0.56805150  1.15034938  1.01522203
#>  [69,] -0.56805150  0.34512553 -0.51007346  0.26631061 -1.31057911 -0.29237490
#>  [70,]  0.93458929 -1.95996398  0.56805150 -0.93458929 -0.51007346  0.62800601
#>  [71,]  0.16365849  0.37185609  0.21470157  0.16365849  0.78919165 -0.18911843
#>  [72,] -0.24042603  0.24042603 -0.29237490 -0.53883603 -1.15034938 -1.31057911
#>  [73,] -0.82389363 -1.37220381 -0.85961736 -0.72247905 -1.51410189 -2.57582930
#>  [74,] -1.37220381  0.39885507 -1.37220381  1.59819314 -0.53883603  0.56805150
#>  [75,] -1.81191067  0.26631061 -1.25356544 -0.01253347 -1.01522203 -0.06270678
#>  [76,]  0.18911843 -0.13830421  0.82389363  0.72247905  0.06270678  1.69539771
#>  [77,] -0.03760829  0.18911843 -0.37185609 -0.06270678 -0.29237490 -1.25356544
#>  [78,]  1.25356544  0.48172685  1.10306256  0.97411388  1.43953147 -0.24042603
#>  [79,]  0.24042603  0.45376219 -0.01253347 -0.24042603 -0.39885507  0.89647336
#>  [80,]  0.75541503 -0.31863936  1.51410189 -0.16365849  1.37220381  0.03760829
#>  [81,]  0.03760829  1.51410189  0.13830421  0.62800601  1.01522203  0.51007346
#>  [82,] -1.01522203  0.13830421 -1.51410189 -0.75541503 -1.95996398  1.37220381
#>  [83,]  0.21470157  0.03760829 -0.08784484  0.39885507 -0.62800601  2.17009038
#>  [84,]  0.34512553  1.20035886 -0.72247905  1.95996398 -0.06270678  0.24042603
#>  [85,] -0.97411388  1.31057911 -0.82389363  0.53883603  0.01253347 -0.56805150
#>  [86,] -0.13830421 -0.69030882  0.08784484 -0.97411388  0.29237490 -1.10306256
#>  [87,]  2.17009038 -0.93458929  1.31057911 -1.43953147  0.34512553 -0.31863936
#>  [88,] -1.20035886 -0.72247905 -1.59819314 -0.82389363 -1.37220381 -0.16365849
#>  [89,]  1.31057911 -1.10306256  1.95996398 -0.56805150  1.20035886 -1.37220381
#>  [90,] -0.39885507 -1.81191067 -0.56805150 -1.05812162 -0.65883769  0.65883769
#>  [91,]  1.37220381  0.42614801  1.81191067  0.59776013  1.59819314  1.43953147
#>  [92,] -1.05812162 -0.03760829 -0.59776013  0.48172685 -0.37185609 -0.21470157
#>  [93,] -0.21470157  0.69030882  0.16365849  0.42614801  0.51007346 -1.05812162
#>  [94,]  0.26631061  0.21470157  0.72247905  0.08784484  0.82389363 -1.43953147
#>  [95,] -0.26631061  0.51007346  0.31863936  0.85961736  0.75541503  0.82389363
#>  [96,]  0.65883769 -0.39885507  1.01522203 -0.48172685  0.37185609  0.21470157
#>  [97,] -0.34512553 -0.89647336 -0.11303854 -1.37220381 -0.34512553 -1.81191067
#>  [98,]  1.10306256  1.01522203  1.05812162  0.03760829  2.17009038  0.08784484
#>  [99,]  0.13830421  0.93458929 -0.39885507  2.17009038  0.65883769  0.16365849
#> [100,]  0.69030882 -1.69539771 -0.06270678 -1.95996398 -1.25356544 -0.65883769
normalize_data(dat, method = "quantile")
#>                 TF1          TF2        Gene1        Gene2        Gene3
#>   [1,] -0.780170934 -0.993433779 -0.403617041 -1.118978070 -0.600127795
#>   [2,] -0.050907073 -0.543787947 -0.664420493 -0.578051614 -0.026402454
#>   [3,]  0.196197118  1.175964337  0.000676185  0.436126035  0.751930817
#>   [4,]  0.249986329  0.516374767 -0.050907073  0.879777414  0.111508884
#>   [5,]  0.695776365 -0.050907073  0.652574829 -0.403617041  0.400474778
#>   [6,]  0.751930817  0.031768099  1.034573635  0.249986329  1.289476445
#>   [7,] -1.982897049  0.791856106 -2.126178982  1.130731063 -1.491294064
#>   [8,]  1.426444748 -0.113235067  1.175964337 -0.726553456  0.320032715
#>   [9,]  0.436126035  0.196197118  1.339948390  0.652574829  1.426444748
#>  [10,] -0.680049950 -1.354208680 -1.049617333 -1.982897049 -0.564853257
#>  [11,] -0.993433779  1.984448844 -1.118978070  1.494509045 -0.472352167
#>  [12,]  0.731320234  0.842636160  0.695776365  1.289476445  0.903947117
#>  [13,]  0.207554427  0.961922133  0.144017206  0.990135220  0.447849328
#>  [14,]  0.842636160 -1.982897049  0.603212089 -0.890402193 -0.113235067
#>  [15,] -0.204402530  0.097555156 -0.219043093 -0.260555901  0.031768099
#>  [16,] -0.403617041 -0.260555901 -0.026402454 -0.165729598 -0.078451288
#>  [17,]  1.984448844 -1.049617333  1.734118843 -0.371554419  0.603212089
#>  [18,] -1.749383438  0.695776365 -1.638170985 -0.050907073 -1.387693847
#>  [19,]  0.347828969  1.339948390  0.320032715  1.426444748  0.144017206
#>  [20,]  0.320032715 -0.472352167  0.366035349 -1.095735908  0.207554427
#>  [21,]  0.400474778 -0.135664687  0.436126035 -0.323210652  0.178390203
#>  [22,]  0.516374767  1.734118843  0.347828969  1.984448844  0.810841683
#>  [23,] -0.488210899 -1.387693847 -0.506810200 -0.966617481 -2.126178982
#>  [24,]  0.903947117  0.751930817  0.791856106  0.603212089  0.550687576
#>  [25,] -2.126178982 -0.192489431 -1.982897049  0.366035349 -1.982897049
#>  [26,] -0.824629044  0.000676185 -0.578051614 -0.219043093 -0.680049950
#>  [27,] -0.298504328 -0.506810200 -0.323210652 -0.113235067 -0.403617041
#>  [28,]  0.045614586  1.220796872 -0.078451288  0.791856106  0.516374767
#>  [29,]  0.366035349 -0.914536014 -0.165729598 -1.491294064 -0.543787947
#>  [30,]  0.550687576  1.086301789  0.249986329  1.034573635  0.632002945
#>  [31,] -1.354208680  1.494509045 -1.749383438  0.903947117 -0.629726632
#>  [32,] -0.090302517 -1.216518747 -0.246432564 -1.354208680 -0.914536014
#>  [33,]  0.477774984 -0.890402193  0.568882500 -0.780170934 -0.192489431
#>  [34,]  1.034573635  0.568882500  0.990135220  1.220796872  1.086301789
#>  [35,] -0.276229984 -0.726553456  0.045614586 -0.600127795  0.045614586
#>  [36,]  1.339948390 -0.584669823  1.426444748  0.000676185  1.629757484
#>  [37,] -0.506810200 -0.323210652 -0.260555901  0.144017206 -0.726553456
#>  [38,] -0.192489431 -0.204402530  0.178390203 -0.204402530 -0.246432564
#>  [39,]  0.031768099  0.632002945  0.550687576  0.961922133  0.791856106
#>  [40,] -0.600127795 -0.488210899 -0.890402193 -0.488210899 -0.298504328
#>  [41,]  0.632002945  0.207554427  0.810841683 -0.564853257  0.961922133
#>  [42,] -1.216518747  0.731320234 -0.780170934  0.810841683 -0.424025563
#>  [43,] -0.113235067 -1.118978070  0.225688873 -2.126178982 -0.664420493
#>  [44,] -0.629726632 -0.578051614 -0.824629044 -0.993433779 -0.165729598
#>  [45,] -0.664420493  0.990135220  0.400474778  0.731320234  1.130731063
#>  [46,]  0.879777414 -0.219043093 -0.192489431 -0.298504328 -0.219043093
#>  [47,]  0.791856106 -2.126178982  0.751930817 -1.638170985  0.132061713
#>  [48,]  1.289476445 -0.680049950  1.220796872 -0.135664687  0.347828969
#>  [49,] -0.472352167  0.903947117 -0.424025563  0.207554427 -0.260555901
#>  [50,] -0.063036744 -0.276229984  0.111508884 -1.387693847 -0.063036744
#>  [51,] -1.387693847 -0.246432564 -1.216518747  0.225688873 -0.966617481
#>  [52,] -0.564853257 -0.090302517 -0.584669823  0.045614586 -1.216518747
#>  [53,]  1.494509045  0.652574829  1.984448844  0.568882500  1.494509045
#>  [54,] -0.578051614 -0.371554419 -0.472352167 -0.584669823 -0.704623500
#>  [55,] -1.118978070  0.477774984 -0.680049950 -0.382340337 -0.135664687
#>  [56,]  0.000676185  0.550687576 -0.298504328  0.111508884 -0.204402530
#>  [57,]  0.990135220 -0.857971530  0.447849328 -0.424025563  0.064268516
#>  [58,] -1.491294064  0.045614586 -1.491294064  0.132061713 -0.824629044
#>  [59,] -0.424025563 -0.424025563 -0.600127795 -1.049617333 -0.780170934
#>  [60,]  0.447849328  0.447849328  0.516374767  0.695776365  0.366035349
#>  [61,]  1.629757484 -1.095735908  0.842636160 -0.680049950  0.842636160
#>  [62,] -0.726553456  1.629757484 -0.857971530  1.175964337  0.477774984
#>  [63,]  1.220796872  1.426444748  1.086301789  1.086301789  1.984448844
#>  [64,] -0.584669823 -0.664420493 -0.993433779  0.196197118 -1.049617333
#>  [65,] -0.966617481 -0.564853257 -0.914536014 -0.276229984 -1.638170985
#>  [66,] -1.095735908 -0.704623500 -0.966617481  0.064268516 -0.857971530
#>  [67,] -0.371554419 -0.063036744  0.196197118 -0.078451288  0.097555156
#>  [68,] -0.135664687 -0.403617041 -0.204402530  0.477774984  0.990135220
#>  [69,] -0.543787947  0.225688873 -0.488210899  0.178390203 -1.118978070
#>  [70,]  0.810841683 -1.749383438  0.477774984 -0.824629044 -0.488210899
#>  [71,]  0.097555156  0.249986329  0.132061713  0.097555156  0.695776365
#>  [72,] -0.246432564  0.144017206 -0.276229984 -0.506810200 -0.993433779
#>  [73,] -0.704623500 -1.168465766 -0.726553456 -0.629726632 -1.354208680
#>  [74,] -1.168465766  0.320032715 -1.168465766  1.339948390 -0.506810200
#>  [75,] -1.638170985  0.178390203 -1.095735908 -0.063036744 -0.890402193
#>  [76,]  0.111508884 -0.165729598  0.731320234  0.632002945  0.000676185
#>  [77,] -0.078451288  0.111508884 -0.371554419 -0.090302517 -0.276229984
#>  [78,]  1.086301789  0.400474778  0.961922133  0.842636160  1.220796872
#>  [79,]  0.144017206  0.366035349 -0.063036744 -0.246432564 -0.382340337
#>  [80,]  0.652574829 -0.298504328  1.289476445 -0.192489431  1.175964337
#>  [81,] -0.026402454  1.289476445  0.064268516  0.550687576  0.879777414
#>  [82,] -0.890402193  0.064268516 -1.354208680 -0.664420493 -1.749383438
#>  [83,]  0.132061713 -0.026402454 -0.113235067  0.320032715 -0.578051614
#>  [84,]  0.225688873  1.034573635 -0.629726632  1.629757484 -0.090302517
#>  [85,] -0.857971530  1.130731063 -0.704623500  0.447849328 -0.050907073
#>  [86,] -0.165729598 -0.600127795  0.031768099 -0.857971530  0.196197118
#>  [87,]  1.734118843 -0.824629044  1.130731063 -1.216518747  0.225688873
#>  [88,] -1.049617333 -0.629726632 -1.387693847 -0.704623500 -1.168465766
#>  [89,]  1.130731063 -0.966617481  1.629757484 -0.543787947  1.034573635
#>  [90,] -0.382340337 -1.638170985 -0.543787947 -0.914536014 -0.584669823
#>  [91,]  1.175964337  0.347828969  1.494509045  0.516374767  1.339948390
#>  [92,] -0.914536014 -0.078451288 -0.564853257  0.400474778 -0.371554419
#>  [93,] -0.219043093  0.603212089  0.097555156  0.347828969  0.436126035
#>  [94,]  0.178390203  0.132061713  0.632002945  0.031768099  0.731320234
#>  [95,] -0.260555901  0.436126035  0.207554427  0.751930817  0.652574829
#>  [96,]  0.568882500 -0.382340337  0.879777414 -0.472352167  0.249986329
#>  [97,] -0.323210652 -0.780170934 -0.135664687 -1.168465766 -0.323210652
#>  [98,]  0.961922133  0.879777414  0.903947117 -0.026402454  1.734118843
#>  [99,]  0.064268516  0.810841683 -0.382340337  1.734118843  0.568882500
#> [100,]  0.603212089 -1.491294064 -0.090302517 -1.749383438 -1.095735908
#>               Noise
#>   [1,]  1.289476445
#>   [2,]  0.064268516
#>   [3,] -1.491294064
#>   [4,]  1.130731063
#>   [5,]  0.196197118
#>   [6,]  0.903947117
#>   [7,]  1.494509045
#>   [8,]  0.961922133
#>   [9,] -0.113235067
#>  [10,]  0.000676185
#>  [11,] -0.824629044
#>  [12,] -0.472352167
#>  [13,]  0.447849328
#>  [14,] -0.063036744
#>  [15,]  0.652574829
#>  [16,]  0.810841683
#>  [17,]  0.366035349
#>  [18,] -0.165729598
#>  [19,] -1.387693847
#>  [20,]  0.207554427
#>  [21,] -0.857971530
#>  [22,]  0.603212089
#>  [23,]  0.751930817
#>  [24,]  0.347828969
#>  [25,] -0.890402193
#>  [26,] -0.403617041
#>  [27,] -0.260555901
#>  [28,]  0.225688873
#>  [29,]  1.984448844
#>  [30,] -0.704623500
#>  [31,] -1.749383438
#>  [32,]  0.045614586
#>  [33,] -0.564853257
#>  [34,] -1.982897049
#>  [35,] -0.664420493
#>  [36,] -0.135664687
#>  [37,] -1.049617333
#>  [38,]  0.695776365
#>  [39,]  0.842636160
#>  [40,] -0.078451288
#>  [41,] -1.354208680
#>  [42,]  0.516374767
#>  [43,] -0.629726632
#>  [44,] -0.488210899
#>  [45,]  0.249986329
#>  [46,] -0.780170934
#>  [47,] -0.050907073
#>  [48,] -0.424025563
#>  [49,]  0.400474778
#>  [50,] -0.600127795
#>  [51,] -0.578051614
#>  [52,] -0.726553456
#>  [53,]  0.111508884
#>  [54,]  1.086301789
#>  [55,] -0.680049950
#>  [56,]  0.320032715
#>  [57,] -0.371554419
#>  [58,] -0.993433779
#>  [59,]  0.990135220
#>  [60,] -0.323210652
#>  [61,]  1.339948390
#>  [62,] -0.382340337
#>  [63,]  0.632002945
#>  [64,]  1.034573635
#>  [65,]  1.629757484
#>  [66,] -0.506810200
#>  [67,]  0.178390203
#>  [68,]  0.879777414
#>  [69,] -0.276229984
#>  [70,]  0.550687576
#>  [71,] -0.204402530
#>  [72,] -1.118978070
#>  [73,] -2.126178982
#>  [74,]  0.477774984
#>  [75,] -0.090302517
#>  [76,]  1.426444748
#>  [77,] -1.095735908
#>  [78,] -0.246432564
#>  [79,]  0.791856106
#>  [80,] -0.026402454
#>  [81,]  0.436126035
#>  [82,]  1.175964337
#>  [83,]  1.734118843
#>  [84,]  0.144017206
#>  [85,] -0.543787947
#>  [86,] -0.966617481
#>  [87,] -0.298504328
#>  [88,] -0.192489431
#>  [89,] -1.168465766
#>  [90,]  0.568882500
#>  [91,]  1.220796872
#>  [92,] -0.219043093
#>  [93,] -0.914536014
#>  [94,] -1.216518747
#>  [95,]  0.731320234
#>  [96,]  0.132061713
#>  [97,] -1.638170985
#>  [98,]  0.031768099
#>  [99,]  0.097555156
#> [100,] -0.584669823
discretize_data(dat, bins = 5)
#>        TF1 TF2 Gene1 Gene2 Gene3 Noise
#>   [1,]   1   1     2     1     2     5
#>   [2,]   3   2     2     2     3     3
#>   [3,]   4   5     3     4     5     1
#>   [4,]   4   4     3     5     3     5
#>   [5,]   4   3     4     2     4     4
#>   [6,]   5   3     5     4     5     5
#>   [7,]   1   5     1     5     1     5
#>   [8,]   5   3     5     1     4     5
#>   [9,]   4   4     5     4     5     3
#>  [10,]   2   1     1     1     2     3
#>  [11,]   1   5     1     5     2     1
#>  [12,]   4   5     4     5     5     2
#>  [13,]   4   5     3     5     4     4
#>  [14,]   5   1     4     1     3     3
#>  [15,]   3   3     3     2     3     4
#>  [16,]   2   2     3     3     3     5
#>  [17,]   5   1     5     2     4     4
#>  [18,]   1   4     1     3     1     3
#>  [19,]   4   5     4     5     3     1
#>  [20,]   4   2     4     1     4     4
#>  [21,]   4   3     4     2     4     1
#>  [22,]   4   5     4     5     5     4
#>  [23,]   2   1     2     1     1     5
#>  [24,]   5   5     5     4     4     4
#>  [25,]   1   3     1     4     1     1
#>  [26,]   1   3     2     3     2     2
#>  [27,]   2   2     2     3     2     2
#>  [28,]   3   5     3     5     4     4
#>  [29,]   4   1     3     1     2     5
#>  [30,]   4   5     4     5     4     2
#>  [31,]   1   5     1     5     2     1
#>  [32,]   3   1     3     1     1     3
#>  [33,]   4   1     4     1     3     2
#>  [34,]   5   4     5     5     5     1
#>  [35,]   2   1     3     2     3     2
#>  [36,]   5   2     5     3     5     3
#>  [37,]   2   2     2     3     1     1
#>  [38,]   3   3     4     3     3     4
#>  [39,]   3   4     4     5     5     5
#>  [40,]   2   2     1     2     2     3
#>  [41,]   4   4     5     2     5     1
#>  [42,]   1   4     1     5     2     4
#>  [43,]   3   1     4     1     2     2
#>  [44,]   2   2     1     1     3     2
#>  [45,]   2   5     4     4     5     4
#>  [46,]   5   3     3     2     3     1
#>  [47,]   5   1     5     1     3     3
#>  [48,]   5   2     5     3     4     2
#>  [49,]   2   5     2     4     2     4
#>  [50,]   3   2     3     1     3     2
#>  [51,]   1   3     1     4     1     2
#>  [52,]   2   3     2     3     1     1
#>  [53,]   5   4     5     4     5     3
#>  [54,]   2   2     2     2     2     5
#>  [55,]   1   4     2     2     3     2
#>  [56,]   3   4     2     3     3     4
#>  [57,]   5   1     4     2     3     2
#>  [58,]   1   3     1     3     1     1
#>  [59,]   2   2     2     1     1     5
#>  [60,]   4   4     4     4     4     2
#>  [61,]   5   1     5     2     5     5
#>  [62,]   1   5     1     5     4     2
#>  [63,]   5   5     5     5     5     4
#>  [64,]   2   2     1     4     1     5
#>  [65,]   1   2     1     2     1     5
#>  [66,]   1   2     1     3     1     2
#>  [67,]   2   3     4     3     3     4
#>  [68,]   3   2     3     4     5     5
#>  [69,]   2   4     2     4     1     2
#>  [70,]   5   1     4     1     2     4
#>  [71,]   3   4     3     3     4     3
#>  [72,]   3   3     2     2     1     1
#>  [73,]   2   1     1     2     1     1
#>  [74,]   1   4     1     5     2     4
#>  [75,]   1   4     1     3     1     3
#>  [76,]   3   3     4     4     3     5
#>  [77,]   3   3     2     3     2     1
#>  [78,]   5   4     5     5     5     3
#>  [79,]   3   4     3     3     2     5
#>  [80,]   4   2     5     3     5     3
#>  [81,]   3   5     3     4     5     4
#>  [82,]   1   3     1     2     1     5
#>  [83,]   3   3     3     4     2     5
#>  [84,]   4   5     2     5     3     3
#>  [85,]   1   5     2     4     3     2
#>  [86,]   3   2     3     1     4     1
#>  [87,]   5   1     5     1     4     2
#>  [88,]   1   2     1     2     1     3
#>  [89,]   5   1     5     2     5     1
#>  [90,]   2   1     2     1     2     4
#>  [91,]   5   4     5     4     5     5
#>  [92,]   1   3     2     4     2     3
#>  [93,]   3   4     3     4     4     1
#>  [94,]   4   3     4     3     4     1
#>  [95,]   2   4     4     5     4     4
#>  [96,]   4   2     5     2     4     3
#>  [97,]   2   1     3     1     2     1
#>  [98,]   5   5     5     3     5     3
#>  [99,]   3   5     2     5     4     3
#> [100,]   4   1     3     1     1     2

References

  1. Zhao et al. (2016) “Part mutual information for quantifying direct associations in networks.” PNAS 113(18): 5130-5135.
  2. Frenzel & Pompe (2007) “Partial Mutual Information for Coupling Analysis of Multivariate Time Series.” Physical Review Letters 99(20): 204101.
  3. Kraskov, Stögbauer & Grassberger (2004) “Estimating mutual information.” Physical Review E 69(6): 066138.