Kiến thức

Cross-Validation và Bootstrap

Bạn đang xem: Cross-Validation và Bootstrap

Bootstrap

Một trong những ưu thế của Bootstrap đó là nó áp dụng linh hoạt trong mọi model và mọi tình huống mà không yêu cầu tính toán phức tạp. Chúng ta có thể tự viết các hàm bootstrap cho riêng mình hoặc tiện lợi nhất là sử dụng boot::boot(). Hàm số này sẽ lặp lại quá trình resample mẫu có replacement trên một tập data gốc.

Chúng ta sẽ sử dụng bộ dữ liệu Portfolio về lợi suất của 2 tài sản X, Y của package ISLR để tìm ra tỷ lệ phân bổ đầu tư (alpha) như thế nào sẽ tối thiểu rủi ro danh mục. Theo lý thuyết thì giá trị này bằng:

[hat alpha = frac{hat sigma_{Y} ^2- hat sigma_{XY}}{hat sigma_{X}^2+hat sigma_{Y}^2-2hatsigma_{X}hatsigma_{Y}}]

Trong đó (hat sigma^2) là giá trị ước lượng của các phương sai (variance) và (hatsigma_{XY}) là hiệp phương sai (covariance) của X và Y.

Đầu tiên ta sẽ viết hàm tính alpha:

alpha.fn <- function(data,index){ X=data$X[index] Y=data$Y[index] return (var(Y) - cov(X,Y))/(var(X)+var(Y)-2*cov(X,Y)) }

Test thử hàm alpha.fn cho 100 quan sát được lựa chọn ngẫu nhiên có replacement từ Porfolio.

alpha.fn(Portfolio,sample(100,100,replace = TRUE))
## [1] 0.463758

Sử dụng phương pháp bootstrap để tính (alpha) trên tập dữ liệu gốc là Portfolio 1000 lần:

boot::boot(Portfolio, alpha.fn, R=1000)
## ## ORDINARY NONPARAMETRIC BOOTSTRAP ## ## ## Call: ## boot::boot(data = Portfolio, statistic = alpha.fn, R = 1000) ## ## ## Bootstrap Statistics : ## original bias std. error ## t1* 0.6818792 -0.01139355 0.1251636
# alpha.fn là hàm cần tính, R là số lần bootstrap mẫu

Kết quả chỉ ra rằng sử dụng mẫu gốc có (hatalpha)=0.6819 phương pháp bootstrap đưa ra kết quả ước lượng cho phương sai là (SE(hat alpha))=0.1217.

Ứng dụng của bootstrap trong ước lượng độc chính xác của Linear Regression Model

Bootstrap có thể được sử dụng để đánh giá mức độ biến động và dự báo các hệ số ước lượng (beta_{0})(beta_{1}) của các model thống kê. Chẳng hạn như chúng ta sử dụng phương pháp bootstrap để ước lượng hệ số của chặn và hệ số góc của phương trình hồi qui horsepower theo mpg trong tập dữ liệu Auto.

Tạo phương trình boot.fn() trả về các hệ số hồi qui từ tập dữ liệu được simulation.

boot.fn=function(data,index) { return(coef(lm(mpg~horsepower,data = data,subset = index))) } #Test thử hàm: boot.fn(Auto,sample(396,396,replace = TRUE))
## (Intercept) horsepower ## 39.3909503 -0.1492495

Bootstrap model 1000 lần kết quả thu được như sau:

boot::boot(Auto, boot.fn, 1000)
## ## ORDINARY NONPARAMETRIC BOOTSTRAP ## ## ## Call: ## boot::boot(data = Auto, statistic = boot.fn, R = 1000) ## ## ## Bootstrap Statistics : ## original bias std. error ## t1* 39.9358610 0.0699353317 0.906433806 ## t2* -0.1578447 -0.0006407659 0.007901329

Kết quả ước lượng cho thấy mẫu gốc có các hệ số chặn là 39.9359 và hệ số góc là -0.1578. Sai số chuẩn của các hệ số ước lượng này lần lượt là 0.8679 và 0.0076. So sánh với kết quả ước lượng gốc:

summary(lm(data=Auto,mpg~horsepower))$coef
## Estimate Std. Error t value Pr(>|t|) ## (Intercept) 39.9358610 0.717498656 55.65984 1.220362e-187 ## horsepower -0.1578447 0.006445501 -24.48914 7.031989e-81

Ta thấy có một sự sai khác nhỏ trong phương sai các hệ số ước lượng từ phương pháp bootstrap và từ phương pháp OLS. Liệu rằng đây có phải là điểm yếu của phương pháp bootstrap. Thực tế cho thấy hệ số ước lượng của (beta_{0})(beta_{1}) thu được từ OLS được ước lượng dựa trên một tham số chưa biết là bình phương sai số ngẫu nhiên của phương trình (sigma^2). Giá trị này được ước lượng dựa trên RSS và công thức này phải giả định rằng mối quan hệ giữa các biến dự báo và biến được dự báo phải là tuyến tính. Chúng ta thực tế không thể biết dạng hàm cụ thể của mối quan hệ này. Do đó trong trường hợp hàm số không có dạng tuyến tính thì RSS sẽ bị phóng đại lên gấp nhiều lần dẫn đến ước lượng cho (beta) sẽ bị chệch. Trong khi đó phương sai thu được từ phương pháp bootstrap không dựa trên những giả thuyết ràng buộc này. Do đó về mặt nào đó thì ước lượng phương sai của bootstrap còn chuẩn xác hơn so với OLS.

Chuyên mục: Kiến thức

Related Articles

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Back to top button