速度と信頼区間を推定する
国立公園のハイキングデータを引き続き見ていきましょう。出発点とは反対方向に歩いたため、距離が負になっているものもあります。データは少し雑なので、ここでは全体的な傾向に注目します。
この演習の目標は、ブートストラップ再標本化を使って線形モデルの速度値の分布を求め、その分布から速度の最良推定値と、その推定値の90%信頼区間を計算することです。ここでいう速度は、距離を時間の関数として当てはめた線形回帰モデルの傾きパラメータを指します。
準備として、distance と time のデータ、および各再標本に対して速度値を計算するための事前定義済み関数 least_squares() を読み込んであります。

この演習はコースの一部です
Pythonで学ぶ線形モデリング入門
演習の手順
np.random.choice()を使って、各データの距離-時間の対応関係を保ったまま、population_indsからsample_indsを抽出します。- 時間順序を保つために、
sample_indsを.sort()し、その後sample_indsを使ってdistancesとtimesをインデックス指定します。 least_squares(times, distances)で線形モデルのパラメータを計算し、a1をresample_speedsに保存します。np.mean()とnp.percentiles()をresample_speedsに適用して速度と信頼区間ci_90を計算し、両方を出力します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Resample each preloaded population, and compute speed distribution
population_inds = np.arange(0, 99, dtype=int)
for nr in range(num_resamples):
sample_inds = np.random.choice(____, size=100, replace=True)
sample_inds.____()
sample_distances = distances[____]
sample_times = times[____]
a0, a1 = ____(sample_times, sample_distances)
resample_speeds[nr] = ____
# Compute effect size and confidence interval, and print
speed_estimate = np.mean(____)
ci_90 = np.percentile(____, [5, 95])
print('Speed Estimate = {:0.2f}, 90% Confidence Interval: {:0.2f}, {:0.2f} '.format(____, ____[0], ____[1]))