Mean() public static method

Computes the Mean direction of the given angles.
public static Mean ( double angles ) : double
angles double A double array containing the angles in radians.
return double
Ejemplo n.º 1
0
        /// <summary>
        ///   Computes the circular kurtosis of the given circular angles.
        /// </summary>
        ///
        /// <param name="angles">A double array containing the angles in radians.</param>
        ///
        /// <returns>The circular kurtosis for the given <paramref name="angles"/>.</returns>
        ///
        public static double Kurtosis(double[] angles)
        {
            // Compute mean direction
            double theta = Circular.Mean(angles);

            // Compute central moments
            double rho2 = CentralMoments(angles, 2).Magnitude;
            double mu2  = NoncentralMoments(angles, 2).Phase;

            // compute skewness
            double k = 0;

            for (int i = 0; i < angles.Length; i++) // Pewsey, Metrika, 2004
            {
                k += Math.Cos(2 * Circular.Distance(angles[i], theta));
            }
            k /= angles.Length;

            /*
             * double k0 = 0;
             * double R4 = (R * R * R * R);
             * double omR2 = (1 - R) * (1 - R);
             * for (int i = 0; i < angles.Length; i++) // Fisher, Circular Statistics, p. 34
             *  k0 += (rho2 * Math.Cos(Circular.Distance(mu2, 2 * theta)) - R4) / omR2; // (formula 2.30)
             */

            return(k);
        }
Ejemplo n.º 2
0
        /// <summary>
        ///   Computes the circular skewness of the given circular angles.
        /// </summary>
        ///
        /// <param name="angles">A double array containing the angles in radians.</param>
        ///
        /// <returns>The circular skewness for the given <paramref name="angles"/>.</returns>
        ///
        public static double Skewness(double[] angles)
        {
            // compute necessary values
            double theta = Circular.Mean(angles);

            Complex m    = CentralMoments(angles, 2);
            double  rho2 = m.Magnitude;
            double  mu2  = m.Phase;

            // compute skewness
            double b = 0; // Pewsey, Metrika, 2004

            for (int i = 0; i < angles.Length; i++)
            {
                b += Math.Sin(2 * Distance(angles[i], theta));
            }
            b /= angles.Length;

            /*
             * // alternative skewness measure from Fisher
             * // Statistical Analysis of Circular Data, p. 34
             * double b0 = 0; // (formula 2.29)
             * double omR = Math.Pow(1 - R, 3 / 2.0);
             *
             * for (int i = 0; i < angles.Length; i++)
             *  b0 += rho2 * Math.Sin(Distance(mu2, 2 * theta)) / omR;
             */

            return(b);
        }