R语言实战一书使用bootstrap包中的crossval()进行交叉验证
代码为
shrinkage<-function(fit,k=10){
require(bootstrap)
theta.fit<-function(x,y){lsfit(x,y)}
theta.predict<-function(fit.x){cbind(1,x)%*%fit$coef}
x<-fit$model[,2:ncol(fit$model)]
y<-fit$model[,1]
results<-crossval(x,y,theta.fit,theta.predict,ngroup = k)
r2<-cor(y,fit$fitted.values)^2
r2cv<-cor(y,results$cv.fit)^2
cat("Original R-square=",r2,"\n")
cat(k,"Fold Cross-Validated R-square=",r2cv,"\n")
cat("Change=",r2-r2cv,"\n")
}
states<-as.data.frame(state.x77[,c("Murder","Population",
"Illiteracy","Income","Frost")])
fit<-lm(Murder~Population+Illiteracy+Income+Frost,data=states)
shrinkage(fit)
我对照数次都觉得我并没有输入错误,但是R却显示如下信息
Error in theta.predict(u, x[groups[[j]], ]) :
unused argument (x[groups[[j]], ])
求解答TAT谢谢大大!!