# MI: Calculate Mutual Information In maigesPack: Functions to handle cDNA microarray data, including several methods of data analysis

## Description

Function to calculate the mutual information of 2 random variables, or between all pairs of rows of a numerical matrix.

## Usage

 `1` ```MI(x, y=NULL, k=1) ```

## Arguments

 `x` numerical matrix to calculate the MI between all pairs of rows from `x`. Also, `x` must be a numerical vector and `y` must be specified as another numerical vector of same lenght as `x` and the MI value between both them are calculated. `y` optional numerical vector that must be specified if `x` is a vector. Defaults to NULL. `k` integer specifying the number of the neighbours to be used in the calculation of the MI value.

## Details

This function implements an algorithm proposed by Kraskov et al. (2004) that don't use estimator of the entropy.

## Value

If `x` is a matrix, the function return a square matrix with lenght equal to the number of rows of `x` with MI values between all pairs of rows from `x`. If `x` is a numerical vector, `y` must be specified and the function returns a positive real number with the MI value between the two vectors.

## Author(s)

Gustavo H. Esteves <gesteves@vision.ime.usp.br>

## References

Kraskov, A.; Stogbauer, H. and Grassberger, P. Estimating mutual information, Physical Review E, 69, 066138, 2004 (http://scitation.aip.org/getabs/servlet/GetabsServlet?prog=normal&id=PLEEE8000069000006066138000001&idtype=cvips&gifs=yes).

## Examples

 ```1 2 3 4 5 6``` ```x <- runif(50, 0, 1) y <- rbeta(50, 1, 2) MI(x, y) z <- matrix(rnorm(100, 0, 1), 4, 25) MI(z) ```

### Example output

```Loading required package: convert

Attaching package: 'BiocGenerics'

The following objects are masked from 'package:parallel':

clusterApply, clusterApplyLB, clusterCall, clusterEvalQ,
clusterExport, clusterMap, parApply, parCapply, parLapply,
parLapplyLB, parRapply, parSapply, parSapplyLB

The following objects are masked from 'package:stats':

The following objects are masked from 'package:base':

Filter, Find, Map, Position, Reduce, anyDuplicated, append,
as.data.frame, cbind, colMeans, colSums, colnames, do.call,
duplicated, eval, evalq, get, grep, grepl, intersect, is.unsorted,
lapply, lengths, mapply, match, mget, order, paste, pmax, pmax.int,
pmin, pmin.int, rank, rbind, rowMeans, rowSums, rownames, sapply,
setdiff, sort, table, tapply, union, unique, unsplit, which,
which.max, which.min

Welcome to Bioconductor

Vignettes contain introductory material; view with
'browseVignettes()'. To cite Bioconductor, see
'citation("Biobase")', and for packages 'citation("pkgname")'.

Attaching package: 'limma'

The following object is masked from 'package:BiocGenerics':

plotMA