def ConditionalSurvival(pmf, t0): """Computes conditional survival function. Probability that duration exceeds t0+t, given that duration >= t0. pmf: Pmf of durations t0: minimum time returns: tuple of (ts, conditional survivals) """ cond = thinkstats2.Pmf() for t, p in pmf.Items(): if t >= t0: cond.Set(t - t0, p) return SurvivalFunction(thinkstats2.MakeCdfFromPmf(cond))
def main(): results = relay.ReadResults() speeds = relay.GetSpeeds(results) # plot the distribution of actual speeds pmf = thinkstats2.MakePmfFromList(speeds, 'actual speeds') # plot the biased distribution seen by the observer biased = BiasPmf(pmf, 7.5, name='observed speeds') thinkplot.Hist(biased) thinkplot.Save(root='observed_speeds', title='PMF of running speed', xlabel='speed (mph)', ylabel='probability') cdf = thinkstats2.MakeCdfFromPmf(biased) thinkplot.Clf() thinkplot.Cdf(cdf) thinkplot.Save(root='observed_speeds_cdf', title='CDF of running speed', xlabel='speed (mph)', ylabel='cumulative probability')
def testCdf(self): t = [1, 2, 2, 3, 5] pmf = thinkstats2.Pmf(t) hist = thinkstats2.Hist(t) cdf = thinkstats2.Cdf(pmf) self.assertEqual(len(str(cdf)), 37) self.assertEqual(cdf[0], 0) self.assertAlmostEqual(cdf[1], 0.2) self.assertAlmostEqual(cdf[2], 0.6) self.assertAlmostEqual(cdf[3], 0.8) self.assertAlmostEqual(cdf[4], 0.8) self.assertAlmostEqual(cdf[5], 1) self.assertAlmostEqual(cdf[6], 1) xs = range(7) ps = cdf.Probs(xs) for p1, p2 in zip(ps, [0, 0.2, 0.6, 0.8, 0.8, 1, 1]): self.assertAlmostEqual(p1, p2) self.assertEqual(cdf.Value(0), 1) self.assertEqual(cdf.Value(0.1), 1) self.assertEqual(cdf.Value(0.2), 1) self.assertEqual(cdf.Value(0.3), 2) self.assertEqual(cdf.Value(0.4), 2) self.assertEqual(cdf.Value(0.5), 2) self.assertEqual(cdf.Value(0.6), 2) self.assertEqual(cdf.Value(0.7), 3) self.assertEqual(cdf.Value(0.8), 3) self.assertEqual(cdf.Value(0.9), 5) self.assertEqual(cdf.Value(1), 5) ps = np.linspace(0, 1, 11) xs = cdf.ValueArray(ps) self.assertTrue((xs == [1, 1, 1, 2, 2, 2, 2, 3, 3, 5, 5]).all()) np.random.seed(17) xs = cdf.Sample(7) self.assertListEqual(xs.tolist(), [2, 2, 1, 1, 3, 3, 3]) # when you make a Cdf from a Pdf, you might get some floating # point representation error self.assertEqual(len(cdf), 4) self.assertAlmostEqual(cdf.Prob(2), 0.6) self.assertAlmostEqual(cdf[2], 0.6) self.assertEqual(cdf.Value(0.6), 2) cdf = thinkstats2.MakeCdfFromPmf(pmf) self.assertEqual(len(cdf), 4) self.assertAlmostEqual(cdf.Prob(2), 0.6) self.assertEqual(cdf.Value(0.6), 2) cdf = thinkstats2.MakeCdfFromItems(pmf.Items()) self.assertEqual(len(cdf), 4) self.assertAlmostEqual(cdf.Prob(2), 0.6) self.assertEqual(cdf.Value(0.6), 2) cdf = thinkstats2.Cdf(pmf.d) self.assertEqual(len(cdf), 4) self.assertAlmostEqual(cdf.Prob(2), 0.6) self.assertEqual(cdf.Value(0.6), 2) cdf = thinkstats2.MakeCdfFromDict(pmf.d) self.assertEqual(len(cdf), 4) self.assertAlmostEqual(cdf.Prob(2), 0.6) self.assertEqual(cdf.Value(0.6), 2) cdf = thinkstats2.Cdf(hist) self.assertEqual(len(cdf), 4) self.assertEqual(cdf.Prob(2), 0.6) self.assertEqual(cdf.Value(0.6), 2) cdf = thinkstats2.MakeCdfFromHist(hist) self.assertEqual(len(cdf), 4) self.assertEqual(cdf.Prob(2), 0.6) self.assertEqual(cdf.Value(0.6), 2) cdf = thinkstats2.Cdf(t) self.assertEqual(len(cdf), 4) self.assertEqual(cdf.Prob(2), 0.6) self.assertEqual(cdf.Value(0.6), 2) cdf = thinkstats2.MakeCdfFromList(t) self.assertEqual(len(cdf), 4) self.assertEqual(cdf.Prob(2), 0.6) self.assertEqual(cdf.Value(0.6), 2) cdf = thinkstats2.Cdf(Counter(t)) self.assertEqual(len(cdf), 4) self.assertEqual(cdf.Prob(2), 0.6) self.assertEqual(cdf.Value(0.6), 2) cdf2 = cdf.Copy() self.assertEqual(cdf2.Prob(2), 0.6) self.assertEqual(cdf2.Value(0.6), 2)
def testCdf(self): t = [1, 2, 2, 3, 5] pmf = thinkstats2.Pmf(t) hist = thinkstats2.Hist(t) cdf = thinkstats2.Cdf(pmf) self.assertEquals(len(str(cdf)), 40) # when you make a Cdf from a Pdf, you might get some floating # point representation error self.assertEquals(len(cdf), 4) self.assertAlmostEquals(cdf.Prob(2), 0.6) self.assertAlmostEquals(cdf[2], 0.6) self.assertEquals(cdf.Value(0.6), 2) cdf = thinkstats2.MakeCdfFromPmf(pmf) self.assertEquals(len(cdf), 4) self.assertAlmostEquals(cdf.Prob(2), 0.6) self.assertEquals(cdf.Value(0.6), 2) cdf = thinkstats2.Cdf(pmf.Items()) self.assertEquals(len(cdf), 4) self.assertAlmostEquals(cdf.Prob(2), 0.6) self.assertEquals(cdf.Value(0.6), 2) cdf = thinkstats2.MakeCdfFromItems(pmf.Items()) self.assertEquals(len(cdf), 4) self.assertAlmostEquals(cdf.Prob(2), 0.6) self.assertEquals(cdf.Value(0.6), 2) cdf = thinkstats2.Cdf(pmf.d) self.assertEquals(len(cdf), 4) self.assertAlmostEquals(cdf.Prob(2), 0.6) self.assertEquals(cdf.Value(0.6), 2) cdf = thinkstats2.MakeCdfFromDict(pmf.d) self.assertEquals(len(cdf), 4) self.assertAlmostEquals(cdf.Prob(2), 0.6) self.assertEquals(cdf.Value(0.6), 2) cdf = thinkstats2.Cdf(hist) self.assertEquals(len(cdf), 4) self.assertEquals(cdf.Prob(2), 0.6) self.assertEquals(cdf.Value(0.6), 2) cdf = thinkstats2.MakeCdfFromHist(hist) self.assertEquals(len(cdf), 4) self.assertEquals(cdf.Prob(2), 0.6) self.assertEquals(cdf.Value(0.6), 2) cdf = thinkstats2.Cdf(t) self.assertEquals(len(cdf), 4) self.assertEquals(cdf.Prob(2), 0.6) self.assertEquals(cdf.Value(0.6), 2) cdf = thinkstats2.MakeCdfFromList(t) self.assertEquals(len(cdf), 4) self.assertEquals(cdf.Prob(2), 0.6) self.assertEquals(cdf.Value(0.6), 2) cdf = thinkstats2.Cdf(Counter(t)) self.assertEquals(len(cdf), 4) self.assertEquals(cdf.Prob(2), 0.6) self.assertEquals(cdf.Value(0.6), 2) cdf2 = cdf.Copy() self.assertEquals(cdf2.Prob(2), 0.6) self.assertEquals(cdf2.Value(0.6), 2)
"""Convert height 'm' to (ft, in) return: tuple of (ft, in) """ return CMToHeight(100 * m) ## main scripts if __name__ == '__main__': """main scripts""" ## make exponential cdfs lambdas = [0.5, 1, 2] thinkplot.PrePlot(len(lambdas)) for lam in lambdas: pmf = thinkstats2.MakeExponentialPmf(lam, 3) label = r'$\lambda = %g$' % lam cdf = thinkstats2.MakeCdfFromPmf(pmf, label=label) thinkplot.Cdf(cdf) thinkplot.show(xlabel='x', ylabel='CDF') ## ReadBabyBoom df = analytic.ReadBabyBoom() ## plot time differences diffs = df.minutes.diff() cdf = thinkstats2.Cdf(diffs, label='actual') thinkplot.PrePlot(2) thinkplot.Cdf(cdf, complement=True) pmf = thinkstats2.MakeExponentialPmf(0.0306, 160) cdf_model = thinkstats2.MakeCdfFromPmf(pmf)