#采用模型:y5 = (a + bX + cX2)/k = A + BX + CX2 (模型5变形)
#用前5个数据文件拟合系数,用后6个的数据取平均计算绝对误差与相对误差
filenames<-c("西湖道")
filenames<-paste(filenames,".csv",sep="")
for(filename in filenames)
{
#1.读入数据文件拟合:
#读取0411-0415的来拟合系数
files<-c(11:15)
files<-paste("G:/实验/201104",files,"/",filename,sep="")
data<-read.csv(files[1], row.names=1, head=TRUE)
files<-files[2:5]
for(file in files)
{
temdata<-read.csv(file, row.names=1, head=TRUE)
data<-rbind(data, temdata)
}
nrow(data) #//查看行数
data<-data[order(data$qiehuan),] #//排序
sw<-data$qiehuan
GPSvector<-data$gps
z<-lm(GPSvector~sw+I(sw^2)) #//二次拟合
plot(sw, GPSvector)
lines(sw, fitted(z), col="red", lwd=4) #//拟合图
# 暂停
warning(filename,immediate.=TRUE)
flush.console()
Sys.sleep(10)
#2. 验证模型
#读入0419-0424来计算误差
verfiles<-c(19:24)
verfiles<-paste("G:/实验/201104",verfiles,"/",filename, sep="")
verdata<-read.csv(verfiles[1])
verfiles<-verfiles[2:6]
for(verfile in verfiles)
{
vertemdata<-read.csv(verfile)
verdata$qiehuan<-verdata$qiehuan + vertemdata$qiehuan
verdata$gps<-verdata$gps + vertemdata$gps
}
verdata$qiehuan<-verdata$qiehuan/6
verdata$gps<-verdata$gps/6
fun<-function(X) {33.04 - 0.03632*X + 0.00001662*X^2}
calres<-fun(verdata$qiehuan) #//计算结果
trures<-verdata$gps #//真实结果
barplot(calres-trures, main="绝对误差", names.arg=c(0:95), xlab="时间", ylab="km/h") #//计算main绝误差
# 暂停
warning(filename,immediate.=TRUE)
flush.console()
Sys.sleep(7)
barplot((calres-trures)/trures, main="相对误差", names.arg=c(0:95), xlab="时间") #//计算相对误差
# 暂停
warning(filename,immediate.=TRUE)
flush.console()
Sys.sleep(7)
}