Bootstrapping hồi quy
Giờ hãy xem bootstrapping hoạt động thế nào với hồi quy. Bootstrapping giúp ước lượng mức độ bất định của các bộ ước lượng không chuẩn. Xét thống kê \(R^{2}\) gắn với một mô hình hồi quy. Khi bạn chạy hồi quy bình phương tối thiểu đơn giản, bạn nhận được một giá trị \(R^{2}\). Nhưng làm sao để lấy khoảng tin cậy 95% cho \(R^2\)?
Quan sát DataFrame df với biến phụ thuộc \(y\) và hai biến độc lập \(X1\) và \(X2\) bằng df.head(). Chúng ta đã ước lượng mô hình hồi quy này với statsmodels (sm) dùng:
reg_fit = sm.OLS(df['y'], df.iloc[:,1:]).fit()
Xem kết quả bằng reg_fit.summary() để thấy \(R^{2}=0.3504\). Hãy dùng bootstrapping để tính khoảng tin cậy 95%.
Bài tập này là một phần của khóa học
Mô phỏng Thống kê bằng Python
Hướng dẫn bài tập
- Lấy một mẫu bootstrap từ bộ dữ liệu gốc bằng phương thức
sample()của pandas DataFrame. Số hàng phải bằng với số hàng của DataFrame gốc. - Ước lượng một mô hình hồi quy giống
reg_fit()bằngsm.OLS()và trích xuất thống kê \(R^{2}\) bằng thuộc tínhrsquared. - Thêm giá trị \(R^{2}\) vào danh sách
rsquared_boot. - Tính khoảng tin cậy 95% cho
rsquared_bootthànhr_sq_95_cibằngnp.percentile().
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.
rsquared_boot, coefs_boot, sims = [], [], 1000
reg_fit = sm.OLS(df['y'], df.iloc[:,1:]).fit()
# Run 1K iterations
for i in range(sims):
# First create a bootstrap sample with replacement with n=df.shape[0]
bootstrap = ____
# Fit the regression and append the r square to rsquared_boot
rsquared_boot.append(____(bootstrap['y'],bootstrap.iloc[:,1:]).fit().rsquared)
# Calculate 95% CI on rsquared_boot
r_sq_95_ci = ____
print("R Squared 95% CI = {}".format(r_sq_95_ci))