### Question:
Descriptives { public static double autocorrelation(FlatDataList flatDataList, int lags) { int n = count(flatDataList); if(n<=0 || lags<=0 || n<lags) { throw new IllegalArgumentException("All the parameters must be positive and n larger than lags."); } FlatDataCollection flatDataCollection = flatDataList.toFlatDataCollection(); double mean = mean(flatDataCollection); double variance = variance(flatDataCollection, true); double Ak=0.0; int maxI=n-lags; for(int i=0;i<maxI;++i) { Ak += (flatDataList.getDouble(i) - mean)* (flatDataList.getDouble(i+lags) - mean); } Ak/=(n-lags); double autocorrelation = Ak/variance; return autocorrelation; }  static int count(Iterable it); static double sum(FlatDataCollection flatDataCollection); static double mean(FlatDataCollection flatDataCollection); static double meanSE(FlatDataCollection flatDataCollection); static double median(FlatDataCollection flatDataCollection); static double min(FlatDataCollection flatDataCollection); static double max(FlatDataCollection flatDataCollection); static double minAbsolute(FlatDataCollection flatDataCollection); static double maxAbsolute(FlatDataCollection flatDataCollection); static double range(FlatDataCollection flatDataCollection); static double geometricMean(FlatDataCollection flatDataCollection); static double harmonicMean(FlatDataCollection flatDataCollection); static double variance(FlatDataCollection flatDataCollection, boolean isSample); static double std(FlatDataCollection flatDataCollection, boolean isSample); static double cv(double std, double mean); static double moment(FlatDataCollection flatDataCollection, int r); static double moment(FlatDataCollection flatDataCollection, int r, double mean); static double kurtosis(FlatDataCollection flatDataCollection); static double kurtosisSE(FlatDataCollection flatDataCollection); static double skewness(FlatDataCollection flatDataCollection); static double skewnessSE(FlatDataCollection flatDataCollection); static AssociativeArray percentiles(FlatDataCollection flatDataCollection, int cutPoints); static AssociativeArray quartiles(FlatDataCollection flatDataCollection); static double covariance(TransposeDataList transposeDataList, boolean isSample); static double autocorrelation(FlatDataList flatDataList, int lags); static AssociativeArray frequencies(FlatDataCollection flatDataCollection); static FlatDataCollection mode(FlatDataCollection flatDataCollection); static void normalize(AssociativeArray associativeArray); static void normalizeExp(AssociativeArray associativeArray);  }### Answer:
@Test public void testAutocorrelation() { logger.info("autocorrelation"); FlatDataList flatDataList = generateFlatDataCollection().toFlatDataList(); int lags = 1; double expResult = -0.014242212135952; double result = Descriptives.autocorrelation(flatDataList, lags); assertEquals(expResult, result, Constants.DOUBLE_ACCURACY_HIGH); }