27 lines
807 B
R
27 lines
807 B
R
library(foreach)
|
|
|
|
NUMROWS <- 500
|
|
NUMCOLS <- 100
|
|
NUMFOLDS <- 10
|
|
CHUNKSIZE <- 50
|
|
nwsopts <- list(chunkSize=CHUNKSIZE)
|
|
|
|
xv <- matrix(rnorm(NUMROWS * NUMCOLS), NUMROWS, NUMCOLS)
|
|
beta <- c(rnorm(NUMCOLS / 2, 0, 5), rnorm(NUMCOLS / 2, 0, 0.25))
|
|
yv <- xv %*% beta + rnorm(NUMROWS, 0, 20)
|
|
dat <- data.frame(y=yv, x=xv)
|
|
fold <- sample(rep(1:NUMFOLDS, length=NUMROWS))
|
|
|
|
# the variables dat, fold, and NUMCOLS are automatically exported
|
|
print(system.time(
|
|
prss <-
|
|
foreach(foldnumber=1:NUMFOLDS, .combine='c', .options.nws=nwsopts) %:%
|
|
foreach(i=2:NUMCOLS, .combine='c', .final=mean) %dopar% {
|
|
glmfit <- glm(y ~ ., data=dat[fold != foldnumber, 1:i])
|
|
yhat <- predict(glmfit, newdata=dat[fold == foldnumber, 1:i])
|
|
sum((yhat - dat[fold == foldnumber, 1]) ^ 2)
|
|
}
|
|
))
|
|
|
|
cat('Results:', prss, '\n')
|