Reputation: 2385
I am trying to do a leave one out cross validation by first fitting my data to a glm model, then using predict. Apparently I have not set up the cross validation correct as I get an error. Anyone know how this should be written correct?
data <- structure(list(hsa_miR_1306_5p = c(5.66281697186733, 6.58664110311681,
8.24680160610849, 7.59469600671128, 5.11353374464181, 5.21216070738553
), hsa_miR_576_5p = c(3.01744918102835, 4.94428256624179, 6.47085031132479,
6.341071987735, 5.11353374464181, 4.94239499718096), V3 = c(3,
5, 3, 3, 5, 5), V4 = c(29.9, 27.1, 32.7, 24.9, 30.2, 29.9), V5 = c(1957,
1948, 1951, 1954, 1946, 1952), V6 = c(1, 1, 1, 0, 1, 0)), row.names = c("1004773522",
"1108651363", "1170306251", "1170306252", "1170306253", "1170306258"
), class = "data.frame")
LOOCV model:
loocv <- sapply(1:nrow(data), function(x) {
loo.data <- data[-x,]
model <- glm(as.factor(V3) ~ hsa_miR_1306_5p + hsa_miR_576_5p + V4 + V5 + V6, family=binomial(logit),data=loo.data)
predict(model,newdata=data[x,], type = "lp")
})
plot:
roc.data <-roc(model$y , model$fitted.values,ci=T,predictor = loocv)
plot.roc(roc.data)
Error:
Error in match.arg(type) :
'arg' should be one of “link”, “response”, “terms”
Upvotes: 0
Views: 474
Reputation: 349
You need to be careful with the packages you are using. Please load in both packages before you do analysis:
library(pROC)
library(rms)
The base R predict (or predict.glm) function has a type argument, but only the options
type = c("link", "response", "terms")
You get the linear predictors by specifying
predict(..., type = "link")
The syntax you are using comes from the rms::predictrms() function.
Upvotes: 1