| smoothLG | R Documentation | 
Smoothing an indefinite matrix to a PSD matrix via theory described by Lurie and Goldberg
smoothLG(
  R,
  start.val = NULL,
  Wghts = NULL,
  PD = FALSE,
  Penalty = 50000,
  eps = 1e-07
)
R | 
 Indefinite Matrix.  | 
start.val | 
 Optional vector of start values for Cholesky factor of S.  | 
Wghts | 
 An optional matrix of weights such that the objective function minimizes wij(rij - sij)^2, where wij is Wghts[i,j].  | 
PD | 
 Logical (default = FALSE). If PD = TRUE then the objective function will smooth the least squares solution to insure Positive Definitness.  | 
Penalty | 
 A scalar weight to scale the Lagrangian multiplier. Default = 50000.  | 
eps | 
 A small value to add to zero eigenvalues if smoothed matrix must be PD. Default = 1e-07.  | 
RLG | 
 Lurie Goldberg smoothed matrix.  | 
RKB | 
 Knol and Berger smoothed matrix.  | 
convergence | 
 0 = converged solution, 1 = convergence failure.  | 
start.val | 
 Vector of start.values.  | 
gr | 
 Analytic gradient at solution.  | 
Penalty | 
 Scalar used to scale the Lagrange multiplier.  | 
PD | 
 User-supplied value of PD.  | 
Wghts | 
 Weights used to scale the squared euclidean distances.  | 
eps | 
 Value added to zero eigenvalue to produce PD matrix.  | 
Niels Waller
data(BadRLG)
out<-smoothLG(R = BadRLG, Penalty = 50000)
cat("\nGradient at solution:", out$gr,"\n")
cat("\nNearest Correlation Matrix\n")
print( round(out$RLG,8) )
################################
##  Rousseeuw Molenbergh example
data(BadRRM)
out <- smoothLG(R = BadRRM, PD=TRUE)
cat("\nGradient at solution:", out$gr,"\n")
cat("\nNearest Correlation Matrix\n")
print( round(out$RLG,8) )
## Weights for the weighted solution
W <- matrix(c(1,  1, .5,
              1,  1,  1,
              .5,  1,  1), nrow = 3, ncol = 3)
tmp <- smoothLG(R = BadRRM,  PD = TRUE, eps=.001)
cat("\nGradient at solution:", out$gr,"\n")
cat("\nNearest Correlation Matrix\n")
print( round(out$RLG,8) )
print( eigen(out$RLG)$val )
## Rousseeuw Molenbergh 
## non symmetric matrix
T <- matrix(c(.8, -.9, -.9, 
            -1.2,  1.1, .3, 
             -.8, .4, .9),  nrow = 3, ncol = 3,byrow=TRUE)
out <- smoothLG(R = T,  PD = FALSE, eps=.001)
cat("\nGradient at solution:", out$gr,"\n")
cat("\nNearest Correlation Matrix\n")
print( round(out$RLG,8) )    
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.