Learn R Programming

bWGR (version 2.2.10)

WGR3 (MV): Multivariate Regression

Description

Multivariate model to find breeding values.

Usage

mkr(Y,K,...)
  mrr(Y,X,...)
  mrr_float(Y,X,...)

Value

Returns a list with the random effect covariances (Vb), residual variances (Ve), genetic correlations (GC), matrix with marker effects (b) or eigenvector effects (if mkr), intercepts (mu), heritabilities (h2), and a matrix with fitted values (hat).

NOTE: Numeric stability is a serious concern with multivariate models with large number of response variables, as the covariance matrix is often not invesible. If output is filled with NAs, try using MRR3 and play with some parameters. For example, one may try adding priors to stabilize variances, e.g., fit=MRR3(Y,X,df0=20).

Arguments

Y

Numeric matrix of observations x trait. NA is allowed.

K

Numeric matrix containing the relationship matrix.

X

Numeric matrix containing the genotyping matrix.

...

Arguments to pass to MRR3/MRR3F. See args(MRR3).

Author

Alencar Xavier, David Habier

Details

Algorithm is described in Xavier and Habier (2022). The model for the ridge regression (mrr) is as follows:

$$Y = Mu + XB + E$$

where \(Y\) is a matrix of response variables, \(Mu\) represents the intercepts, \(X\) is the matrix of genotypic information, \(B\) is the matrix of marker effects, and \(E\) is the residual matrix.

The model for the kernel regression (mkr) is as follows:

$$Y = Mu + UB + E$$

where \(Y\) is a matrix of response variables, \(Mu\) represents the intercepts, \(U\) is the matrix of Eigenvector of K, \(b\) is a vector of regression coefficients and \(E\) is the residual matrix.

Algorithm: Residuals are assumed to be independent among traits. Regression coefficients are solved via a multivaraite adaptation of Gauss-Seidel Residual Update. Since version 2.0, the solver of mrr is based on the Randomized Gauss-Seidel algorithm. Variance and covariance components are solved with an EM-REML like approach proposed by Schaeffer called Pseudo-Expectation.

Other related implementations:

01) mkr2X(Y,K1,K2): Solves multi-trait kernel regressions with two random effects.

02) mrr2X(Y,X1,X2): Solves multi-trait ridge regressions with two random effects.

03) MRR3(Y,X,...): Extension of mrr with additional parameters.

04) MRR3F(Y,X,...): MRR3 running on float.

05) mrr_svd(Y,W): Solves mrr through the principal components of parameters.

06) MLM(Y,X,Z,maxit=500,logtol=-8,cores=1): Multivariate model with fixed effects.

07) SEM(Y,Z,...): Fits a MegaSEM with both shared- and trait-specific terms.

08) MEGA(Y,X,npc=-1): Toy implementation of MegaLMM, imputing missing with GEBVs.

09) GSEM(Y,X,npc=-1): Toy C++ implementaiton of MegaSEM, jointly fits FA and XB.

10) ZSEMF(Y,X,npc=0): Full-rank MegaSEM, float precision.

11) YSEMF(Y,X,npc=-1): Reduced-rank MegaSEM, float, two-steps approach.

12) XSEMF(Y,X,npc=0): Full-rank MegaSEM, h2 fixed at 0.5, float precision.

In GSEM, XSEMF and MEGA, 'npc' means number of latent spaces if input is above zero, otherwise, 0 means all and -1 means 2*sqrt(ncol(Y)).

References

Xavier, A and Habier, D. (2022). A new approach fits multivariate genomic prediction models efficiently. GSE, DOI: 10.1186/s12711-022-00730-w

Examples

Run this code
    
    # Load genomic data
    
    data(tpod)
    X = CNT(gen)
    
    # Simulate phenotyp
    
    sim = SimY(X)
    Y = sim$Y
    TBV = sim$tbv
    
    # Fit regression model
    
    test = mrr(Y,X)
    
    # Genetic correlation
    
    test$GC
    
    # Heritabilies
    
    test$h2
    
    # Accuracy
    
    diag(cor(TBV,test$hat))
    
    # try: demo(multivariates)

Run the code above in your browser using DataLab