使用cv.glm(在引导程序包中)和train(在脱字符包中)产生不同的结果

时间:2019-08-09 22:37:53

标签: r cross-validation r-caret

我想使用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)

使用不同的软件包得到不同答案的原因可能是什么?

我在这里没有犯任何错误吗?

如果有人可以帮助我

0 个答案:

没有答案