コード例 #1
0
        public void AutoCorrelationTest2()
        {
            var tol = 1e-14;
            var n   = 10;
            // make some dummy data
            var a = Generate.LinearSpacedMap(n, 0, 2 * Constants.Pi, Math.Sin);

            var idxs = new int[] { 2, 1, 7 };

            var resFull = Correlation.Auto(a);
            var resLim  = Correlation.Auto(a, 4);

            Assert.AreEqual(4 + 1, resLim.Length);
            for (int i = 0; i < resLim.Length; i++)
            {
                Assert.AreEqual(resFull[i], resLim[i], tol);
            }

            var resRange = Correlation.Auto(a, 3, 6);   // -> Order will be set in function anyways

            Assert.AreEqual(6 - 3 + 1, resRange.Length);
            for (int i = 0; i < resRange.Length; i++)
            {
                Assert.AreEqual(resFull[i], resLim[i], tol);
            }

            var resIdxs = Correlation.Auto(a, idxs);

            Assert.AreEqual(idxs.Length, resIdxs.Length);
            Assert.AreEqual(resFull[2], resIdxs[0], tol);
            Assert.AreEqual(resFull[1], resIdxs[1], tol);
            Assert.AreEqual(resFull[7], resIdxs[2], tol);
        }
コード例 #2
0
        protected void checkCorrelationComplex(IEnumerable <double> vectorA, IEnumerable <double> vectorB)
        {
            var correlationByPearsman = Math.Abs(Correlation.Pearson(vectorA, vectorB));
            var correlationBySpearman = Math.Abs(Correlation.Spearman(vectorA, vectorB));
            var autoCorrelationValue  = Correlation.Auto(vectorB.ToArray());

            Warn.If(correlationByPearsman < 0.7, $"Weak correlation by pearsman, was {correlationByPearsman}");
            Warn.If(correlationBySpearman < 0.7, $"Weak correlation by Spearman, was {correlationBySpearman}");
            Console.WriteLine($"{nameof(correlationByPearsman)}: {correlationByPearsman}");
            Console.WriteLine($"{nameof(correlationBySpearman)}: {correlationBySpearman}");
            var st = new StackTrace();
            var sf = st.GetFrame(1);

            Console.WriteLine($"Complex correlation check for {sf.GetMethod()} done");
        }
コード例 #3
0
        public void AutoCorrelationTest(string fName, double tol)
        {
            var data = Data.ReadAllLines(fName)
                       .Select(line =>
            {
                var vals = line.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
                return(new Tuple <string, string>(vals[0], vals[1]));
            }).ToArray();

            var series   = data.Select(tuple => Double.Parse(tuple.Item1, CultureInfo.InvariantCulture)).ToArray();
            var resNumpy = data.Select(tuple => Double.Parse(tuple.Item2, CultureInfo.InvariantCulture)).ToArray();

            var resMathNet = Correlation.Auto(series);

            for (int i = 0; i < resMathNet.Length; i++)
            {
                Assert.AreEqual(resNumpy[i], resMathNet[i], tol);
            }
        }