This function inputs (co)variance matrices of a set of outcomes given the corresponding standard deviation and correlation values.
inputcov(sd, cor=NULL)
Arguments
sd: a mxk 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 kxk or mxk(k−1)/2 matrix. See Details.
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 kxk matrix, the correlation matrix for the single matrix (only when m=1);
if a mxk(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.
Returns
For a single matrix, the (co)variance matrix itself. For multiple matrices, a mxk(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).
This function is called internally by mixmeta for multivariate models to input the correlation(s) when only the within-unit variances are provided through the argument S. In this case, the correlation values are set through the argument Scor in the control list (see mixmeta.control).
See Also
See xpndMat. See mixmeta.control.
Examples
# SOME RANDOM SD FOR A SINGLE MATRIX, WITH CONSTANT CORRELATION(M <- inputcov(runif(4,0.1,3),0.7))# CHECK CORRELATIONcov2cor(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 AVAILABLEhyp
(S <- inputcov(hyp[c("sbp_se","dbp_se")], cor=hyp$rho))# CHECK FIRST STUDYcov2cor(xpndMat(S[1,]))# USED INTERNALLY IN mixmetap53
inputcov(sqrt(p53[c("V1","V2")]),0.5)model <- mixmeta(cbind(y1,y2), S=cbind(V1,V2), data=p53, control=list(Scor=0.5))model$S