5折交叉验证的回归分析

w<-read.csv("C:\\Users\\Administrator\\Desktop\\mg.csv",header=T)
#样本的个数为1385,5折交叉验证
n=1385
zz1=1:n
zz2=rep(1:5,ceiling(1385/5))[1:n]
set.seed(100)
zz2=sample(zz2,n) #有放回抽样
NMSE=rep(0,5)
NMSE0=NMSE
for(i in 1:5){
  m=zz1[zz2==i]
  a<-lm(y~.,w[-m,]) #线性回归模型
  y0<-predict(a,w[-m,]) #对训练集集预测
  y1=predict(a,w[m,])  #对测试集预测
  NMSE0[i]=mean((w$y[-m]-y0)^2)/mean((w$y[-m]-mean(w$y[-m]))^2)
  NMSE[i]=mean((w$y[m]-y1)^2)/mean((w$y[m]-mean(w$y[m]))^2)
}
NMSE0=mean(NMSE0) #训练集的标准化均方误差
NMSE=mean(NMSE) 

你可能感兴趣的:(R语言,5折交叉验证的回归分析)