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); }
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"); }
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); } }