[R] mvrnorm problem

Torsten Hothorn Torsten.Hothorn at rzmail.uni-erlangen.de
Tue Feb 3 09:50:05 CET 2004



> Stuart V Jordan <sjordan at princeton.edu> writes:
>
> > > mvrnorm(n = 1000,B,V)
> > Error in mu + eS$vectors %*% diag(sqrt(pmax(ev, 0)), p) %*% t(X) :
> >         non-conformable arrays
> > > mvrnorm(n = 1000,t(B),V)
> > Error in mu + eS$vectors %*% diag(sqrt(pmax(ev, 0)), p) %*% t(X) :
> >         non-conformable arrays
>
> You might, for at least two good reasons, have said that this is from
> library(MASS). The point is that
>
> > mvrnorm(n=10,matrix(c(1,1),1,2),diag(2))
> Error in mu + eS$vectors %*% diag(sqrt(pmax(ev, 0)), p) %*% t(X) :
>         non-conformable arrays
> > mvrnorm(n=10,matrix(c(1,1),2,1),diag(2))
> Error in mu + eS$vectors %*% diag(sqrt(pmax(ev, 0)), p) %*% t(X) :
>         non-conformable arrays
> > mvrnorm(n=10,c(1,1),diag(2))
>             [,1]       [,2]
>  [1,]  0.5005327  1.1919216
>  [2,]  2.8273925  2.7004788
>  [3,]  2.6493970  1.1304274
> ....
>
> and the docs quite clearly say that mu wants to be a vector, not a
> matrix.
>
> Curiously enough, this works with rmvnorm from the mvtnorm package by
> Genz, Bretz, and Hothorn, the difference being that this version adds
> in the means with a sweep() operation, whereas mvrnorm just adds mu
> (to the transpose of the ultimate result) and relies on recycling
> rules.

Credits to Fritz: {rd}mvnorm moved from `e1071' to `mvtnorm' for
obvious reasons some time ago.

Best,

Torsten

> I.e. the point is that
>
> > x <- matrix(1:2,1,2)
> > M <- matrix(1:4,2)
> > x+M
> Error in x + M : non-conformable arrays
> > t(x)+M
> Error in t(x) + M : non-conformable arrays
> > c(x)+M
>      [,1] [,2]
> [1,]    2    4
> [2,]    4    6
> > sweep(M,1,x,"+")
>      [,1] [,2]
> [1,]    2    4
> [2,]    4    6
>
>
> --
>    O__  ---- Peter Dalgaard             Blegdamsvej 3
>   c/ /'_ --- Dept. of Biostatistics     2200 Cph. N
>  (*) \(*) -- University of Copenhagen   Denmark      Ph: (+45) 35327918
> ~~~~~~~~~~ - (p.dalgaard at biostat.ku.dk)             FAX: (+45) 35327907
>
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://www.stat.math.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
>
>




More information about the R-help mailing list