Tôi đang làm việc để xác thực chéo dự đoán dữ liệu của mình với 200 đối tượng và 1000 biến. Tôi quan tâm đến hồi quy sườn vì số lượng biến (tôi muốn sử dụng) lớn hơn số lượng mẫu. Vì vậy, tôi muốn sử dụng ước tính co ngót. Sau đây là dữ liệu ví dụ:
#random population of 200 subjects with 1000 variables
M <- matrix(rep(0,200*100),200,1000)
for (i in 1:200) {
set.seed(i)
M[i,] <- ifelse(runif(1000)<0.5,-1,1)
}
rownames(M) <- 1:200
#random yvars
set.seed(1234)
u <- rnorm(1000)
g <- as.vector(crossprod(t(M),u))
h2 <- 0.5
set.seed(234)
y <- g + rnorm(200,mean=0,sd=sqrt((1-h2)/h2*var(g)))
myd <- data.frame(y=y, M)
myd[1:10,1:10]
y X1 X2 X3 X4 X5 X6 X7 X8 X9
1 -7.443403 -1 -1 1 1 -1 1 1 1 1
2 -63.731438 -1 1 1 -1 1 1 -1 1 -1
3 -48.705165 -1 1 -1 -1 1 1 -1 -1 1
4 15.883502 1 -1 -1 -1 1 -1 1 1 1
5 19.087484 -1 1 1 -1 -1 1 1 1 1
6 44.066119 1 1 -1 -1 1 1 1 1 1
7 -26.871182 1 -1 -1 -1 -1 1 -1 1 -1
8 -63.120595 -1 -1 1 1 -1 1 -1 1 1
9 48.330940 -1 -1 -1 -1 -1 -1 -1 -1 1
10 -18.433047 1 -1 -1 1 -1 -1 -1 -1 1
Tôi muốn làm theo để xác nhận chéo -
(1) chia dữ liệu thành hai nửa - sử dụng nửa đầu là đào tạo và nửa sau làm thử nghiệm
(2) Xác thực chéo K-gấp (giả sử 10 lần hoặc đề xuất về bất kỳ lần gấp thích hợp nào khác cho trường hợp của tôi đều được chào đón)
Tôi chỉ có thể lấy mẫu dữ liệu thành hai (đạt và kiểm tra) và sử dụng chúng:
# using holdout (50% of the data) cross validation
training.id <- sample(1:nrow(myd), round(nrow(myd)/2,0), replace = FALSE)
test.id <- setdiff(1:nrow(myd), training.id)
myd_train <- myd[training.id,]
myd_test <- myd[test.id,]
Tôi đang sử dụng lm.ridge
từ MASS
gói R.
library(MASS)
out.ridge=lm.ridge(y~., data=myd_train, lambda=seq(0, 100,0.001))
plot(out.ridge)
select(out.ridge)
lam=0.001
abline(v=lam)
out.ridge1 =lm.ridge(y~., data=myd_train, lambda=lam)
hist(out.ridge1$coef)
out.ridge1$ym
hist(out.ridge1$xm)
Tôi có hai câu hỏi -
(1) Làm cách nào tôi có thể dự đoán tập kiểm tra và tính chính xác (như tương quan của dự đoán so với thực tế)?
(2) Làm thế nào tôi có thể thực hiện xác nhận K-Fold? nói 10 lần?
rms
gói ols
, calibrate
và validate
chức năng với xử phạt bậc hai (sườn núi hồi quy).