Title: | Bayesian Sparse Estimation of a Covariance Matrix |
---|---|
Description: | Provides functions which perform Bayesian estimations of a covariance matrix for multivariate normal data. Assumes that the covariance matrix is sparse or band matrix and positive-definite. This software has been developed using funding supported by Basic Science Research Program through the National Research Foundation of Korea ('NRF') funded by the Ministry of Education ('RS-2023-00211979', 'NRF-2022R1A5A7033499', 'NRF-2020R1A4A1018207' and 'NRF-2020R1C1C1A01013338'). |
Authors: | Kwangmin Lee [aut], Kyeongwon Lee [aut, cre], Kyoungjae Lee [aut], Seongil Jo [aut], Jaeyong Lee [ctb] |
Maintainer: | Kyeongwon Lee <[email protected]> |
License: | GPL-2 |
Version: | 0.0.0 |
Built: | 2025-02-11 05:44:03 UTC |
Source: | https://github.com/statjs/bspcov |
Provides a post-processed posterior for Bayesian inference of a banded covariance matrix.
bandPPP(X, k, eps, prior = list(), nsample = 2000)
bandPPP(X, k, eps, prior = list(), nsample = 2000)
X |
a n |
k |
a scalar value (natural number) specifying the bandwidth of covariance matrix. |
eps |
a small positive number decreasing to |
prior |
a list giving the prior information.
The list includes the following parameters (with default values in parentheses):
|
nsample |
a scalar value giving the number of the post-processed posterior samples. |
Lee, Lee, and Lee (2023+) proposed a two-step procedure generating samples from the post-processed posterior for Bayesian inference of a banded covariance matrix:
Initial posterior computing step: Generate random samples from the following initial posterior obtained by using the inverse-Wishart prior
where .
Post-processing step: Post-process the samples generated from the initial samples
where are the initial posterior samples,
is a small positive number decreasing to
as
,
and
denotes the
-band operation given as
For more details, see Lee, Lee and Lee (2023+).
Sigma |
a nsample |
p |
dimension of covariance matrix. |
Kwangmin Lee
Lee, K., Lee, K., and Lee, J. (2023+), "Post-processes posteriors for banded covariances", Bayesian Analysis, DOI: 10.1214/22-BA1333.
cv.bandPPP estimate
n <- 25 p <- 50 Sigma0 <- diag(1, p) X <- MASS::mvrnorm(n = n, mu = rep(0, p), Sigma = Sigma0) res <- bspcov::bandPPP(X,2,0.01,nsample=100)
n <- 25 p <- 50 Sigma0 <- diag(1, p) X <- MASS::mvrnorm(n = n, mu = rep(0, p), Sigma = Sigma0) res <- bspcov::bandPPP(X,2,0.01,nsample=100)
Provides a Bayesian sparse and positive definite estimate of a covariance matrix via the beta-mixture shrinkage prior.
bmspcov(X, Sigma, prior = list(), nsample = list())
bmspcov(X, Sigma, prior = list(), nsample = list())
X |
a n |
Sigma |
an initial guess for Sigma. |
prior |
a list giving the prior information.
The list includes the following parameters (with default values in parentheses):
|
nsample |
a list giving the MCMC parameters.
The list includes the following integers (with default values in parentheses):
|
Lee, Jo and Lee (2022) proposed the beta-mixture shrinkage prior for estimating a sparse and positive definite covariance matrix.
The beta-mixture shrinkage prior for is defined as
where is the unconstrained prior given by
For more details, see Lee, Jo and Lee (2022).
Sigma |
a nmc |
Phi |
a nmc |
p |
dimension of covariance matrix. |
Kyoungjae Lee and Seongil Jo
Lee, K., Jo, S., and Lee, J. (2022), "The beta-mixture shrinkage prior for sparse covariances with near-minimax posterior convergence rate", Journal of Multivariate Analysis, 192, 105067.
sbmspcov
set.seed(1) n <- 20 p <- 5 # generate a sparse covariance matrix: True.Sigma <- matrix(0, nrow = p, ncol = p) diag(True.Sigma) <- 1 Values <- -runif(n = p*(p-1)/2, min = 0.2, max = 0.8) nonzeroIND <- which(rbinom(n=p*(p-1)/2,1,prob=1/p)==1) zeroIND = (1:(p*(p-1)/2))[-nonzeroIND] Values[zeroIND] <- 0 True.Sigma[lower.tri(True.Sigma)] <- Values True.Sigma[upper.tri(True.Sigma)] <- t(True.Sigma)[upper.tri(True.Sigma)] if(min(eigen(True.Sigma)$values) <= 0){ delta <- -min(eigen(True.Sigma)$values) + 1.0e-5 True.Sigma <- True.Sigma + delta*diag(p) } # generate a data X <- MASS::mvrnorm(n = n, mu = rep(0, p), Sigma = True.Sigma) # compute sparse, positive covariance estimator: fout <- bspcov::bmspcov(X = X, Sigma = diag(diag(cov(X)))) post.est.m <- bspcov::estimate(fout) sqrt(mean((post.est.m - True.Sigma)^2)) sqrt(mean((cov(X) - True.Sigma)^2))
set.seed(1) n <- 20 p <- 5 # generate a sparse covariance matrix: True.Sigma <- matrix(0, nrow = p, ncol = p) diag(True.Sigma) <- 1 Values <- -runif(n = p*(p-1)/2, min = 0.2, max = 0.8) nonzeroIND <- which(rbinom(n=p*(p-1)/2,1,prob=1/p)==1) zeroIND = (1:(p*(p-1)/2))[-nonzeroIND] Values[zeroIND] <- 0 True.Sigma[lower.tri(True.Sigma)] <- Values True.Sigma[upper.tri(True.Sigma)] <- t(True.Sigma)[upper.tri(True.Sigma)] if(min(eigen(True.Sigma)$values) <= 0){ delta <- -min(eigen(True.Sigma)$values) + 1.0e-5 True.Sigma <- True.Sigma + delta*diag(p) } # generate a data X <- MASS::mvrnorm(n = n, mu = rep(0, p), Sigma = True.Sigma) # compute sparse, positive covariance estimator: fout <- bspcov::bmspcov(X = X, Sigma = diag(diag(cov(X)))) post.est.m <- bspcov::estimate(fout) sqrt(mean((post.est.m - True.Sigma)^2)) sqrt(mean((cov(X) - True.Sigma)^2))
The colon cancer dataset, which includes gene expression values from 22 colon tumor tissues and 40 non-tumor tissues.
'data.frame'
http://genomics-pubs.princeton.edu/oncology/affydata/.
data("colon") head(colon)
data("colon") head(colon)
Performs leave-one-out cross-validation (LOOCV) to calculate the predictive log-likelihood for a post-processed posterior of a banded covariance matrix and selects the optimal parameters.
cv.bandPPP(X, kvec, epsvec, prior = list(), nsample = 2000, ncores = 2)
cv.bandPPP(X, kvec, epsvec, prior = list(), nsample = 2000, ncores = 2)
X |
a n |
kvec |
a vector of natural numbers specifying the bandwidth of covariance matrix. |
epsvec |
a vector of small positive numbers decreasing to |
prior |
a list giving the prior information.
The list includes the following parameters (with default values in parentheses):
|
nsample |
a scalar value giving the number of the post-processed posterior samples. |
ncores |
a scalar value giving the number of CPU cores. |
The predictive log-likelihood for each and
is estimated as follows:
where is the ith observation,
is the sth posterior sample based on
, and
represents the banding post-processing function.
For more details, see (3) in Lee, Lee and Lee (2023+).
elpd |
a M |
Kwangmin Lee
Lee, K., Lee, K., and Lee, J. (2023+), "Post-processes posteriors for banded covariances", Bayesian Analysis, DOI: 10.1214/22-BA1333.
Gelman, A., Hwang, J., and Vehtari, A. (2014). "Understanding predictive information criteria for Bayesian models." Statistics and computing, 24(6), 997-1016.
bandPPP
Sigma0 <- diag(1,50) X <- mvtnorm::rmvnorm(25,sigma = Sigma0) kvec <- 1:2 epsvec <- c(0.01,0.05) res <- bspcov::cv.bandPPP(X,kvec,epsvec,nsample=10,ncores=4) plot(res)
Sigma0 <- diag(1,50) X <- mvtnorm::rmvnorm(25,sigma = Sigma0) kvec <- 1:2 epsvec <- c(0.01,0.05) res <- bspcov::cv.bandPPP(X,kvec,epsvec,nsample=10,ncores=4) plot(res)
Performs cross-validation to estimate spectral norm error for a post-processed posterior of a sparse covariance matrix.
cv.thresPPP( X, thresvec, epsvec, prior = NULL, thresfun = "hard", nsample = 2000, ncores = 2 )
cv.thresPPP( X, thresvec, epsvec, prior = NULL, thresfun = "hard", nsample = 2000, ncores = 2 )
X |
a n |
thresvec |
a vector of real numbers specifying the parameter of the threshold function. |
epsvec |
a vector of small positive numbers decreasing to |
prior |
a list giving the prior information.
The list includes the following parameters (with default values in parentheses):
|
thresfun |
a string to specify the type of threshold function. |
nsample |
a scalar value giving the number of the post-processed posterior samples. |
ncores |
a scalar value giving the number of CPU cores. |
Given a set of train data and validation data, the spectral norm error for each and
is estimated as follows:
where is the estimate for the covariance based on the train data and
is the sample covariance matrix based on the validation data.
The spectral norm error is estimated by the
-fold cross-validation.
For more details, see the first paragraph on page 9 in Lee and Lee (2023).
CVdf |
a M |
Kwangmin Lee
Lee, K. and Lee, J. (2023), "Post-processes posteriors for sparse covariances", Journal of Econometrics, 236(3), 105475.
thresPPP
Sigma0 <- diag(1,50) X <- mvtnorm::rmvnorm(25,sigma = Sigma0) thresvec <- c(0.01,0.1) epsvec <- c(0.01,0.1) res <- bspcov::cv.thresPPP(X,thresvec,epsvec,nsample=100) plot(res)
Sigma0 <- diag(1,50) X <- mvtnorm::rmvnorm(25,sigma = Sigma0) thresvec <- c(0.01,0.1) epsvec <- c(0.01,0.1) res <- bspcov::cv.thresPPP(X,thresvec,epsvec,nsample=100) plot(res)
Compute the point estimate (mean) to describe posterior distribution.
estimate(object, ...) ## S3 method for class 'bspcov' estimate(object, ...)
estimate(object, ...) ## S3 method for class 'bspcov' estimate(object, ...)
object |
an object from bandPPP, bmspcov, sbmspcov, and thresPPP. |
... |
additional arguments for estimate. |
Sigma |
the point estimate (mean) of covariance matrix. |
Seongil Jo
plot.postmean.bspcov
n <- 25 p <- 50 Sigma0 <- diag(1, p) X <- MASS::mvrnorm(n = n, mu = rep(0, p), Sigma = Sigma0) res <- bspcov::bandPPP(X,2,0.01,nsample=100) est <- bspcov::estimate(res)
n <- 25 p <- 50 Sigma0 <- diag(1, p) X <- MASS::mvrnorm(n = n, mu = rep(0, p), Sigma = Sigma0) res <- bspcov::bandPPP(X,2,0.01,nsample=100) est <- bspcov::estimate(res)
Provides a trace plot of posterior samples and a plot of a learning curve for cross-validation
## S3 method for class 'bspcov' plot(x, ..., cols, rows)
## S3 method for class 'bspcov' plot(x, ..., cols, rows)
x |
an object from bmspcov, sbmspcov, cv.bandPPP, and cv.thresPPP. |
... |
additional arguments for ggplot2. |
cols |
a scalar or a vector including specific column indices for the trace plot. |
rows |
a scalar or a vector including specific row indices greater than or equal to columns indices for the trace plot. |
plot |
a plot for diagnostics of posterior samples x. |
Seongil Jo
set.seed(1) n <- 100 p <- 20 # generate a sparse covariance matrix: True.Sigma <- matrix(0, nrow = p, ncol = p) diag(True.Sigma) <- 1 Values <- -runif(n = p*(p-1)/2, min = 0.2, max = 0.8) nonzeroIND <- which(rbinom(n=p*(p-1)/2,1,prob=1/p)==1) zeroIND = (1:(p*(p-1)/2))[-nonzeroIND] Values[zeroIND] <- 0 True.Sigma[lower.tri(True.Sigma)] <- Values True.Sigma[upper.tri(True.Sigma)] <- t(True.Sigma)[upper.tri(True.Sigma)] if(min(eigen(True.Sigma)$values) <= 0){ delta <- -min(eigen(True.Sigma)$values) + 1.0e-5 True.Sigma <- True.Sigma + delta*diag(p) } # generate a data X <- MASS::mvrnorm(n = n, mu = rep(0, p), Sigma = True.Sigma) # compute sparse, positive covariance estimator: fout <- bspcov::sbmspcov(X = X, Sigma = diag(diag(cov(X)))) plot(fout, cols = c(1, 3, 4), rows = c(1, 3, 4)) plot(fout, cols = 1, rows = 1:3) # Cross-Validation for Banded Structure Sigma0 <- diag(1,50) X <- mvtnorm::rmvnorm(25,sigma = Sigma0) kvec <- 1:2 epsvec <- c(0.01,0.05) res <- bspcov::cv.bandPPP(X,kvec,epsvec,nsample=10,ncores=4) plot(res)
set.seed(1) n <- 100 p <- 20 # generate a sparse covariance matrix: True.Sigma <- matrix(0, nrow = p, ncol = p) diag(True.Sigma) <- 1 Values <- -runif(n = p*(p-1)/2, min = 0.2, max = 0.8) nonzeroIND <- which(rbinom(n=p*(p-1)/2,1,prob=1/p)==1) zeroIND = (1:(p*(p-1)/2))[-nonzeroIND] Values[zeroIND] <- 0 True.Sigma[lower.tri(True.Sigma)] <- Values True.Sigma[upper.tri(True.Sigma)] <- t(True.Sigma)[upper.tri(True.Sigma)] if(min(eigen(True.Sigma)$values) <= 0){ delta <- -min(eigen(True.Sigma)$values) + 1.0e-5 True.Sigma <- True.Sigma + delta*diag(p) } # generate a data X <- MASS::mvrnorm(n = n, mu = rep(0, p), Sigma = True.Sigma) # compute sparse, positive covariance estimator: fout <- bspcov::sbmspcov(X = X, Sigma = diag(diag(cov(X)))) plot(fout, cols = c(1, 3, 4), rows = c(1, 3, 4)) plot(fout, cols = 1, rows = 1:3) # Cross-Validation for Banded Structure Sigma0 <- diag(1,50) X <- mvtnorm::rmvnorm(25,sigma = Sigma0) kvec <- 1:2 epsvec <- c(0.01,0.05) res <- bspcov::cv.bandPPP(X,kvec,epsvec,nsample=10,ncores=4) plot(res)
Provides a heat map for posterior mean estimate of sparse covariance matrix
## S3 method for class 'postmean.bspcov' plot(x, ...)
## S3 method for class 'postmean.bspcov' plot(x, ...)
x |
an object from estimate. |
... |
additional arguments for ggplot2. |
plot |
a heatmap for point estimate of covariance matrix x. |
Seongil Jo
estimate
n <- 25 p <- 50 Sigma0 <- diag(1, p) X <- MASS::mvrnorm(n = n, mu = rep(0, p), Sigma = Sigma0) res <- bspcov::thresPPP(X, eps=0.01, thres=list(value=0.5,fun='hard'), nsample=100) est <- bspcov::estimate(res) plot(est)
n <- 25 p <- 50 Sigma0 <- diag(1, p) X <- MASS::mvrnorm(n = n, mu = rep(0, p), Sigma = Sigma0) res <- bspcov::thresPPP(X, eps=0.01, thres=list(value=0.5,fun='hard'), nsample=100) est <- bspcov::estimate(res) plot(est)
Provides a Bayesian sparse and positive definite estimate of a covariance matrix via screened beta-mixture prior.
sbmspcov(X, Sigma, cutoff = list(), prior = list(), nsample = list())
sbmspcov(X, Sigma, cutoff = list(), prior = list(), nsample = list())
X |
a n |
Sigma |
an initial guess for Sigma. |
cutoff |
a list giving the information for the threshold.
The list includes the following parameters (with default values in parentheses):
|
prior |
a list giving the prior information.
The list includes the following parameters (with default values in parentheses):
|
nsample |
a list giving the MCMC parameters.
The list includes the following integers (with default values in parentheses):
|
Lee, Jo, Lee, and Lee (2023+) proposed the screened beta-mixture shrinkage prior for estimating a sparse and positive definite covariance matrix.
The screened beta-mixture shrinkage prior for is defined as
where is the unconstrained prior given by
where ,
are sample correlations, and
is a threshold given by user.
For more details, see Lee, Jo, Lee and Lee (2022+).
Sigma |
a nmc |
p |
dimension of covariance matrix. |
Phi |
a nmc |
INDzero |
a list including indices of off-diagonal elements screened by sure screening. |
cutoff |
the cutoff value specified by FNR-approach. |
Kyoungjae Lee and Seongil Jo
Lee, K., Jo, S., Lee, K., and Lee, J. (2023+), "Scalable and optimal Bayesian inference for sparse covariance matrices via screened beta-mixture prior", arXiv:2206.12773.
bmspcov
set.seed(1) n <- 20 p <- 5 # generate a sparse covariance matrix: True.Sigma <- matrix(0, nrow = p, ncol = p) diag(True.Sigma) <- 1 Values <- -runif(n = p*(p-1)/2, min = 0.2, max = 0.8) nonzeroIND <- which(rbinom(n=p*(p-1)/2,1,prob=1/p)==1) zeroIND = (1:(p*(p-1)/2))[-nonzeroIND] Values[zeroIND] <- 0 True.Sigma[lower.tri(True.Sigma)] <- Values True.Sigma[upper.tri(True.Sigma)] <- t(True.Sigma)[upper.tri(True.Sigma)] if(min(eigen(True.Sigma)$values) <= 0){ delta <- -min(eigen(True.Sigma)$values) + 1.0e-5 True.Sigma <- True.Sigma + delta*diag(p) } # generate a data X <- MASS::mvrnorm(n = n, mu = rep(0, p), Sigma = True.Sigma) # compute sparse, positive covariance estimator: fout <- bspcov::sbmspcov(X = X, Sigma = diag(diag(cov(X)))) post.est.m <- bspcov::estimate(fout) sqrt(mean((post.est.m - True.Sigma)^2)) sqrt(mean((cov(X) - True.Sigma)^2))
set.seed(1) n <- 20 p <- 5 # generate a sparse covariance matrix: True.Sigma <- matrix(0, nrow = p, ncol = p) diag(True.Sigma) <- 1 Values <- -runif(n = p*(p-1)/2, min = 0.2, max = 0.8) nonzeroIND <- which(rbinom(n=p*(p-1)/2,1,prob=1/p)==1) zeroIND = (1:(p*(p-1)/2))[-nonzeroIND] Values[zeroIND] <- 0 True.Sigma[lower.tri(True.Sigma)] <- Values True.Sigma[upper.tri(True.Sigma)] <- t(True.Sigma)[upper.tri(True.Sigma)] if(min(eigen(True.Sigma)$values) <= 0){ delta <- -min(eigen(True.Sigma)$values) + 1.0e-5 True.Sigma <- True.Sigma + delta*diag(p) } # generate a data X <- MASS::mvrnorm(n = n, mu = rep(0, p), Sigma = True.Sigma) # compute sparse, positive covariance estimator: fout <- bspcov::sbmspcov(X = X, Sigma = diag(diag(cov(X)))) post.est.m <- bspcov::estimate(fout) sqrt(mean((post.est.m - True.Sigma)^2)) sqrt(mean((cov(X) - True.Sigma)^2))
The idiosyncratic error of S&P 500 data
'list'
State Street Global Advisors (2022).
data("SP500_idioerr") names(SP500_idioerr)
data("SP500_idioerr") names(SP500_idioerr)
Provides the summary statistics for posterior samples of covariance matrix.
## S3 method for class 'bspcov' summary(object, cols, rows, ...)
## S3 method for class 'bspcov' summary(object, cols, rows, ...)
object |
an object from bandPPP, bmspcov, sbmspcov, and thresPPP. |
cols |
a scalar or a vector including specific column indices. |
rows |
a scalar or a vector including specific row indices greater than or equal to columns indices. |
... |
additional arguments for the summary function. |
summary |
a table of summary statistics including empirical mean, standard deviation, and quantiles for posterior samples |
If both cols
and rows
are vectors, they must have the same length.
Seongil Jo
set.seed(1) n <- 20 p <- 5 # generate a sparse covariance matrix: True.Sigma <- matrix(0, nrow = p, ncol = p) diag(True.Sigma) <- 1 Values <- -runif(n = p*(p-1)/2, min = 0.2, max = 0.8) nonzeroIND <- which(rbinom(n=p*(p-1)/2,1,prob=1/p)==1) zeroIND = (1:(p*(p-1)/2))[-nonzeroIND] Values[zeroIND] <- 0 True.Sigma[lower.tri(True.Sigma)] <- Values True.Sigma[upper.tri(True.Sigma)] <- t(True.Sigma)[upper.tri(True.Sigma)] if(min(eigen(True.Sigma)$values) <= 0){ delta <- -min(eigen(True.Sigma)$values) + 1.0e-5 True.Sigma <- True.Sigma + delta*diag(p) } # generate a data X <- MASS::mvrnorm(n = n, mu = rep(0, p), Sigma = True.Sigma) # compute sparse, positive covariance estimator: fout <- bspcov::sbmspcov(X = X, Sigma = diag(diag(cov(X)))) summary(fout, cols = c(1, 3, 4), rows = c(1, 3, 4)) summary(fout, cols = 1, rows = 1:p)
set.seed(1) n <- 20 p <- 5 # generate a sparse covariance matrix: True.Sigma <- matrix(0, nrow = p, ncol = p) diag(True.Sigma) <- 1 Values <- -runif(n = p*(p-1)/2, min = 0.2, max = 0.8) nonzeroIND <- which(rbinom(n=p*(p-1)/2,1,prob=1/p)==1) zeroIND = (1:(p*(p-1)/2))[-nonzeroIND] Values[zeroIND] <- 0 True.Sigma[lower.tri(True.Sigma)] <- Values True.Sigma[upper.tri(True.Sigma)] <- t(True.Sigma)[upper.tri(True.Sigma)] if(min(eigen(True.Sigma)$values) <= 0){ delta <- -min(eigen(True.Sigma)$values) + 1.0e-5 True.Sigma <- True.Sigma + delta*diag(p) } # generate a data X <- MASS::mvrnorm(n = n, mu = rep(0, p), Sigma = True.Sigma) # compute sparse, positive covariance estimator: fout <- bspcov::sbmspcov(X = X, Sigma = diag(diag(cov(X)))) summary(fout, cols = c(1, 3, 4), rows = c(1, 3, 4)) summary(fout, cols = 1, rows = 1:p)
Provides a post-processed posterior (PPP) for Bayesian inference of a sparse covariance matrix.
thresPPP(X, eps, thres = list(), prior = list(), nsample = 2000)
thresPPP(X, eps, thres = list(), prior = list(), nsample = 2000)
X |
a n |
eps |
a small positive number decreasing to |
thres |
a list giving the information for thresholding PPP procedure.
The list includes the following parameters (with default values in parentheses):
|
prior |
a list giving the prior information.
The list includes the following parameters (with default values in parentheses):
|
nsample |
a scalar value giving the number of the post-processed posterior samples. |
Lee and Lee (2023) proposed a two-step procedure generating samples from the post-processed posterior for Bayesian inference of a sparse covariance matrix:
Initial posterior computing step: Generate random samples from the following initial posterior obtained by using the inverse-Wishart prior
where .
Post-processing step: Post-process the samples generated from the initial samples
where are the initial posterior samples,
is a positive real number, and
denotes the generalized threshodling operator given as
where is the
element of
and
is a generalized thresholding function.
For more details, see Lee and Lee (2023).
Sigma |
a nsample |
p |
dimension of covariance matrix. |
Kwangmin Lee
Lee, K. and Lee, J. (2023), "Post-processes posteriors for sparse covariances", Journal of Econometrics.
cv.thresPPP
n <- 25 p <- 50 Sigma0 <- diag(1, p) X <- MASS::mvrnorm(n = n, mu = rep(0, p), Sigma = Sigma0) res <- bspcov::thresPPP(X, eps=0.01, thres=list(value=0.5,fun='hard'), nsample=100) est <- bspcov::estimate(res)
n <- 25 p <- 50 Sigma0 <- diag(1, p) X <- MASS::mvrnorm(n = n, mu = rep(0, p), Sigma = Sigma0) res <- bspcov::thresPPP(X, eps=0.01, thres=list(value=0.5,fun='hard'), nsample=100) est <- bspcov::estimate(res)
The tissues data of colon cancer dataset, which includes gene expression values from 22 colon tumor tissues and 40 non-tumor tissues.
'numeric'
http://genomics-pubs.princeton.edu/oncology/affydata/.
data("tissues") head(tissues)
data("tissues") head(tissues)