Hi Spencer, Sorry for not producing code as a worked example.
Here's an example: ================================== # setting the seed number set.seed(0) # creating a correlation matrix corr <- diag(5) corr[lower.tri(corr)] <- 0.5 corr[upper.tri(corr)] <- 0.5 # Data for the minimisation mat <- rmvnorm(10000, mean=c(3, -20, -10, 3, 2), sd=c(0.1, 15, 4, 0.15, 0.8), cov=corr) obj.fun <- function(opt, mat) { opt <- c(opt, 1-sum(opt)) LinearComb <- mat%*%opt obj <- -min(LinearComb) obj } opt <- nlminb(rep(0,4), lower=rep(-3, 4), upper=rep(3, 4), obj.fun, mat=mat) opt.x <- opt$parameters opt.x <- c(opt.x, 1-sum(opt.x)) # using vcov.nlminb from the MASS library to obtain the covariance matrix vcov.nlminb(opt) ==================================== I have a variance-covariance matrix for 4 of the elements in the vector but not the last component. How would I go about getting the entire variance-covariance matrix? Thanks in advance for any help. Regards, John On 09/04/2008, Spencer Graves <[EMAIL PROTECTED]> wrote: > Have you considered optimizing over x1 = x[1:(length(x)-1]? You could > feed a wrapper function 'f2(x1, ...)' that computes xFull = c(x1, 1-sum(x1)) > and feeds that to your 'fn'. > If this makes sense, great. Else, if my answer is not useful, be so kind > as to PLEASE do read the posting guide > http://www.R-project.org/posting-guide.html and provide commented, minimal, > self-contained, reproducible code. > Spencer > > John Pitchard wrote: > > > > > Dear All, > > > > I wanted to post some more details about the query I sent to s-news last > > week. > > > > I have a vector with a constraint. The constraint is that the sum of the > > vector must add up to 1 - but not necessarily positive, i.e. > > > > x[n] <- 1 -(x[1] + ...+x[n-1]) > > > > I perform the optimisation on the vector x such that > > > > x <- c(x, 1-sum(x)) > > > > In other words, > > > > fn <- function(x){ > > x <- c(x, 1 - sum(x)) > > # other calculations here > > } > > > > then feed this into nlminb() > > > > out <- nlminb(x, fn) > > out.x <- out$parameters > > out.x <- c(out.x, 1 - sum(out.x)) > > out.x > > > > I would like to calculate standard errors for each of the components of x. > > Is this possible by outputing the Hessian matrix? Furthermore, how would I > > calculate this for the last component (if this is indeed possible) which has > > the restriction (i.e. 1-sum(out.x))? > > > > Any help would be much appreciated. > > > > Regards, > > John > > > > [[alternative HTML version deleted]] > > > > ______________________________________________ > > R-help@r-project.org mailing list > > https://stat.ethz.ch/mailman/listinfo/r-help > > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > > and provide commented, minimal, self-contained, reproducible code. > > > > > ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.