コード例 #1
0
ファイル: HistogramTests.cs プロジェクト: roberino/linqinfer
        public void Analyse_TimeSeries()
        {
            var now = DateTime.UtcNow;
            var now_plusx = new Func<int, DateTime>(x => now.AddHours(x));
            var width = TimeSpan.FromHours(1);
            var hist = new Histogram(width.TotalMilliseconds);

            var sample = new[] {
                new { date = now, name = "a" },
                new { date = now_plusx(1), name = "b" },
                new { date = now_plusx(1), name = "c" },
                new { date = now_plusx(3), name = "d" },
                new { date = now_plusx(4), name = "e" },
                new { date = now_plusx(6), name = "f" },
                new { date = now_plusx(6), name = "g" },
                new { date = now_plusx(8), name = "h" }
            }.AsQueryable();

            var histSample = hist.Analyse(sample, v => v.date);
            
            Assert.That(histSample.Min, Is.EqualTo(now));
            Assert.That(histSample.Max, Is.EqualTo(now_plusx(8)));
            Assert.That(histSample.Total, Is.EqualTo(sample.Count()));
            Assert.That(histSample.Width, Is.EqualTo(width));
            Assert.That(histSample.Bins.Count, Is.EqualTo(9));
            Assert.That(histSample.Bins[0], Is.EqualTo(1));
            Assert.That(histSample.Bins[1], Is.EqualTo(2));
            Assert.That(histSample.Bins[6], Is.EqualTo(2));
        }
コード例 #2
0
ファイル: HistogramTests.cs プロジェクト: roberino/linqinfer
        public void Analyse_SimpleSample()
        {
            var hist = new Histogram(1);
            var sample = new[] { 1, 4, 4, 5, 5, 5, 6, 6, 8, 10 }.Select(n => n.OutOf(1)).ToList().AsQueryable();
            var histSample = hist.Analyse(sample);

            Assert.That(histSample.Min, Is.EqualTo(1));
            Assert.That(histSample.Total, Is.EqualTo(sample.Count()));
            Assert.That(histSample.Width, Is.EqualTo(1));
            Assert.That(histSample.Bins.Count, Is.EqualTo(10));
            Assert.That(histSample.Bins[0], Is.EqualTo(1));
            Assert.That(histSample.Bins[9], Is.EqualTo(1));
        }
コード例 #3
0
        public void BayesianProbability_DiceExample()
        {
            // Given the dice below
            // What are the respective probabilities
            // that each dice was rolled if the roll = 6

            var die = new[] { 4, 6, 8, 12, 20 };
            var hypos = die.Select(n => P.Of(n).Is(1).OutOf(die.Length)).AsHypotheses();

            hypos.Update(x => x < 6 ? Fraction.Zero : (1).OutOf(x));

            Assert.That(hypos.ProbabilityOf(4), Is.EqualTo(Fraction.Zero));
            Assert.That(hypos.ProbabilityOf(8).Value, Is.InRange(0.294f, 0.295f));
        }
コード例 #4
0
        public void BayesianProbability_MixedDiceExample()
        {
            var die = new[] // A mixed bag of die with various number of faces
            {
                new
                {
                    n = 3,
                    faces = 4
                },
                new
                {
                    n = 2,
                    faces = 6
                },
                new
                {
                    n = 6,
                    faces = 12
                }
            };

            var hypos = die
                .Select(d => P.Of(d).Is(d.n).OutOf(die.Length))
                .AsHypotheses();

            var dist = hypos
                .DistributionOver((h, v) => v > h.faces ? Fraction.Zero : (1).OutOf(h.faces) * h.n, Enumerable.Range(1, 12));

            foreach (var h in dist)
            {
                Console.Write("{0}\t", h.Key.faces);

                foreach (var v in h.Value)
                {
                    Console.Write("{0}\t", v.Value);
                }
                Console.WriteLine();
            }
        }
コード例 #5
0
        public void AsSampleSpace_ProbabilityOfEventAandB_ReturnsZeroForExclusiveEvents()
        {
            var testData = new[] { 1, 2, 3, 4 }.AsQueryable();
            var sample = testData.AsSampleSpace();
            var cp = sample.ProbabilityOfEventAandB(x => x > 1, x => x < 1);

            Assert.That(cp.Equals(0));
            Assert.That(sample.AreMutuallyExclusive(x => x > 1, x => x < 1));
        }
コード例 #6
0
 public void AsSampleSpace_ConditionalProbabilityOfEventAGivenB()
 {
     var testData = new[] { 1, 2, 3, 4 }.AsQueryable();
     var sample = testData.AsSampleSpace();
     var cp = sample.ConditionalProbabilityOfEventAGivenB(x => x == 1, x => x < 3);
     var exp = (1).OutOf(2);
     Assert.That(cp.Equals(exp));
 }
コード例 #7
0
 public void PosterierProbabilityOfEventBGivenA()
 {
     var testData = new[] { 1, 2, 3, 4 }.AsQueryable();
     var sample = testData.AsSampleSpace();
     var cp = sample.PosterierProbabilityOfEventBGivenA(x => x == 1, x => x > 0 && x < 3);
     var exp = (1).OutOf(2);
     Assert.That(cp.Equals(exp));
 }