This is the mail archive of the gsl-discuss@sources.redhat.com mailing list for the GSL project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Collecting statistics for time dependent data?


Raimondo Giammanco wrote:
Hello,

 I was wondering if there is a way to compute "running" statistics with
gsl.

Yes you can do it, but there's nothing in GSL that does it and its eay enough that you don't need GSL. Something like (untested)

double update_mean( double* mean, int* n, double x ){
  if( *n == 1 )
    *mean = x;
  else
    *mean = (1 - (double)1 / *n ) * *mean + x / n;
}

will work and you can derive a similar method for updating the variance using the usual textbook formula.

var[x] = (1/n) sum x^2_i - mean(x)^2

I don't know if there is a method that avoids the rounding errors. I don't know why so many textbooks repeat this formula without the slightest warning that it can go so badly wrong.

--
JDL


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]