View source: R/ridgePgenAndCo.R
ridgePgen.kCV.banded | R Documentation |
Function that calculates of the k-fold cross-validated negative (!) loglikelihood of the generalized ridge precision estimator, with a penalization that encourages a banded precision matrix.
ridgePgen.kCV.banded(lambda, Y, fold=nrow(Y), target,
zeros=matrix(nrow=0, ncol=2),
penalize.diag=TRUE, nInit=100,
minSuccDiff=10^(-5))
lambda |
A |
Y |
Data |
fold |
A |
target |
A semi-positive definite target |
zeros |
A two-column |
penalize.diag |
A |
nInit |
A |
minSuccDiff |
A |
The penalty matrix \boldsymbol{\Lambda}
is parametrized as follows. The elements of \boldsymbol{\Lambda}
are (\boldsymbol{\Lambda})_{j,j'} = \lambda (| j - j'| + 1)
for
j, j' = 1, \ldots, p
.
The function returns a numeric
containing the cross-validated negative loglikelihood.
W.N. van Wieringen.
van Wieringen, W.N. (2019), "The generalized ridge estimator of the inverse covariance matrix", Journal of Computational and Graphical Statistics, 28(4), 932-942.
ridgePgen
# set dimension and sample size
p <- 10
n <- 10
# penalty parameter matrix
lambda <- matrix(1, p, p)
diag(lambda) <- 0.1
# generate precision matrix
Omega <- matrix(0.4, p, p)
diag(Omega) <- 1
Sigma <- solve(Omega)
# data
Y <- mvtnorm::rmvnorm(n, mean=rep(0,p), sigma=Sigma)
S <- cov(Y)
# find optimal penalty parameters through cross-validation
lambdaOpt <- optPenaltyPgen.kCVauto.banded(Y, 10^(-10), 10^(10),
target=matrix(0, p, p),
penalize.diag=FALSE, nInit=100,
minSuccDiff=10^(-5))
# format the penalty matrix
lambdaOptMat <- matrix(NA, p, p)
for (j1 in 1:p){
for (j2 in 1:p){
lambdaOptMat[j1, j2] <- lambdaOpt * (abs(j1-j2)+1)
}
}
# generalized ridge precision estimate
Phat <- ridgePgen(S, lambdaOptMat, matrix(0, p, p))
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.