//TODO: [3] Move Statistics to Implementation/Interfaces.
        public static double GetCorrelationCoefficient(IStatistic X, IStatistic Y)
        {
            int n = (X.n > Y.n) ? X.n : Y.n;

            double sumX        = 0;
            double sumY        = 0;
            double sumXY       = 0;
            double sumXSquared = 0;
            double sumYSquared = 0;

            for (int i = 0; i < n; i++)
            {
                double xSample = X.Mean();
                if (X.n - 1 >= i)
                {
                    xSample = X.Samples[i];
                }
                double ySample = Y.Mean();
                if (Y.n - 1 >= i)
                {
                    ySample = Y.Samples[i];
                }

                sumX        += xSample;
                sumY        += ySample;
                sumXY       += xSample * ySample;
                sumXSquared += xSample * xSample;
                sumYSquared += ySample * ySample;
            }

            return
                ((n * sumXY - sumX * sumY)
                 /
                 (Math.Sqrt
                  (
                      (n * sumXSquared - sumX * sumX) * (n * sumYSquared - sumY * sumY)
                  )
                 ));
        }