require(ISLR)
Loading required package: ISLR
require(boot)
Loading required package: boot

## LOOCV
glm.fit=glm(mpg~horsepower, data=Auto)
cv.glm(Auto,glm.fit)$delta #pretty slow (doesnt use formula (5.2) on page 180)
[1] 24.23151 24.23114

We can do LOOCV without actually performing the model

##Lets write a simple function to use formula (5.2)
loocv=function(fit){
  h=lm.influence(fit)$h
  mean((residuals(fit)/(1-h))^2)
}
## Now we try it out
loocv(glm.fit)
[1] 24.23151

Fitting polynomials 1 to 5 on the data

cv.error=rep(0,5)
degree=1:5
for(d in degree){
  glm.fit=glm(mpg~poly(horsepower,d), data=Auto)
  cv.error[d]=loocv(glm.fit)
}
plot(degree,cv.error,type="b")

10 - fold cross validation

Bootstrap

Minimum risk investment - Section 5.2

alpha=function(x,y){
  vx=var(x)
  vy=var(y)
  cxy=cov(x,y)
  (vy-cxy)/(vx+vy-2*cxy)
}
alpha(Portfolio$X,Portfolio$Y)
[1] 0.5758321
## What is the standard error of alpha?
alpha.fn=function(data, index){
  with(data[index,],alpha(X,Y))
}
alpha.fn(Portfolio,1:100)
[1] 0.5758321

Bootstrap resampling

boot.out

ORDINARY NONPARAMETRIC BOOTSTRAP


Call:
boot(data = Portfolio, statistic = alpha.fn, R = 1000)


Bootstrap Statistics :
     original       bias    std. error
t1* 0.5758321 -0.001695873  0.09366347
boot.out

ORDINARY NONPARAMETRIC BOOTSTRAP


Call:
boot(data = Portfolio, statistic = alpha.fn, R = 1000)


Bootstrap Statistics :
     original       bias    std. error
t1* 0.5758321 -0.001695873  0.09366347
plot(boot.out)

LS0tDQp0aXRsZTogIlIgTm90ZWJvb2siDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KDQoNCmBgYHtyfQ0KcmVxdWlyZShJU0xSKQ0KcmVxdWlyZShib290KQ0KYGBgYA0KDQoNCg0KDQpgYGB7cn0NCnBsb3QobXBnfmhvcnNlcG93ZXIsZGF0YT1BdXRvKQ0KYGBgDQoNCg0KYGBge3J9DQojIyBMT09DVg0KZ2xtLmZpdD1nbG0obXBnfmhvcnNlcG93ZXIsIGRhdGE9QXV0bykNCg0KI0RlbHRhIGlzIGNyb3NzLXZhbGlkYXRlZCBwcmVkaWN0aW9uIGVycm9yDQojMXN0IG51bWJlciBpcyB0aGUgcmF3IENyb3NzIHZhbGlkYXRlZCBlcnJvcg0KIzJuZCBudW1iZXIgaXMgYmlhcyBjb3JyZWN0ZWQgYmVjYXVzZSB0aGUgZGF0YSBpcyBzbWFsbGVyIHRoYW4gdGhlIGFjdHVhbCBkYXRhDQpjdi5nbG0oQXV0byxnbG0uZml0KSRkZWx0YSAjcHJldHR5IHNsb3cgKGRvZXNudCB1c2UgZm9ybXVsYSAoNS4yKSBvbiBwYWdlIDE4MCkNCmBgYA0KDQoNCldlIGNhbiBkbyBMT09DViB3aXRob3V0IGFjdHVhbGx5IHBlcmZvcm1pbmcgdGhlIG1vZGVsDQpgYGB7cn0NCiMjTGV0cyB3cml0ZSBhIHNpbXBsZSBmdW5jdGlvbiB0byB1c2UgZm9ybXVsYSAoNS4yKQ0KbG9vY3Y9ZnVuY3Rpb24oZml0KXsNCiAgaD1sbS5pbmZsdWVuY2UoZml0KSRoDQogIG1lYW4oKHJlc2lkdWFscyhmaXQpLygxLWgpKV4yKQ0KfQ0KDQojIyBOb3cgd2UgdHJ5IGl0IG91dC4gVGhpcyBnaXZlcyB0aGUgc2FtZSBhcyB0aGUgZmlyc3QgZXJyb3IgZnJvbSBjdi5nbG0oKSRkZWx0YSBhYm92ZQ0KbG9vY3YoZ2xtLmZpdCkNCg0KYGBgDQoNCkZpdHRpbmcgcG9seW5vbWlhbHMgMSB0byA1IG9uIHRoZSBkYXRhDQoNCmBgYHtyfQ0KY3YuZXJyb3I9cmVwKDAsNSkNCmRlZ3JlZT0xOjUNCmZvcihkIGluIGRlZ3JlZSl7DQogIGdsbS5maXQ9Z2xtKG1wZ35wb2x5KGhvcnNlcG93ZXIsZCksIGRhdGE9QXV0bykNCiAgY3YuZXJyb3JbZF09bG9vY3YoZ2xtLmZpdCkNCn0NCnBsb3QoZGVncmVlLGN2LmVycm9yLHR5cGU9ImIiKQ0KDQpgYGANCg0KDQoxMCAtIGZvbGQgY3Jvc3MgdmFsaWRhdGlvbg0KDQpgYGB7cn0NCiMjIDEwLWZvbGQgQ1YNCg0KY3YuZXJyb3IxMD1yZXAoMCw1KQ0KZm9yKGQgaW4gZGVncmVlKXsNCiAgZ2xtLmZpdD1nbG0obXBnfnBvbHkoaG9yc2Vwb3dlcixkKSwgZGF0YT1BdXRvKQ0KICBjdi5lcnJvcjEwW2RdPWN2LmdsbShBdXRvLGdsbS5maXQsSz0xMCkkZGVsdGFbMV0NCn0NCg0KcGxvdChkZWdyZWUsY3YuZXJyb3IsdHlwZT0iYiIpICNGcm9tIExPT0NWDQpsaW5lcyhkZWdyZWUsY3YuZXJyb3IxMCx0eXBlPSJiIixjb2w9InJlZCIpDQoNCmBgYA0KDQoNCg0KIyMgQm9vdHN0cmFwDQojIyBNaW5pbXVtIHJpc2sgaW52ZXN0bWVudCAtIFNlY3Rpb24gNS4yDQoNCg0KYGBge3J9DQphbHBoYT1mdW5jdGlvbih4LHkpew0KICB2eD12YXIoeCkNCiAgdnk9dmFyKHkpDQogIGN4eT1jb3YoeCx5KQ0KICAodnktY3h5KS8odngrdnktMipjeHkpDQp9DQphbHBoYShQb3J0Zm9saW8kWCxQb3J0Zm9saW8kWSkNCg0KYGBgDQoNCg0KDQpgYGB7cn0NCiMjIFdoYXQgaXMgdGhlIHN0YW5kYXJkIGVycm9yIG9mIGFscGhhPw0KDQphbHBoYS5mbj1mdW5jdGlvbihkYXRhLCBpbmRleCl7DQogIHdpdGgoZGF0YVtpbmRleCxdLGFscGhhKFgsWSkpDQp9DQoNCmFscGhhLmZuKFBvcnRmb2xpbywxOjEwMCkNCg0KYGBgDQoNCkJvb3RzdHJhcCByZXNhbXBsaW5nDQpgYGB7cn0NCnNldC5zZWVkKDEpDQphbHBoYS5mbiAoUG9ydGZvbGlvLHNhbXBsZSgxOjEwMCwxMDAscmVwbGFjZT1UUlVFKSkNCmJvb3Qub3V0PWJvb3QoUG9ydGZvbGlvLGFscGhhLmZuLFI9MTAwMCkNCg0KYGBgDQoNCg0KYGBge3J9DQpib290Lm91dA0KcGxvdChib290Lm91dCkNCmBgYA0K