[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