Skip to content
Back to formatted view

Raw Message

Message-ID: <4DAF633D.1040006@xtra.co.nz>
Date: 2011-04-20T22:50:37Z
From: Rolf Turner
Subject: question regarding qmvnorm
In-Reply-To: <BANLkTin_iP7ZviXcnAjfM8jGxPgEKxwSoA@mail.gmail.com>

On 21/04/11 09:59, li li wrote:
> Dear all,
>      I wrote the following function previously. It worked fine with the old
> mvtnorm package.
> Somehow with the updated package, I got a error message when trying to use
> the function.
> I need some help. It is sort of urgent. Can anyone please take a look. The
> function is the following.
> Thank you very much!
>                                   Hannah

(1) In the first instance you should probably contact the maintainer of
the mvtnorm package:

     require(utils)
     maintainer("mvtnorm")

(2) The code you enclosed indicates that you don't understand anything
about functions.  You have m, rho, k, and alpha given as *arguments*
to your function, and yet you specify them explicitly within the body
of the function.  This makes no sense at all.

If you are going to do something it pays to *understand* what you are
doing rather than just slapping down some code at random and hoping
that it will work.

Delete the first four (non-blank!) lines of your code and then call

cc_f(10,0.1,2,0.5)

This does indeed throw an error --- from uniroot().  As I say, contact the
package maintainer.

     cheers,

         Rolf Turner

> library(mvtnorm)
>
> cc_f<- function(m, rho, k, alpha) {
>
> m<- 10
>
> rho<- 0.1
>
> k<- 2
>
> alpha<- 0.05
>
>
> cc_z<- numeric(m)
>
> var<- matrix(c(1,rho,rho,1), nrow=2, ncol=2, byrow=T)
>
> for (i in 1:m){
>
>     if (i<= k) {cc_z[i]<- qmvnorm((k*(k-1))/(m*(m-1))*alpha, tail="upper",
> sigma=var)$quantile} else
>
>                 {cc_z[i]<- qmvnorm((k*(k-1))/((m-i+k)*(m-i+k-1))*alpha, tail
> ="upper", sigma=var)$quantile}
>
>                 }
>
> cc<- 1-pnorm(cc_z)
>
> return(cc)
>
>                               }