Dưới đây là một ví dụ truy cập sử dụng dữ liệu được tạo ngẫu nhiên và R:
library(MASS)
library(leaps)
v <- matrix(0.9,11,11)
diag(v) <- 1
set.seed(15)
mydat <- mvrnorm(100, rep(0,11), v)
mydf <- as.data.frame( mydat )
fit1 <- lm( V1 ~ 1, data=mydf )
fit2 <- lm( V1 ~ ., data=mydf )
fit <- step( fit1, formula(fit2), direction='forward' )
summary(fit)$r.squared
all <- leaps(mydat[,-1], mydat[,1], method='r2')
max(all$r2[ all$size==length(coef(fit)) ])
plot( all$size, all$r2 )
points( length(coef(fit)), summary(fit)$r.squared, col='red' )
whuber muốn quá trình suy nghĩ: nó chủ yếu là một sự tương phản giữa sự tò mò và sự lười biếng. Bài viết gốc nói về việc có 10 biến dự đoán, vì vậy đó là những gì tôi đã sử dụng. Tương quan 0,9 là một số tròn đẹp với tương quan khá cao, nhưng không quá cao (nếu nó quá cao thì từng bước nhiều khả năng sẽ chỉ chọn 1 hoặc 2 dự đoán), tôi đã tìm ra cơ hội tốt nhất để tìm ra một ví dụ phản biện sẽ bao gồm một số lượng lớn của cộng sự. Một ví dụ thực tế hơn sẽ có nhiều mối tương quan khác nhau (nhưng vẫn có số lượng cộng tuyến khá lớn) và mối quan hệ được xác định giữa các yếu tố dự đoán (hoặc tập hợp con của chúng) và biến phản ứng. Cỡ mẫu 100 cũng là số 1 tôi đã thử dưới dạng số tròn đẹp (và quy tắc ngón tay cái nói rằng bạn nên có ít nhất 10 quan sát cho mỗi người dự đoán). Tôi đã thử mã ở trên với hạt 1 và 2, sau đó bọc toàn bộ trong một vòng lặp và để nó thử các hạt khác nhau theo tuần tự. Thật ra nó dừng ở hạt 3, nhưng sự khác biệt ởR2 nằm ở dấu thập phân thứ 15, vì vậy tôi đoán rằng đó có khả năng là lỗi làm tròn số và khởi động lại nó với phép so sánh làm tròn đầu tiên thành 5 chữ số. Tôi đã ngạc nhiên một cách thú vị rằng nó đã tìm thấy một sự khác biệt ngay sau khi 15. Nếu nó không tìm thấy một ví dụ phản biện trong một khoảng thời gian hợp lý, tôi sẽ bắt đầu điều chỉnh mọi thứ (tương quan, kích thước mẫu, v.v.).