Kappa.R
Kappa <-
function(beta, X, Y, lambda_kappa,regularize_mat_kappa){
if (missing(regularize_mat_kappa)){
regularize_mat_kappa <- matrix(TRUE, ncol(Y), ncol(Y))
diag(regularize_mat_kappa) <- FALSE
}
n <- nrow(Y)
SigmaR <- 1/n * t(Y - X %*% beta) %*% (Y - X %*% beta)
if (any(eigen(SigmaR,only.values = TRUE)$values < -sqrt(.Machine$double.eps))){
stop("Residual covariance matrix is not non-negative definite")
}
res <- glasso(SigmaR, regularize_mat_kappa * lambda_kappa)
return(as.matrix(forceSymmetric(res$wi)))
}