R语言十倍交叉验证
#install.packages(“bootstrap”)
library(bootstrap) #crossval函数实现k重交叉验证
shrinkage <- function(fit,k=10){
states
require(bootstrap)
theta.fit <- function(x,y){lsfit(x,y)} #最小二乘拟合结果
theta.predict <- function(fit,x){cbind(1,x)%*%fit$coef}
x <- fit
m
o
d
e
l
[
,
2
:
n
c
o
l
(
f
i
t
model[,2:ncol(fit
model[,2:ncol(fitmodel)]
y <- fit$model[,1]
results <- crossval(x,y,theta.fit,theta.predict,ngroup = k)
r <- cor(y,fit$fitted.values)
r2cv <- cor(y,results$cv.fit)
cat(“Original R-square =”,r,“\n”) #将多个参数连接起来
cat(k,“Fold Cross-Validated R-square =”,r2cv,“\n”)
cat(“Change =”,r-r2cv,“\n”)
}
#对数据states所有预测变量进行回归,然后用shrinkage()函数做10重验证
data <- read.table(“1Shannon_20230414.txt”, header = T)
data1 <- as.data.frame(data)
fit0 <- lm(Shannon~K1_Log,data=data1)
shrinkage(fit0)