LOOCV交叉验证题

这篇博客介绍了LOOCV(Leave-One-Out Cross-Validation)交叉验证方法,并通过R语言展示了如何应用于线性回归模型。文章通过生成数据、设定种子数,然后用LOOCV计算MSE,比较不同阶数多项式模型的性能,寻找最佳模型参数。
摘要由CSDN通过智能技术生成

#p是多少个变量x,p=1;n是100,记录了n行数据
set.seed(1)
y=rnorm(100)
x=rnorm(100)
y=x-2x^2+rnorm(100)
plot(x,y)
##############
set.seed(1)
y=rnorm(100)
x=rnorm(100)
y=x-2
x^2+rnorm(100)

error=c() #因为循环里出现了error[i]
d=cbind(x,y) #c是竖着合并 r是横着合并
d=as.data.frame(d)
#前两步可合并为 d= data.frame(x,y)

for(i in 1:100)
{
m1=glm(y~x,data = d[-i,]) #去掉第i行的线性方程,此时一横行就是一个x+y了
pred_m1=predict(m1,newdata=d[i,])
error[i]=d[i,2]-pred_m1 #第i行第二列即y:真实值-预测值
}
sum(error^2)/dim(d)[1] #MSE LOOCV 1代表行,2代表列,即100

###################
library(boot)
ml=glm(y~x,data=d)
mlr=cv.glm(data=d,glmfit=ml,K=100) #k=n=100 #广义线性模型的交叉验证:估算K折交叉验证的预计误差
mlr$delta

ml2=glm(y~poly(x,2),data=d)
mlr2=cv.glm(data&#

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值