int RS_Analysis (const Vector& X, const IntVector& Lag, Vector& RS) { // check argument consistency if (X.Empty() || Lag.Empty() || RS.Empty()) return 1; if (Lag.Lo() != RS.Lo() || Lag.Hi() != RS.Hi()) return 2; int lo = X.Lo(), hi = X.Hi(); // loop through list of time lags for (int i = Lag.Lo(); i <= Lag.Hi(); i++) { int lag = Lag(i); // lag values must be positive if (lag <= 0) return 3; // ndom independent domains of length lag int ndom = (hi-lo) / lag; // lag was larger than length of time sequence if (ndom <= 0) return 4; // average RS over independent domains in the data sequence double RSsum = 0; for (int k = 1, start = lo; k <= ndom; k++, start += lag) { double Ave,Min,Max,Sdev,RSval; RS_Analysis(X,start,lag,Ave,Min,Max,Sdev,RSval); RSsum += RSval; } RS(i) = RSsum/ndom; } return 0; }