This algorithm is based on Kang et al. (2008), it is based on REML using the ridge regression parameter lambda as the ration of Var(e)/Var(u). This handles models of the form:.
y = Xb + Zu + e
.
b ~ N[b.hat, 0] zero variance because is a fixed term
u ~ N[0, K*sigma(u)] where: K*sigma(u) = G
e ~ N[0, I*sigma(e)] where: I*sigma(e) = R
y ~ N[Xb, var(Zu+e)] where;
var(y) = var(Zu+e) = ZGZ+R = V which is the phenotypic variance
.
The function allows the user to specify the incidence matrices for the random effect "u" as Z and its variance-covariance matrix as K, only one Z and K for one random effect.
.
The likelihood function optimized in this algorithm is:
.
logL = (n - p) * log(sum(eta^2/{ lambda + delta})) + sum(log(lambda + delta))
.
where:
(n-p) refers to the degrees of freedom
lambda are the eigenvalues mentioned by Kang et al.(2008)
delta is the REML estimator of the ridge parameter
.
The algorithm can be summarized in the next steps:
.
1) provide initial value for the ridge parameter
2) estimate S = I - X(X'X)-X'
3) obtain the phenotypic variance V = ZKZ' + delta.prov*I
4) perform an eigen decomposition of SVS
5) create "lambda"" as the eigenvalues of SVS and "U"" as the eigenvectors
6) estimate eta=U'y
7) optimize the likelihood shown above providing "eta", "lambdas" and optimize with respect to "delta" which is the ridge parameter and contains Ve/Vu