Example #1
0
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;
}