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