I think the optim() example in the Details section of relist()'s help
page is not totally correct. In particular, in the current form it is
not taken into account that vcov should be a symmetric matrix and only
the parameters in the lower (or upper) triangular part should be optimized.
A possible fix is:
ipar <- list(mean = c(0, 1), vcov = c(1, 1, 0))
initial.param <- as.relistable(ipar)
invvech <- function (x) {
d <- 0.5 * (sqrt(8 * length(x) + 1) - 1)
out <- matrix(0, d, d)
out[lower.tri(out, TRUE)] <- x
ind <- upper.tri(out)
out[ind] <- t(out)[ind]
out
}
ll <- function (param.vector) {
param <- relist(param.vector, skeleton = ipar)
param$vcov <- invvech(param$vcov)
-sum(mvdnorm(x, mean = param$mean,
vcov = param$vcov, log = TRUE))
}
optim(unlist(initial.param), ll)
or another example
Best,
Dimitris
p.s.,
> R.Version()
$platform
[1] "i386-pc-mingw32"
$arch
[1] "i386"
$os
[1] "mingw32"
$system
[1] "i386, mingw32"
$status
[1] ""
$major
[1] "2"
$minor
[1] "8.1"
$year
[1] "2008"
$month
[1] "12"
$day
[1] "22"
$`svn rev`
[1] "47281"
$language
[1] "R"
$version.string
[1] "R version 2.8.1 (2008-12-22)"
--
Dimitris Rizopoulos
Assistant Professor
Department of Biostatistics
Erasmus Medical Center
Address: PO Box 2040, 3000 CA Rotterdam, the Netherlands
Tel: +31/(0)10/7043478
Fax: +31/(0)10/7043014
______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel