gm13
x11
x21
x31
b
n
for(i in 1:n){ #生成x10的紧邻均值生成序列
b[i]
b} #得序列b,即为x10的紧邻均值生成序列
B
BT
M
YN
YN
alpha
alpha2
a
u1
u2
cat("GM(1,N)参数估计值:",'\n',"系统发展系数-a=",-a," ",
"驱动系数u1=",u1,'\n','\n',
"驱动系数u2=",u2,'\n','\n')#利用最小二乘法求得参数估计值a,u1,u2
y
y[1]
for(w in 1:(t-1)){ #将a,u1,u2的估计值代入时间响应序列函数计算x10拟合序列y
y[w+1]
}
cat("x(11)的模拟值:",'\n',y,'\n')
xy
xy[1]
for(o in 2:t){ #运用后减运算还原得模型输入序列10预测序列
xy[o]
}
cat("x(10)的模拟值:",'\n',xy,'\n','\n')
#计算残差e
e
for(l in 1:length(x10)){
e[l]
}
cat("残差:",'\n',e,'\n')
#计算相对误差
e2
for(s in 1:length(x10)){
e2[s]
}
cat("相对残差:",'\n',e2,'\n','\n')
cat("残差平方和=",sum(e^2),'\n')
cat("平均相对误差=",sum(e2)/(length(e2)-1)*100,"%",'\n')
cat("相对精度=",(1-(sum(e2)/(length(e2)-1)))*100,"%",'\n','\n')
#后验差比值检验
avge
avgx10
cv
cat("后验差比值检验:",'\n',"C值=",cv,'\n')#对后验差比值进行检验,与一般标准进行比较判断预测结果好坏。
if(cv < 0.35){
cat("C值<0.35, GM(1,N)预测精度等级为:好",'\n','\n')
}else{
if(cv<0.5){
cat("C值属于[0.35,0.5), GM(1,N)模型预测精度等级为:合格",'\n','\n')
}else{
if(cv<0.65){
cat("C值属于[0.5,0.65), GM(1,N)模型预测精度等级为:勉强合格",'\n','\n')
}else{
cat("C值>=0.65, GM(1,N)模型预测精度等级为:不合格",'\n','\n')
}
}
}
#画出输入序列x10的预测序列及x10的比较图像
plot(xy,col='blue',type='b',pch=16,xlab='时间/年',ylab='全国人均每次国内旅游消费/元')
points(x10,col='red',type='b',pch=4)
legend('topleft',c('预测值','原始值'),pch=c(16,4),lty=l,col=c('blue','red'))
}
getwd()
#缺失值处理
data=read.xlsx("data1.xls",2)
data$X2=as.numeric(as.character(data$X2))
sub=which(is.na(data$X2))
print (sub)
print(data[1,])
value=data$X1[1]-(data$X2[3]-data$X2[2])
data$X2[sub]=value
x10 = data$Y..
x20 = data$X1
x30 = data$X2
gm13(x10,x20,x30,length(x10))