Leave "One Out Cross Validation" "manually" using the "for" loop in R
I am trying to use a loop for
to reproduce the behavior of a function cv.glm()
in a library boot
:
library(ISLR)
attach(Weekly) # this has 1089 rows
cutoff <- .5 # determines the prediction
wrong <- 0 # we'll record the number of wrong predictions here
for (i in 1:1089) {
fit <- glm(Direction~Lag1+Lag2, data=Weekly[-i,], family=binomial) # leaves out the i-th observation
prob <- predict(fit,Weekly[i,],type="response")
if (prob<cutoff) pred <- "Down" else pred <- "Up"
if (pred!=Direction[i]) wrong <- wrong +1
}
wrong / 1089 # approximately 45% LOOCV error rate
# Let try the same with the cv.glm()
library(boot)
cv.glm(Weekly,glm(Direction~Lag1+Lag2, data=Weekly, family=binomial))$delta # approximately 25%, why??
As you can see, my problem is that I don't get similar results in two cases. My best guess is that I might confuse the meaning delta
in the case of logistic regression.
Thanks in advance.
+3
source to share
No one has answered this question yet
Check out similar questions: