Regresja liniowa średniego czasu odcinka
Przyjmiemy założenie, że tempo zawodników spada liniowo w trakcie wyścigu na 800 m. Spowolnienie na odcinek odpowiada wtedy nachyleniu wykresu średniego czasu odcinka w zależności od numeru odcinka. Wykonaj regresję liniową, aby oszacować spowolnienie na odcinek, i oblicz 95-procentowy przedział ufności metodą bootstrap par. Wyświetl również wykres z linią najlepszego dopasowania.
Uwaga: Można obliczyć słupki błędów dla średnich czasów odcinków i uwzględnić je w analizie regresji, ale w tym miejscu pomijamy ten krok, ponieważ wykracza on poza zakres kursu.
To ćwiczenie jest częścią kursu
Studia przypadków w myśleniu statystycznym
Instrukcje do ćwiczenia
- Użyj funkcji
np.polyfit(), aby wykonać regresję liniową i wyznaczyć spowolnienie na odcinek. Zmiennesplit_numberimean_splitssą już dostępne w przestrzeni nazw. Zapisz odpowiednio nachylenie i wyraz wolny wslowdownisplit_3. - Użyj funkcji
dcst.draw_bs_pairs_linreg(), aby obliczyć 10 000 replik bootstrap par dla spowolnienia na odcinek. Wynik zapisz wbs_reps. Repliki bootstrap dla wyrazu wolnego nie są istotne w tej analizie, więc możesz je zapisać w zmiennej zastępczej_. - Oblicz 95-procentowy przedział ufności dla spowolnienia na odcinek.
- Narysuj wykres numeru odcinka (
split_number) względem średniego czasu odcinka (mean_splits) w postaci punktów, wraz z linią najlepszego dopasowania.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# 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))