hexbin icon indicating copy to clipboard operation
hexbin copied to clipboard

Tests warning: `RNGkind: Marsaglia-Multicarry has poor statistical properties`

Open barracuda156 opened this issue 1 year ago • 0 comments

This is on PowerPC 32-bit (which may matter for rounding). Test pass, but I see this:

* checking tests ...
  Running ‘hdiffplot.R’
  Comparing ‘hdiffplot.Rout’ to ‘hdiffplot.Rout.save’ ...12,13d11
< 3: In RNGkind("Marsaglia-Multicarry", "Buggy Kinderman-Ramage", "Rounding") :
<   RNGkind: Marsaglia-Multicarry has poor statistical properties
  Running ‘hray.R’
  Comparing ‘hray.Rout’ to ‘hray.Rout.save’ ... OK
  Running ‘large.R’
  Comparing ‘large.Rout’ to ‘large.Rout.save’ ... OK
  Running ‘viewp-ex.R’
  Comparing ‘viewp-ex.Rout’ to ‘viewp-ex.Rout.save’ ... OK
 OK

Output for the test in question:

R version 3.6.0 (2019-04-26) -- "Planting of a Tree"
Copyright (C) 2019 The R Foundation for Statistical Computing
Platform: x86_64-pc-linux-gnu (64-bit)

> library(hexbin)
> 
> if(R.version$major != "1" || as.numeric(R.version$minor) >= 7)
+     RNGversion("1.6")
Warning messages:
1: In RNGkind("Marsaglia-Multicarry", "Buggy Kinderman-Ramage", "Rounding") :
  buggy version of Kinderman-Ramage generator used
2: In RNGkind("Marsaglia-Multicarry", "Buggy Kinderman-Ramage", "Rounding") :
  non-uniform 'Rounding' sampler used
> set.seed(213)
> x1 <- rnorm(10000)
> y1 <- rnorm(10000)
> 
> x2 <- rnorm(10000,mean = .3)
> y2 <- rnorm(10000,mean = .3)
> 
> rx <- range(x1,x2)
> ry <- range(y1,y2)
> 
> str(bin1 <- hexbin(x1,y1, xbnds = rx, ybnds = ry))
Formal class 'hexbin' [package "hexbin"] with 16 slots
  ..@ cell  : int [1:535] 16 20 48 70 74 75 76 80 99 101 ...
  ..@ count : int [1:535] 1 1 1 1 1 1 1 1 1 1 ...
  ..@ xcm   : num [1:535] 0.37 1.338 0.721 -1.846 -0.965 ...
  ..@ ycm   : num [1:535] -3.66 -3.71 -3.54 -3.2 -3.24 ...
  ..@ xbins : num 30
  ..@ shape : num 1
  ..@ xbnds : num [1:2] -3.8 4.3
  ..@ ybnds : num [1:2] -3.71 4.17
  ..@ dimen : num [1:2] 36 31
  ..@ n     : int 10000
  ..@ ncells: int 535
  ..@ call  : language hexbin(x = x1, y = y1, xbnds = rx, ybnds = ry)
  ..@ xlab  : chr "x1"
  ..@ ylab  : chr "y1"
  ..@ cID   : NULL
  ..@ cAtt  : int(0) 
> str(bin2 <- hexbin(x2,y2, xbnds = rx, ybnds = ry))
Formal class 'hexbin' [package "hexbin"] with 16 slots
  ..@ cell  : int [1:545] 41 51 75 76 104 107 110 114 136 138 ...
  ..@ count : int [1:545] 1 1 1 1 1 2 1 1 2 1 ...
  ..@ xcm   : num [1:545] -1.141 1.445 -0.493 -0.324 -0.995 ...
  ..@ ycm   : num [1:545] -3.42 -3.45 -3.24 -3.35 -2.9 ...
  ..@ xbins : num 30
  ..@ shape : num 1
  ..@ xbnds : num [1:2] -3.8 4.3
  ..@ ybnds : num [1:2] -3.71 4.17
  ..@ dimen : num [1:2] 36 31
  ..@ n     : int 10000
  ..@ ncells: int 545
  ..@ call  : language hexbin(x = x2, y = y2, xbnds = rx, ybnds = ry)
  ..@ xlab  : chr "x2"
  ..@ ylab  : chr "y2"
  ..@ cID   : NULL
  ..@ cAtt  : int(0) 
> 
> str(erode(bin1))
Formal class 'erodebin' [package "hexbin"] with 19 slots
  ..@ eroded: logi [1:535] FALSE FALSE FALSE FALSE FALSE FALSE ...
  ..@ cdfcut: num 0.5
  ..@ erode : int [1:71] 12 35 34 57 52 4 30 101 138 150 ...
  ..@ cell  : int [1:535] 16 20 48 70 74 75 76 80 99 101 ...
  ..@ count : int [1:535] 1 1 1 1 1 1 1 1 1 1 ...
  ..@ xcm   : num [1:535] 0.37 1.338 0.721 -1.846 -0.965 ...
  ..@ ycm   : num [1:535] -3.66 -3.71 -3.54 -3.2 -3.24 ...
  ..@ xbins : num 30
  ..@ shape : num 1
  ..@ xbnds : num [1:2] -3.8 4.3
  ..@ ybnds : num [1:2] -3.71 4.17
  ..@ dimen : num [1:2] 36 31
  ..@ n     : int 10000
  ..@ ncells: int 535
  ..@ call  : language hexbin(x = x1, y = y1, xbnds = rx, ybnds = ry)
  ..@ xlab  : chr "x1"
  ..@ ylab  : chr "y1"
  ..@ cID   : NULL
  ..@ cAtt  : int(0) 
> 
> str(smbin1 <- smooth.hexbin(bin1))
Formal class 'smoothbin' [package "hexbin"] with 17 slots
  ..@ wts   : num [1:3] 48 4 1
  ..@ cell  : int [1:906] 17 18 19 21 22 23 51 52 53 54 ...
  ..@ count : int [1:906] 1 1 1 1 1 1 1 4 5 2 ...
  ..@ xcm   : num [1:535] 0.37 1.338 0.721 -1.846 -0.965 ...
  ..@ ycm   : num [1:535] -3.66 -3.71 -3.54 -3.2 -3.24 ...
  ..@ xbins : num 34
  ..@ shape : num 1
  ..@ xbnds : num [1:2] -4.34 4.84
  ..@ ybnds : num [1:2] -4.23 4.7
  ..@ dimen : num [1:2] 40 35
  ..@ n     : int 10000
  ..@ ncells: int 535
  ..@ call  : language hexbin(x = x1, y = y1, xbnds = rx, ybnds = ry)
  ..@ xlab  : chr "x1"
  ..@ ylab  : chr "y1"
  ..@ cID   : NULL
  ..@ cAtt  : int(0) 
> (smbin2 <- smooth.hexbin(bin2))
'hexbin' object from call: hexbin(x = x2, y = y2, xbnds = rx, ybnds = ry) 
n = 10000  points in	nc = 545  hexagon cells in grid dimensions  40 by 35 
> 
> str(erodebin1 <- erode.hexbin(smbin1))
Formal class 'erodebin' [package "hexbin"] with 19 slots
  ..@ eroded: logi [1:906] FALSE FALSE FALSE FALSE FALSE FALSE ...
  ..@ cdfcut: num 0.5
  ..@ erode : int [1:73] 11 35 95 100 117 88 6 39 167 232 ...
  ..@ cell  : int [1:906] 17 18 19 21 22 23 51 52 53 54 ...
  ..@ count : int [1:906] 1 1 1 1 1 1 1 4 5 2 ...
  ..@ xcm   : num [1:535] 0.37 1.338 0.721 -1.846 -0.965 ...
  ..@ ycm   : num [1:535] -3.66 -3.71 -3.54 -3.2 -3.24 ...
  ..@ xbins : num 34
  ..@ shape : num 1
  ..@ xbnds : num [1:2] -4.34 4.84
  ..@ ybnds : num [1:2] -4.23 4.7
  ..@ dimen : num [1:2] 40 35
  ..@ n     : int 10000
  ..@ ncells: int 535
  ..@ call  : language hexbin(x = x1, y = y1, xbnds = rx, ybnds = ry)
  ..@ xlab  : chr "x1"
  ..@ ylab  : chr "y1"
  ..@ cID   : NULL
  ..@ cAtt  : int(0) 
> (erodebin2 <- erode.hexbin(smbin2))
'hexbin' object from call: hexbin(x = x2, y = y2, xbnds = rx, ybnds = ry) 
n = 10000  points in	nc = 545  hexagon cells in grid dimensions  40 by 35 
> 
> if(FALSE)## does not work -- what funny stuff is hdiffplot() doing???
+     par(mfrow = c(2,1))
> 
> if(exists("hdiffplot", mode="function")) { ## not yet in new hexbin
+ hdiffplot(bin1,bin2, main = "Original N(0,*) Random bins")
+ 
+ hdiffplot(smbin1,smbin2, main = "smooth.hexbin() smoothed bins")
+ 
+ plot.new()
+ hdiffplot(erodebin1,erodebin2, main = "erode.hexbin()d smoothed bins")
+ }# not yet
> 
> proc.time()
   user  system elapsed 
  0.340   0.015   0.347 

barracuda156 avatar Apr 17 '24 06:04 barracuda156