1. 程式人生 > >5折交叉驗證的迴歸分析

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)