library(caret)
library("kernlab")
data=as.matrix(oadata)
colnames(data)=c('y','x1','x2','x17',paste("x",3:16,sep=""))
c=1000 #验证c次
set.seed(1000)
r1=matrix(0,c,1)
r2=matrix(0,c,1)
r4=matrix(0,c,1)
p1=matrix(0,14,c)
for (k in 1:c) {
index <-createDataPartition(data[,1], time=1, p=0.8, list=F)
train=data[index, ]
test=data[-index, ]
colnames(train)=c('y','x1','x2','x17',paste("x",3:16,sep=""))
colnames(test)=c('y','x1','x2','x17',paste("x",3:16,sep=""))
a.lm = lm(y~0+x1+x2+x17
+as.factor(x3)
+as.factor(x4)
#+as.factor(x5)
+as.factor(x6)
+as.factor(x7)
+as.factor(x8)
+as.factor(x9)
#+as.factor(x10)
+as.factor(x11)
+as.factor(x12)
#+as.factor(x13)
+as.factor(x14)
#+as.factor(x15)
+as.factor(x16)
,data=data.frame(train)) #train集构造anova模型,删去x5,x15,x10,x15
#assign(paste("a.lm",k,sep=""),a.lm) #记为ak
#summary(a.lm)
#assign(paste("beta",k,sep=""),data.matrix(coef(a.lm))) #系数betak
ytest=predict(aov(a.lm),data.frame(test[,2:18]))
#assign(paste("ytest",k,sep=""),ytest) #test集预测结果ytestk
resi1=abs(ytest-test[,1])/test[,1]
r1[k]=mean(resi1) #误差r1(k)
#print(mean(resi1))
p1[,k]=Anova(a.lm,singular.ok = TRUE,type="III")$Pr #p-value
m<-svm(train[,2:18],train[,1])
#assign(paste("m",k,sep=""),m)
#summary(m)
ytest2=predict(m,test[,2:18])
#assign(paste("ytest2_",k,sep=""),ytest2)
resi2=abs(ytest2-test[,1])/test[,1]
r2[k]=mean(resi2) #误差
#print(mean(resi2))
#svm,kernel=RBF
s=ksvm(train[,2:18],train[,1],kernel = "rbfdot")
s.ytest=predict(s,test[,2:18],type = "response")
r4[k]=mean(abs(s.ytest-test[,1])/test[,1])
}
mean(r1)
mean(r2)
mean(r4)
#最终模型
af.lm = lm(y~0+x1+x2+x17
+as.factor(x3)
+as.factor(x4)
#+as.factor(x5)
+as.factor(x6)
+as.factor(x7)
+as.factor(x8)
+as.factor(x9)
#+as.factor(x10)
+as.factor(x11)
+as.factor(x12)
#+as.factor(x13)
+as.factor(x14)
#+as.factor(x15)
+as.factor(x16)
,data=data.frame(data))
summary(af.lm)
Anova(af.lm,singular.ok = TRUE,type="III")
#ytest=predict(aov(af.lm),data.frame(test[,2:18]))
#p1[,k]=Anova(af.lm,singular.ok = TRUE,type="III")$Pr #p-value
mf<-svm(data[,2:18],data[,1])
mf
#svm,kernel=RBF
sf=ksvm(data[,2:18],data[,1],kernel = "rbfdot")
sf