Nothing
#Written by Andreas Moltner with some revisions by William Revelle
#March, 2010
"glb.algebraic"<-
function(Cov,LoBounds=NULL, UpBounds=NULL)
{ if(!requireNamespace('Rcsdp')) {stop("Rcsdp must be installed to find the glb.algebraic")
}
cl<-match.call()
# check input
p<-dim(Cov)[2]
if (dim(Cov)[1] != p) Cov <- cov(Cov) #find the covariances
if (any(t(Cov)!=Cov))
stop("'Cov' is not symmetric")
if(is.null(LoBounds)) LoBounds <-rep(0,ncol(Cov))
if(is.null(UpBounds)) UpBounds <- diag(Cov)
if (any(LoBounds>UpBounds))
{ stop("'LoBounds'<='UpBounds' violated")
}
# if (min(eigen(Cov,symmetric=TRUE,only.values=TRUE)$values)<0)
# stop("'Cov' is not positive semidefinite")
if (length(LoBounds) != p)
stop("length(LoBounds) != dim(Cov)")
if (length(UpBounds) != p)
stop("length(UpBounds)!=dim(Cov)")
Var<-diag(Cov)
# objective function opt --> min
opt=rep(1,p)
# set up csdp input
C<-list(diag(Var)-Cov,
-UpBounds,LoBounds)
A<-vector("list",p)
for (i in 1:p)
{ b<-rep(0,p)
b[i]<-1
A[[i]]<-list(diag(b),-b,b)
}
K<-list(type=c("s","l","l"),size=rep(p,3))
# call csdp
#control=csdp.control(printlevel=0)
result<- Rcsdp::csdp(C,A,opt,K, control=Rcsdp::csdp.control(printlevel=0))
#result<- Rcsdp::csdp(C,A,opt,K)
if (result$status>=4||result$status==2)
{ warning("Failure of csdp, status of solution=",result$status)
lb<-list(glb=NA,solution=NA,status=result$status,Call=cl)
} else
{ if (result$status!=0)
{ warning("status of solution=",result$status)
}
# greatest lower bound to reliability
item.diag <- result$y
names(item.diag) <- colnames(Cov)
lb<-list(glb=(sum(Cov)-sum(Var)+sum(result$y))/sum(Cov),
solution = item.diag,
status=result$status,
Call=cl)
}
return(lb)
}
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.