See below.
On Fri, Jun 18, 2010 at 7:11 PM, li li <hannah.hlx at gmail.com>
wrote:> Dear all,
> ? I am trying to calculate certain critical values from bivariate normal
> distribution (please see the
> function below).
>
> m <- 10
> rho <- 0.1
> k <- 2
> alpha <- 0.05
> ## calculate critical constants
> 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}
> ? ? ? ? ? ? ? }
>
>
>
> After the critical constants cc_z is calculated, I wanted to check whether
> they are correct.
>
>
>> ##check whether cc_z is correct
>> ?pmvnorm(lower=c(cc_z[1], cc_z[1]),
> upper=Inf,sigma=var)-(k*(k-1))/(n*(n-1))
Shouldn't this be> pmvnorm(lower=c(cc_z[1], cc_z[1]),
+ upper=Inf,sigma=var)-(k*(k-1))/(m*(m-1))*alpha
[1] -5.87e-09
attr(,"error")
[1] 1e-15
attr(,"msg")
[1] "Normal Completion"
This still gives a bit of an error, but you have to take into account
as well that the underlying algorithms use randomized quasi-MC
methods, and that floating point issues can play here as well. So it
looks to me that your calculations are correct.
Cheers
Joris
--
Joris Meys
Statistical consultant
Ghent University
Faculty of Bioscience Engineering
Department of Applied mathematics, biometrics and process control
tel : +32 9 264 59 87
Joris.Meys at Ugent.be
-------------------------------
Disclaimer : http://helpdesk.ugent.be/e-maildisclaimer.php