Hi Sarah,
    Thanks for your kind help. I now know where the problem is.
                        Hannah

2010/5/28 Sarah Goslee <sarah.gos...@gmail.com>

> My  initial guess appears to be right: you're working with something
> exceedingly sensitive to floating point precision. You may have to
> reconsider your methods.
>
> Your problem is:
>
> rho.f(rho = 0.3)
> gives a different answer than
> rho.f(seq(0, 1, by=.1)[4])
>
> even though
> all.equal(0.3, seq(0, 1, by=.1)[4]) == TRUE
>
>
> The only thing rho.f does with rho is passes it to rdata1.mnorm
> so the rest of the function is irrelevant for this question.
>
> The only thing rdata1.mnorm does with rho is passes it to var.f
>
> So we've already ruled out most of your code and narrowed the problem
> down to one small section.
>
> Take a look at this example and run it for yourself:
>
> # starting parameters
> m=30;n=10;mzero=5;mu0=0;mu1=2
> mean1 <- c(rep(mu0, mzero), rep(mu1, m-mzero))
>
> ## make two different var.f() results
>
> varf1 <- var.f(0.3, m, rep(1, m))
> varf2 <- var.f(seq(0, 1, by=0.1)[4], m, rep(1, m))
>
> ## compare them
>
> all.equal(varf1, varf2)
> all(varf1 == varf2)
>
> ## here's where the problem is
> ## The function you're calling is extremely sensitive, and 0.3
> ## cannot be represented exactly.
>
> set.seed(103)
> mvrnorm(n, mean1, varf1)
>
> set.seed(103)
> mvrnorm(n, mean1, varf2)
>
> ## Here's a check on that idea:
>
> set.seed(103)
> mvrnorm(n, mean1, round(varf1, 1))
>
> set.seed(103)
> mvrnorm(n, mean1, round(varf2, 1))
>
>
> #### and compare to this
>
>
> ## make two different var.f() results
>
> varf1 <- var.f(0.2, m, rep(1, m))
> varf2 <- var.f(seq(0, 1, by=0.1)[3], m, rep(1, m))
>
> ## compare them
>
> all.equal(varf1, varf2)
> all(varf1 == varf2)
>
> ## Look: 0.2 can be represented exactly.
>
> set.seed(103)
> mvrnorm(n, mean1, varf1)
>
> set.seed(103)
> mvrnorm(n, mean1, varf2)
>
>
> --
> Sarah Goslee
> http://www.functionaldiversity.org
>

        [[alternative HTML version deleted]]

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to