平均スプリットタイムの線形回帰
ここでは、800 m 種目において選手が直線的にペースダウンすると仮定します。スプリットごとのペースダウン量は、スプリット番号に対する平均スプリットタイムの傾きとして求められます。線形回帰を実行してスプリットごとのペースダウンを推定し、ペアブートストラップによる95%信頼区間を計算しましょう。また、最適直線のグラフも表示します。
注: 平均スプリットタイムの誤差棒を計算して回帰分析に組み込むことも可能ですが、このコースの範囲を超えるため、ここでは考慮しません。
この演習はコースの一部です
統計的思考 ケーススタディ
演習の手順
np.polyfit()を使って線形回帰を実行し、スプリットごとのペースダウンを求めます。変数split_numberとmean_splitsはすでに定義されています。傾きと切片をそれぞれslowdownとsplit_3に格納してください。dcst.draw_bs_pairs_linreg()を使って、スプリットごとのペースダウンに対するペアブートストラップ複製を10,000個計算します。結果をbs_repsに格納してください。切片のブートストラップ複製はこの分析では不要なので、捨て変数_に格納して構いません。- スプリットごとのペースダウンの95%信頼区間を計算します。
- スプリット番号(
split_number)と平均スプリットタイム(mean_splits)の関係を点でプロットし、最適直線も重ねて表示します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Perform regression
____, ____ = ____
# Compute pairs bootstrap
bs_reps, _ = ____
# Compute confidence interval
conf_int = ____
# Plot the data with regressions line
_ = ____(____, ____, marker='.', linestyle='none')
_ = ____(____, ____ * ____ + ____, '-')
# Label axes and show plot
_ = plt.xlabel('split number')
_ = plt.ylabel('split time (s)')
plt.show()
# Print the slowdown per split
print("""
mean slowdown: {0:.3f} sec./split
95% conf int of mean slowdown: [{1:.3f}, {2:.3f}] sec./split""".format(
slowdown, *conf_int))