From ivo at iugrina.com  Thu Jul  9 17:05:27 2009
From: ivo at iugrina.com (Ivo Ugrina)
Date: Thu, 09 Jul 2009 17:05:27 +0200
Subject: [Rd] Improvement of [dpq]wilcox functions
Message-ID: <4A560737.9080005@iugrina.com>

Hi,

I believe I have significantly improved [dpq]wilcox
functions by implementing Harding's algorithm:
Harding, E.F. (1984): An Efficient, Minimal-storage Procedure
for Calculating the Mann-Whitney U, Generalized U and Similar
Distributions, App. Statist., 33, 1-6

Results on my computer show (against R-2.9.1):

> system.time( dwilcox( 800, 800, 80) )
   user  system elapsed
  0.240   0.180   0.443
> system.time( dwilcox( (1:2800), 80, 80) )
   user  system elapsed
  0.290   0.020   0.30
> system.time( dwilcox( (1:2800), 160, 160) )
   user  system elapsed
  0.810   0.060   0.868
> system.time( dwilcox( (1:28000), 210, 210) )
   user  system elapsed
 17.700   0.600  18.313
RAM: ~ 700MB
> system.time( pwilcox( 21000, 211, 211) )
   user  system elapsed
 18.110   0.640  18.762
> system.time( a <- qwilcox( 0.43, 200, 400) )
^C
Timing stopped at: 14.39 1.43 18.794
RAM: > 1.4GB at interrupt time

> system.time( dwilcox(800, 800, 80) )
   user  system elapsed
  0.140   0.000   0.144
> system.time( dwilcox( (1:2800), 80, 80) )
   user  system elapsed
  0.010   0.000   0.007
> system.time( dwilcox( (1:2800), 160, 160) )
   user  system elapsed
  0.020   0.000   0.016
> system.time( dwilcox( (1:28000), 210, 210) )
   user  system elapsed
  0.050   0.000   0.05
RAM: < 1MB
> system.time( pwilcox( 21000, 211, 211) )
   user  system elapsed
  0.020   0.000   0.025
> system.time( a <- qwilcox( 0.43, 200, 400) )
   user  system elapsed
  0.040   0.000   0.07
RAM: < 1MB

There is no more need for
wilcox_free at [dpq]wilcox in src/library/stats/distn.R
(every other call after the first one with the same m,n
will just read the results from the array so it will be
really fast) and for
#define WILCOX_MAX 50 in src/nmath/nmath.h

p.s. modified files are in the attachment

have fun,
-- 
Ivo Ugrina << http://web.math.hr/~iugrina >>
Teaching/Research Assistant at Department of Mathematics
University of Zagreb, Croatia
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: distn.R
URL: <https://stat.ethz.ch/pipermail/r-devel/attachments/20090709/330b9a86/attachment.pl>
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: nmath.h
URL: <https://stat.ethz.ch/pipermail/r-devel/attachments/20090709/330b9a86/attachment.h>
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: wilcox.c
URL: <https://stat.ethz.ch/pipermail/r-devel/attachments/20090709/330b9a86/attachment.c>


[Rd] Improvement of [dpq]wilcox functions
Ivo Ugrina