mvmeta (version 1.0.3)

inputcov: Input (Co)Variance Matrices

Description

This function inputs (co)variance matrices of a set of outcomes given the corresponding standard deviation and correlation values.

Usage

inputcov(sd, cor=NULL)

Arguments

sd

a \(m \times k\) matrix of standard deviations for \(k\) outcomes in \(m\) matrices, or a vector for \(k\) outcomes in a single matrix.

cor

either a vector of length 1, \(m\) or \(k(k-1)/2\), or alternatively a \(k \times k\) or \(m \times k(k-1)/2\) matrix. See Details.

Value

For a single matrix, the (co)variance matrix itself. For multiple matrices, a \(m \times k(k+1)/2\) matrix, where each row represents the vectorized entries of the lower triangle (with diagonal, taken by column) of the related (co)variance matrix (see vechMat).

Details

Depending the number of outcomes \(k\) and matrices \(m\), the argument cor is interpreted as:

  • if a vector of length 1 (a scalar), the same correlation for all the \(k\) outcomes for all the \(m\) matrices;

  • if a vector of length \(m\), the same correlation for all the \(k\) outcomes for each of the \(m\) matrices;

  • if a vector of length \(k(k-1)/2\), the lower triangular elements (without diagonal, taken by column) of the correlation matrix of the \(k\) outcomes, the same for all the \(m\) matrices;

  • if a \(k \times k\) matrix, the correlation matrix for the single matrix (only when \(m\)=1);

  • if a \(m \times k(k-1)/2\) matrix, each row represents the lower triangular elements (without diagonal, taken by column) of the correlation matrix of the \(k\) outcomes for each of the \(m\) matrices.

See Also

See xpndMat. See mvmeta.control.

Examples

Run this code
# NOT RUN {
# SOME RANDOM SD FOR A SINGLE MATRIX, WITH CONSTANT CORRELATION
(M <- inputcov(runif(4, 0.1, 3), 0.7))
# CHECK CORRELATION
cov2cor(M)

# NOW WITH A MORE COMPLEX CORRELATION STRUCTURE
(M <- inputcov(runif(3, 0.1, 3), c(0.7,0.2,0.4)))
cov2cor(M)

# MULTIPLE MATRICES
(V <- matrix(runif(5*3, 0.1, 3), 5, 3,
  dimnames=list(1:5, paste("V", 1:3, sep=""))))
inputcov(V, 0.6)

# WITH REAL DATA WHEN CORRELATIONS AVAILABLE
hyp
(S <- inputcov(hyp[c("sbp_se","dbp_se")], cor=hyp$rho))
# CHECK FIRST STUDY
cov2cor(xpndMat(S[1,]))

# USED INTERNALLY IN mvmeta
p53
inputcov(sqrt(p53[c("V1","V2")]), 0.5)
model <- mvmeta(cbind(y1,y2), S=cbind(V1,V2), data=p53, control=list(Scor=0.5))
model$S
# }

Run the code above in your browser using DataLab