Beispiel #1
0
        /// <summary>
        /// Returns standard deviation aggregator with all values in a collection aggregated.
        /// </summary>
        public static StdDevAggregator Calculate(IEnumerable <double> values)
        {
            var aggregator = new StdDevAggregator();

            foreach (var value in values)
            {
                aggregator.Add(value);
            }
            return(aggregator);
        }
Beispiel #2
0
        public static double Correlation(double[] X, double[] Y)
        {
            if (X == null || Y == null ||
                X.Length != Y.Length)
            {
                return(double.NaN);
            }

            var varianceCalcX = StdDevAggregator.Calculate(X);
            var varianceCalcY = StdDevAggregator.Calculate(Y);

            double corr  = 0;
            double meanX = varianceCalcX.Mean;
            double meanY = varianceCalcY.Mean;
            double varX  = varianceCalcX.SampleVariance;
            double varY  = varianceCalcY.SampleVariance;

            for (int i = 0; i < X.Length; i++)
            {
                corr += (X[i] - meanX) * (Y[i] - meanY);
            }
            corr /= Math.Sqrt(varX * varY) * X.Length;
            return(corr);
        }