Dimitri Liakhovitski
2011-Feb-07 17:39 UTC
[R] Question about checkTmvArgs function in rtmvnorm (package tmvtnorm)
Hello!
I was wondering if it's possible to see the actual code of
checkTmvArgs function that is part of the code for rtmvnorm (which is
below - I just typed "rtmvnorm" on the prompt). I get an error:
Error in checkTmvArgs(mean, sigma, lower, upper) :
sigma must be a symmetric matrix
At the same time I am pretty sure that the matrix I am passing as
sigma is a var-covar matrix (however, it is NOT a correlation matrix).
Thanks a lot!
Dimitri
function (n, mean = rep(0, nrow(sigma)), sigma = diag(length(mean)),
lower = rep(-Inf, length = length(mean)), upper = rep(Inf,
length = length(mean)), algorithm = c("rejection",
"gibbs",
"gibbsR"), ...)
{
algorithm <- match.arg(algorithm)
cargs <- checkTmvArgs(mean, sigma, lower, upper)
mean <- cargs$mean
sigma <- cargs$sigma
lower <- cargs$lower
upper <- cargs$upper
if (n < 1 || !is.numeric(n) || n != as.integer(n) || length(n) >
1) {
stop("n must be a integer scalar > 0")
}
if (algorithm == "rejection") {
retval <- rtmvnorm.rejection(n, mean, sigma, lower, upper,
...)
}
else if (algorithm == "gibbs") {
retval <- rtmvnorm.gibbs.Fortran(n, mean, sigma, lower,
upper, ...)
}
else if (algorithm == "gibbsR") {
retval <- rtmvnorm.gibbs(n, mean, sigma, lower, upper,
...)
}
return(retval)
}
--
Dimitri Liakhovitski
Ninah Consulting
www.ninah.com
Dimitri Liakhovitski
2011-Feb-07 18:34 UTC
[R] Question about checkTmvArgs function in rtmvnorm (package tmvtnorm)
I found a reason why I was getting the error that my var-covar matrix was not symmetric: because my column names and row names were different! Dimitri On Mon, Feb 7, 2011 at 12:39 PM, Dimitri Liakhovitski <dimitri.liakhovitski at gmail.com> wrote:> Hello! > > I was wondering if it's possible to see the actual code of > checkTmvArgs function that is part of the code for rtmvnorm (which is > below - I just typed "rtmvnorm" on the prompt). I get an error: > > Error in checkTmvArgs(mean, sigma, lower, upper) : > ?sigma must be a symmetric matrix > > At the same time I am pretty sure that the matrix I am passing as > sigma is a var-covar matrix (however, it is NOT a correlation matrix). > > Thanks a lot! > Dimitri > > > function (n, mean = rep(0, nrow(sigma)), sigma = diag(length(mean)), > ? ?lower = rep(-Inf, length = length(mean)), upper = rep(Inf, > ? ? ? ?length = length(mean)), algorithm = c("rejection", "gibbs", > ? ? ? ?"gibbsR"), ...) > { > ? ?algorithm <- match.arg(algorithm) > ? ?cargs <- checkTmvArgs(mean, sigma, lower, upper) > ? ?mean <- cargs$mean > ? ?sigma <- cargs$sigma > ? ?lower <- cargs$lower > ? ?upper <- cargs$upper > ? ?if (n < 1 || !is.numeric(n) || n != as.integer(n) || length(n) > > ? ? ? ?1) { > ? ? ? ?stop("n must be a integer scalar > 0") > ? ?} > ? ?if (algorithm == "rejection") { > ? ? ? ?retval <- rtmvnorm.rejection(n, mean, sigma, lower, upper, > ? ? ? ? ? ?...) > ? ?} > ? ?else if (algorithm == "gibbs") { > ? ? ? ?retval <- rtmvnorm.gibbs.Fortran(n, mean, sigma, lower, > ? ? ? ? ? ?upper, ...) > ? ?} > ? ?else if (algorithm == "gibbsR") { > ? ? ? ?retval <- rtmvnorm.gibbs(n, mean, sigma, lower, upper, > ? ? ? ? ? ?...) > ? ?} > ? ?return(retval) > } > > -- > Dimitri Liakhovitski > Ninah Consulting > www.ninah.com >-- Dimitri Liakhovitski Ninah Consulting www.ninah.com