In [1]:
from __future__ import print_function, division
import pandas as pd
import thinkstats2
import thinkplot
import relay
%matplotlib inline
formats = ['png', 'pdf']
In [2]:
def ObservedPmf(pmf, speed, label=None):
"""Returns a new Pmf representing speeds observed at a given speed.
The chance of observing a runner is proportional to the difference
in speed.
Args:
pmf: distribution of actual speeds
speed: speed of the observing runner
label: string label for the new dist
Returns:
Pmf object
"""
new = pmf.Copy(label=label)
for val in new.Values():
diff = abs(val - speed)
new.Mult(val, diff)
new.Normalize()
return new
In [7]:
results = relay.ReadResults()
speeds = relay.GetSpeeds(results)
pmf = thinkstats2.Pmf(speeds)
len(speeds)
Out[7]:
In [8]:
pdf = thinkstats2.EstimatedPdf(speeds)
thinkplot.PrePlot(2)
thinkplot.Pdf(pdf)
thinkplot.Config(title='PDF of running speed',
xlabel='speed (mph)',
ylabel='PDF',
xlim=[3, 12],
loc='lower right')
#thinkplot.Save(root='relay1', formats=formats)
In [9]:
thinkplot.PrePlot(2)
thinkplot.Cdf(pmf.MakeCdf())
thinkplot.Config(root='observed_speeds',
title='CDF of running speed',
xlabel='speed (mph)',
ylabel='CDF',
loc='lower right')
#thinkplot.Save(root='relay2', formats=formats)
In [21]:
pmf = thinkstats2.Pmf(speeds, 'actual')
biased = ObservedPmf(pmf, 7.5, label='observed 7.5 mph')
biased2 = ObservedPmf(pmf, 6.5, label='observed 6.5 mph')
In [25]:
thinkplot.PrePlot(3)
thinkplot.Cdf(pmf.MakeCdf(), alpha=0.2)
thinkplot.Cdf(biased.MakeCdf())
thinkplot.Cdf(biased2.MakeCdf())
thinkplot.Config(root='observed_speeds',
title='CDF of running speed',
xlabel='speed (mph)',
ylabel='CDF',
loc='lower right')
thinkplot.Save(root='relay3', formats=formats)
In [ ]: