我想使用R中Logistic回归模型的留一法交叉验证来获得测试错误。
我用两种方法做到了。 1)在引导包中使用cv.glm 2)使用插入符号包
使用cv.glm的结果和代码如下,
require(ISLR)
require(boot)
require(caret)
str(Smarket)
fit1 <- glm(Direction ~ Lag1 + Lag2 + Lag3 + Lag4 + Lag5 + Volume,
family = binomial, data = Smarket)
cv.glm(Smarket,fit1)$delta
> cv.glm(Smarket,fit1)$delta
[1] 0.2518003 0.2517992
所以留一法交叉验证误差约为0.25
然后我使用了插入符号包。使用插入符的结果和代码如下,
fitControlcv <- trainControl( method = "LOOCV")
mod_fit <- train(Direction ~ Lag1 + Lag2 + Lag3 + Lag4 + Lag5 + Volume,
data=Smarket, method="glm", family="binomial",
trControl = fitControlcv)
mod_fit
> mod_fit
Generalized Linear Model
1250 samples
6 predictor
2 classes: 'Down', 'Up'
No pre-processing
Resampling: Leave-One-Out Cross-Validation
Summary of sample sizes: 1249, 1249, 1249, 1249, 1249, 1249, ...
Resampling results:
Accuracy Kappa
0.4976 -0.02588095
在这种情况下,留一法交叉验证测试的错误率约为0.50(1-0.4976)
使用不同的软件包得到不同答案的原因可能是什么?
我在这里没有犯任何错误吗?
如果有人可以帮助我