コード例 #1
0
        public void MeanTest()
        {
            {
                // test doubles
                var threadId   = Thread.CurrentThread.ManagedThreadId;
                var doubleList = rng.InclusiveList(-1e12, 1e12, Count);
                Assert.NotNull(doubleList, $"MeanTest: DoubleList is null!");
                Assert.AreEqual(doubleList.Count, Count, $"doubleList.Count {doubleList.Count} != {Count}");
                var reference          = MathNet.Numerics.Statistics.ArrayStatistics.Mean(doubleList.ToArray());
                var referenceStreaming = MathNet.Numerics.Statistics.StreamingStatistics.Mean(doubleList);
                Assert.AreEqual(reference / referenceStreaming, 1.0, EPSILON);

                var stats = new RollingStatistics <double>(doubleList);
                Assert.That(stats.Mean / reference, Is.EqualTo(1.0).Within(EPSILON),
                            $"RollingStatistics<double>.Mean {stats.Mean} != MathNet Mean {reference} Difference: {stats.Mean - reference}");
                stats = new RollingStatistics <double>(doubleList[0]);
                for (int i = 1; i < doubleList.Count; i++)
                {
                    stats.Add(doubleList[i]);
                }
                Assert.That(stats.Mean / reference, Is.EqualTo(1.0).Within(EPSILON),
                            $"RollingStatistics<double>.Mean {stats.Mean} != MathNet Mean {reference} Difference: {stats.Mean - reference}");
            }
            {
                // test ints
                var intList    = rng.InclusiveList(int.MaxValue / 10, int.MinValue / 10, Count);
                var doubleList = intList.Select(i => ((IConvertible)i).ToDouble(null));
                Assert.NotNull(intList, $"MeanTest: intList is null!");
                Assert.AreEqual(intList.Count, 100, $"intList.Count {intList.Count} != {Count}");
                var reference          = MathNet.Numerics.Statistics.ArrayStatistics.Mean(doubleList.ToArray());
                var referenceStreaming = MathNet.Numerics.Statistics.StreamingStatistics.Mean(doubleList);
                Assert.AreEqual(reference / referenceStreaming, 1.0, EPSILON);

                var stats = new RollingStatistics <int>(intList);
                Assert.That(stats.Mean / reference, Is.EqualTo(1.0).Within(EPSILON),
                            $"RollingStatistics<int>.Mean {stats.Mean} != MathNet Mean {reference} Difference: {stats.Mean - reference}");
                stats = new RollingStatistics <int>(intList[0]);
                for (int i = 1; i < intList.Count; i++)
                {
                    stats.Add(intList[i]);
                }
                Assert.That(stats.Mean / reference, Is.EqualTo(1.0).Within(EPSILON),
                            $"RollingStatistics<int>.Mean {stats.Mean} != MathNet Mean {reference} Difference: {stats.Mean - reference}");
            }
        }
コード例 #2
0
        public void StdDevTest()
        {
            {
                // test doubles
                var doubleList = rng.InclusiveList(-1e12, 1e12, Count);
                Assert.NotNull(doubleList, $"StdDevTest: DoubleList is null!");
                Assert.AreEqual(doubleList.Count, 100, $"doubleList.Count {doubleList.Count} != {Count}");
                var reference = MathNet.Numerics.Statistics.Statistics.StandardDeviation(doubleList);

                var stats = new RollingStatistics <double>(doubleList);
                Assert.That(reference, Is.EqualTo(stats.StandardDeviation).Within(reference * EPSILON),
                            $"RollingStatistics<double>.StdDev {stats.StandardDeviation} != MathNet StdDev {reference}");
                stats = new RollingStatistics <double>(doubleList[0]);
                for (int i = 1; i < doubleList.Count; i++)
                {
                    stats.Add(doubleList[i]);
                }
                Assert.That(reference, Is.EqualTo(stats.StandardDeviation).Within(reference * EPSILON),
                            $"RollingStatistics<double>.StdDev {stats.StandardDeviation} != MathNet StdDev {reference}");
            }
            {
                // test ints
                var intList    = rng.InclusiveList(int.MinValue / 2, int.MaxValue / 2, Count);
                var doubleList = intList.Select(i => ((IConvertible)i).ToDouble(null));
                Assert.NotNull(intList, $"MeanTest: intList is null!");
                Assert.AreEqual(intList.Count, Count, $"intList.Count {intList.Count} != {Count}");
                var reference = MathNet.Numerics.Statistics.Statistics.StandardDeviation(doubleList);

                var stats = new RollingStatistics <int>(intList);
                Assert.That(reference, Is.EqualTo(stats.StandardDeviation).Within(reference * EPSILON),
                            $"RollingStatistics<int>.StdDev {stats.StandardDeviation} != MathNet StdDev {reference}");
                stats = new RollingStatistics <int>(intList[0]);
                for (int i = 1; i < intList.Count; i++)
                {
                    stats.Add(intList[i]);
                }
                Assert.That(reference, Is.EqualTo(stats.StandardDeviation).Within(reference * EPSILON),
                            $"RollingStatistics<int>.StdDev {stats.StandardDeviation} != MathNet StdDev {reference}");
            }
        }