# R/cv.sqsvmpath.R In gcdnet: LASSO and Elastic Net (Adaptive) Penalized Least Squares, Logistic Regression, HHSVM, Squared Hinge SVM and Expectile Regression using a Fast GCD Algorithm

```cv.sqsvmpath <- function(outlist, lambda, x, y, foldid,
pred.loss, delta, omega) {
typenames <- c(misclass = "Misclassification Error", loss = "Margin Based Loss")
if (pred.loss == "default")
pred.loss <- "loss"
if (!match(pred.loss, c("misclass", "loss"), FALSE)) {
warning("Only 'misclass' and 'loss' available for Squared SVM classification; 'loss' used")
pred.loss <- "loss"
}
###Turn y into c(0,1)
y <- as.factor(y)
y <- c(-1, 1)[as.numeric(y)]
nfolds <- max(foldid)
predmat <- matrix(NA, length(y), length(lambda))
nlams <- double(nfolds)
for (i in seq(nfolds)) {
which <- foldid == i
fitobj <- outlist[[i]]
preds <- predict(fitobj, x[which, , drop = FALSE], type = "link")
nlami <- length(outlist[[i]]\$lambda)
predmat[which, seq(nlami)] <- preds
nlams[i] <- nlami
}
cvraw <- switch(pred.loss, loss = 2 * ifelse((1 - y * predmat) <=
0, 0, (1 - y * predmat))^2, misclass = (y != ifelse(predmat >
0, 1, -1)))
N <- length(y) - apply(is.na(predmat), 2, sum)
cvm <- apply(cvraw, 2, mean, na.rm = TRUE)
cvsd <- sqrt(apply(scale(cvraw, cvm, FALSE)^2, 2, mean, na.rm = TRUE)/(N -
1))
list(cvm = cvm, cvsd = cvsd, name = typenames[pred.loss])
}
```

## Try the gcdnet package in your browser

Any scripts or data that you put into this service are public.

gcdnet documentation built on May 2, 2019, 5:42 a.m.