c语言gm(1 1)模型,关于R语言实现GM(1,N)模型中出现的问题

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))

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值