| estimateR | R Documentation |
Estimation of latent correlation matrix from observed data of (possibly) mixed types (continuous/binary/truncated continuous) based on the latent Gaussian copula model.
estimateR( X, type = "trunc", method = "original", use.nearPD = TRUE, nu = 0.01, tol = 0.001, verbose = FALSE ) estimateR_mixed( X1, X2, type1 = "trunc", type2 = "continuous", method = "original", use.nearPD = TRUE, nu = 0.01, tol = 0.001, verbose = FALSE )
X |
A numeric data matrix (n by p), n is the sample size and p is the number of variables. |
type |
A type of variables in |
method |
The calculation method of latent correlation. Either "original" method or "approx". If |
use.nearPD |
A logical value indicating whether to use nearPD or not when the resulting correlation estimator is not positive definite (have at least one negative eigenvalue). |
nu |
Shrinkage parameter for correlation matrix, must be between 0 and 1, the default value is 0.01. |
tol |
Desired accuracy when calculating the solution of bridge function. |
verbose |
If |
X1 |
A numeric data matrix (n by p1). |
X2 |
A numeric data matrix (n by p2). |
type1 |
A type of variables in |
type2 |
A type of variables in |
estimateR returns
type: Type of the data matrix X
R: Estimated p by p latent correlation matrix of X
estimateR_mixed returns
type1: Type of the data matrix X1
type2: Type of the data matrix X2
R: Estimated latent correlation matrix of whole X = (X1, X2) (p1+p2 by p1+p2)
R1: Estimated latent correlation matrix of X1 (p1 by p1)
R2: Estimated latent correlation matrix of X2 (p2 by p2)
R12: Estimated latent correlation matrix between X1 and X2 (p1 by p2)
Fan J., Liu H., Ning Y. and Zou H. (2017) "High dimensional semiparametric latent graphicalmodel for mixed data" <doi:10.1111/rssb.12168>.
Yoon G., Carroll R.J. and Gaynanova I. (2020) "Sparse semiparametric canonical correlation analysis for data of mixed types" <doi:10.1093/biomet/asaa007>.
Yoon G., Mueller C.L., Gaynanova I. (2020) "Fast computation of latent correlations" <arXiv:2006.13875>.
### Data setting
n <- 100; p1 <- 15; p2 <- 10 # sample size and dimensions for two datasets.
maxcancor <- 0.9 # true canonical correlation
### Correlation structure within each data set
set.seed(0)
perm1 <- sample(1:p1, size = p1);
Sigma1 <- autocor(p1, 0.7)[perm1, perm1]
blockind <- sample(1:3, size = p2, replace = TRUE);
Sigma2 <- blockcor(blockind, 0.7)
mu <- rbinom(p1+p2, 1, 0.5)
### true variable indices for each dataset
trueidx1 <- c(rep(1, 3), rep(0, p1-3))
trueidx2 <- c(rep(1, 2), rep(0, p2-2))
### Data generation
simdata <- GenerateData(n=n, trueidx1 = trueidx1, trueidx2 = trueidx2, maxcancor = maxcancor,
Sigma1 = Sigma1, Sigma2 = Sigma2,
copula1 = "exp", copula2 = "cube",
muZ = mu,
type1 = "trunc", type2 = "continuous",
c1 = rep(1, p1), c2 = rep(0, p2)
)
X1 <- simdata$X1
X2 <- simdata$X2
### Check the range of truncation levels of variables
range(colMeans(X1 == 0))
range(colMeans(X2 == 0))
### Estimate latent correlation matrix
# with original method
R1_org <- estimateR(X1, type = "trunc", method = "original")$R
# with faster approximation method
R1_approx <- estimateR(X1, type = "trunc", method = "approx")$R
R12_approx <- estimateR_mixed(X1, X2, type1 = "trunc", type2 = "continuous", method = "approx")$R12
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.