LOOCV交叉验证题

#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&#

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值