[R] Fast R implementation of Gini mean difference

Andrew C. Ward s195404 at student.uq.edu.au
Thu Apr 24 05:17:57 CEST 2003


I have written the following function to calculate the weighted mean
difference for univariate data (see 
http://www.xycoon.com/gini_mean_difference.htm for a related 
formula). Unsurprisingly, the function is slow (compared to sd or mad)
for long vectors. I wonder if there's a way to make the function
faster, short of creating an external C function. Thanks very much
for your advice.


gmd <- function(x, w) { # x=data vector, w=weights vector
   n <- length(x)
   tmp <- 0
   for (i in 1:n) {
      for (j in 1:n) {
         tmp <- tmp + w[i]*abs(x[i]-x[j])
      }
   }
   retval <- 0.5*sqrt(pi)*tmp/((n-1)*sum(w))
}

gmd(rnorm(100))



Regards,

Andrew C. Ward

CAPE Centre
Department of Chemical Engineering
The University of Queensland
Brisbane Qld 4072 Australia
andreww at cheque.uq.edu.au



More information about the R-help mailing list