”みたけ山トレイルラン”の結果をヒストグラムにしてみたので、今回は確率質量関数にしてグラフをつくってみます。
前回
再びの”みたけ山トレイルラン”のヒストグラム
http://jbclub.xii.jp/?p=573
PMFとは
確率質量関数(probability mass function, PMF)
PMFは正規化されているので全体としての確率は1となる。
thinkstats2が提供するPmfクラスを使うと簡単です。
↓のデータフレームは前回と一緒です。
df.head(10) Out[81]: A B C 0 01:05:03 13.0 01:05:00 1 01:07:10 13.0 01:05:00 2 01:07:52 13.0 01:05:00 3 01:12:00 14.0 01:10:00 4 01:12:14 14.0 01:10:00 5 01:12:31 14.0 01:10:00 6 01:12:54 14.0 01:10:00 7 01:13:23 14.0 01:10:00 8 01:13:44 14.0 01:10:00 9 01:13:54 14.0 01:10:00 pmf = thinkstats2.Pmf(df['B']) pmf2 = thinkstats2.Pmf(df['C']) ※CはTimedelta型になっているので、プロットするときにthinkiplotクラスを使うことができない。そのため、プロットする際はBを使用する。
Pmfを棒グラフで描画するときはthinkplot.Histを使う。
Pmfをステップ関数として描画する場合はthink.Pmfを使う。
thinkplot.Hist(pmf) plt.xticks([12, 15, 18, 21, 24,27,30,33], ['1:00:00','1:15:00','1:30:00','1:45:00','2:00:00','2:15:00','2:30:00','2:45:00']) plt.xlabel('TIME') plt.ylabel('PMF')
thinkplot.Pmf(pmf) plt.xticks([12, 15, 18, 21, 24,27,30,33], ['1:00:00','1:15:00','1:30:00','1:45:00','2:00:00','2:15:00','2:30:00','2:45:00']) plt.xlabel('TIME') plt.ylabel('PMF')
PMFにすると何がよいのでしょうか。おそらく、二つのグラフを比較するときに分かりやすくなるのだと思います。確率なので標本サイズの違いで紛らわしくなることなく比較できます。今回はほかの比較する用のデータがないので描画してませんが、データがあれば描画してみたいです。ただ、こういう大会結果のデータはPDFで掲載されているので、PDFからCSVへ変換するところが物凄い大変なんですよね。大会関係者は、CSVファイルで掲載してほしいところです。
以上
ThinkStats2のコードは以下からダウンロードできます。
https://github.com/AllenDowney/
View Comments