Hồi quy tuyến tính của thời gian split trung bình
Giả sử vận động viên bơi chậm dần theo dạng tuyến tính trong suốt nội dung 800 m. Độ chậm lại mỗi split chính là hệ số góc của đồ thị thời gian split trung bình theo số thứ tự split. Hãy thực hiện hồi quy tuyến tính để ước lượng độ chậm lại mỗi split và tính khoảng tin cậy 95% bằng pairs bootstrap cho độ chậm lại này. Đồng thời hiển thị đồ thị của đường khớp tốt nhất.
Lưu ý: Ta có thể tính thanh lỗi cho các thời gian split trung bình và dùng chúng trong phân tích hồi quy, nhưng ở đây sẽ không xét đến, vì nằm ngoài phạm vi của khóa học này.
Bài tập này là một phần của khóa học
Các nghiên cứu tình huống về tư duy thống kê
Hướng dẫn bài tập
- Dùng
np.polyfit()để thực hiện hồi quy tuyến tính và lấy độ chậm lại theo mỗi split. Các biếnsplit_numbervàmean_splitsđã có sẵn trong namespace của bạn. Lần lượt lưu hệ số góc và hệ số chặn vàoslowdownvàsplit_3. - Dùng
dcst.draw_bs_pairs_linreg()để tính 10.000 bản sao bootstrap theo cặp (pairs bootstrap) của độ chậm lại mỗi split. Lưu kết quả vàobs_reps. Các bản sao bootstrap của hệ số chặn không liên quan trong phân tích này, nên bạn có thể lưu chúng vào biến bỏ đi_. - Tính khoảng tin cậy 95% cho độ chậm lại mỗi split.
- Vẽ số thứ tự split (
split_number) so với thời gian split trung bình (mean_splits) dưới dạng các điểm, kèm theo đường khớp tốt nhất.
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
# 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))