[R-SIG-Mac] bug in polychor with R 2.6.0
William Revelle
lists at revelle.net
Mon Sep 17 01:51:51 CEST 2007
Ben,
At 7:15 PM -0400 9/16/07, Ben Bolker wrote:
> Has anyone noticed that the problem (whatever it is)
>seems to occur in code from the included mvtnorm
>package (specifically the guts of the
>mvt() function), *not* the polycor package?
>[cc'd to mvtnorm package maintainer]
At least that solves the polychor problem. You are right.
I tried it with just the mvtnorm package and the error occurs.
Error trace follows:
> sessionInfo()
R version 2.6.0 alpha (2007-09-15 r42871)
i386-apple-darwin8.10.1
locale:
en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] mvtnorm_0.8-1
> example(pmvnorm)
pmvnrm> n <- 5
pmvnrm> mean <- rep(0, 5)
pmvnrm> lower <- rep(-1, 5)
pmvnrm> upper <- rep(3, 5)
pmvnrm> corr <- diag(5)
pmvnrm> corr[lower.tri(corr)] <- 0.5
pmvnrm> corr[upper.tri(corr)] <- 0.5
pmvnrm> prob <- pmvnorm(lower, upper, mean, corr)
*** caught bus error ***
address 0x0, cause 'non-existent physical address'
Traceback:
1: .Fortran("mvtdst", N = as.integer(n), NU = as.integer(df), LOWER
= as.double(lower), UPPER = as.double(upper), INFIN =
as.integer(infin), CORREL = as.double(corrF), DELTA =
as.double(delta), MAXPTS = as.integer(maxpts), ABSEPS =
as.double(abseps), RELEPS = as.double(releps), error =
as.double(error), value = as.double(value), inform =
as.integer(inform), PACKAGE = "mvtnorm")
2: mvt(lower = lower, upper = upper, df = 0, corr = corr, delta =
mean, maxpts = maxpts, abseps = abseps, releps = releps)
3: pmvnorm(lower, upper, mean, corr)
4: eval.with.vis(expr, envir, enclos)
5: eval.with.vis(ei, envir)
6: source(zfile, local, echo = echo, prompt.echo =
paste(prompt.prefix, getOption("prompt"), sep = ""),
continue.echo = paste(prompt.prefix, getOption("continue"), sep =
""), verbose = verbose, max.deparse.length = Inf, encoding =
encoding, skip.echo = skips)
7: example(pmvnorm)
Bill
>>On Sep 15, 2007, at 10:49 AM, William Revelle wrote:
>>
>>
>>>John,
>>> I have been testing out R2.6.0 alpha to see if my psych package
>>>works. I am running the R Gui for the Mac.
>>>
>>>There seems to be a problem with the polychor function in your
>>>polycor package. I think this might be a general problem with R
>>>2.6.0 alpha but I am not sure. I am copying the R mac list to see
>>>if this is a general problem with the alpha gui.
>>>
>>>Bill
>>>
>>>
>>> From a clean start
>>>
>>>[Workspace restored from /Volumes/WR/bill/.RData]
>>>
>>>
>>>> version
>>>>
>>> _
>>>platform i386-apple-darwin8.10.1
>>>arch i386
>>>os darwin8.10.1
>>>system i386, darwin8.10.1
>>>status alpha
>>>major 2
>>>minor 6.0
>>>year 2007
>>>month 09
>>>day 14
>>>svn rev 42851
>>>language R
>>>version.string R version 2.6.0 alpha (2007-09-14 r42851)
>>>
>>>
>>>
>>>> library(polycor)
>>>>
>>>Loading required package: mvtnorm
>>>
>>>> ?polychor #to get the help file with the following demo
>>>> set.seed(12345)
>>>> data <- rmvnorm(1000, c(0, 0), matrix(c(1, .5, .5, 1), 2, 2))
>>>> x <- data[,1]
>>>> y <- data[,2]
>>>> cor(x, y) # sample correlation
>>>>
>>>[1] 0.5285446
>>>
>>>> x <- cut(x, c(-Inf, .75, Inf))
>>>> y <- cut(y, c(-Inf, -1, .5, 1.5, Inf))
>>>> polychor(x, y) # 2-step estimate
>>>>
>>> *** caught bus error ***
>>>address 0x0, cause 'non-existent physical address'
>>>
>>>Traceback:
>>> 1: .Fortran("mvtdst", N = as.integer(n), NU = as.integer(df), LOWER
>>>= as.double(lower), UPPER = as.double(upper), INFIN =
>>>as.integer(infin), CORREL = as.double(corrF), DELTA =
>>>as.double(delta), MAXPTS = as.integer(maxpts), ABSEPS =
>>>as.double(abseps), RELEPS = as.double(releps), error =
>>>as.double(error), value = as.double(value), inform =
>>>as.integer(inform), PACKAGE = "mvtnorm")
>>> 2: mvt(lower = lower, upper = upper, df = 0, corr = corr, delta =
>>>mean, maxpts = maxpts, abseps = abseps, releps = releps)
>>> 3: pmvnorm(lower = c(row.cuts[i], col.cuts[j]), upper = c(row.cuts[i
>>>+ 1], col.cuts[j + 1]), corr = R)
>>> 4: binBvn(rho, row.cuts, col.cuts)
>>> 5: f(arg, ...)
>>> 6: function (arg) f(arg, ...)(-0.23606797749979)
>>> 7: optimise(f, interval = c(-1, 1))
>>> 8: polychor(x, y)
>>>
--
William Revelle http://personality-project.org/revelle.html
Professor http://personality-project.org/personality.html
Department of Psychology http://www.wcas.northwestern.edu/psych/
Northwestern University http://www.northwestern.edu/
Use R for statistics: http://personality-project.org/r
More information about the R-SIG-Mac
mailing list