灰⾊预测GM11,R语⾔源程序---(包含绘图程序,结果导出csv程序)
gm1<-function(x0,t) #gm(xO,t),其中xO是向量,为原始数据,t为表⽰预测到第⼏个数据
{
xl<-cumsum(x0) #读原始数列xO,并⽤cumsum(xO)累加⽣成数列⽂1;步骤1完成
b<-numeric(length (x0)-1)
#lengthO计算xO的长度,numericO⽣成指定长度的0向量,这⾥⽣成⽐xO长度少1的0向量,记作b,实质是向量b的初始化
n<-length(x0)-1 #向量xO的长度减1,记作n
for(i in 1:n){ #循环语句i从1到n循环,步进为1
b[i]<--(xl[i] + xl[i+1])/2
}#b[i]:向量b的第i个元素
d<-numeric(length(b)) # 向量 d 初始化
d[]<-1#向量d的元素全部赋值1,即单位向量
B<-cbind(b,d) #cbind(,)以列⽅式将向量b和d合并成矩阵B;步骤2中矩阵B⽣成
BT<-t(B) #t(),将矩阵B的转置,记作BT
M<-solve(BT%*%B)
#solve(A,b),解⽅程Ax=b,返回x的值,如果b缺失,则返回A的逆矩阵,这⾥M是BT * B的逆矩阵* %是乘法运箅符记作BT
yn<-numeric(length(x0)-1) # 向量 yn 初始化
yn<-x0[2:length(x0)] #将原始向量xO除第⼀个外的其余元素赋与yn步骤2的yn⽣成
alpha<-M%*%BT%*%yn #最⼩⼆乘法计算微分⽅程参数,a和u赋予向量alpha
alpha2<-matrix(alpha, ncol =1)
a<-alpha2[1] #提取参数a似乎直接从alpha提也⾏
u<-alpha2[2] #提取参数u步骤3完成
y<-numeric(length(c(1:t))) # 向量 y 初始化
y[1]<-x0[1] #原数列的第⼀个数值付给y的第⼀个数值
for(w in 1:(t-1))数据分析图表
{
y[w+1]<-(x0[1]-u/a)*exp(-a*w) + u/a
} #建模⽣成模型计算值完成步骤4
xy<-numeric(length(y)) #向量xy 初始化
xy[1]<-y[1] #向量xy的第1个与y的第1个值不变,初始化
for(o in 2:t)
{
xy[o]<-y[o]-y[o-1]
} #数据还原xy为还原值。完成步骤5
xy<-round(xy,4)
m<-length(x0)
相机感光度e<-numeric(length(x0)) #残差向量 e 初始化
for(L in 1 :m)
{
e[L]<-xy[L]-x0[L]
} #循环语句计算残差向量e
e<-round(e,4)
q<-numeric(length(x0)) #相对误差向量初始化
for(L in 1:m){
q[L]<-(e[L]/x0[L]) * 100
} #循环语句计算相对误差向量q完成步骤6
q<-round(q,4)
<-sd(e) #计算残差向量e标准差
sx<-sd(x0) #计算原数列xO标准差
cv<-/sx #计算后验差⽐值C
#窗⼝打印后验差⽐值
雨的随想pe<-abs(e-mean(e))#⼩频率误差 P班级口号霸气押韵
i<-length(pe)
accumulator=0
for(L in 1:i){
if (pe[L]<0.6745 * sx) accumulator = accumulator+1
}
pv=accumulator/i #⼩频率误差P,完成步骤7
if((pv>0.95)&(cv<0.35)) d<-c("predictions is Good")
el if((pv>0.8)&(cv<0.4)) d<-c("predictions is Qualified")
el if((pv>0.7)&(cv<0.45)) d<-c("predictions is Reluctantly")
el d<-c("predictions is not good")
list(model=paste("a=",round(a,4),"u=",round(u,4)),original.data=x0,
list(model=paste("a=",round(a,4),"u=",round(u,4)),original.data=x0,
lAGO.predictions=y,predict.values=xy,Residuals==q,C=cv,P==d)
}
<<-function(list,start=1,frequency=0)
{
m1<-list
x0<-m1$original.data
xy<-m1$predict.values
lonx0<-length(x0)
lonxy<-length(xy)
mx<-max(max(xy),max(x0))
mn<-min(min(xy),min(x0))
one<-(mx-mn)/25
if((start&TRUE)&(frequency&TRUE)){
x1<-q(start,start+(lonxy-1)*frequency,frequency)
x2<-q(start,start+(lonx0-1)*frequency,frequency)
plot(x1,xy,col='blue',type='b',pch= 16,xlab='Time ries',ylab='Values',ylim = c(mn-one,mx+one))
points(x2,x0,col='red',type='b',pch=18)
legend(locator(1),c('Predictions','Raw data'),pch = c(16,18),lty=1,col = c('blue','red'))}
超人简笔画
el if((start&T)&(frequency==F)){
frequency<-1
x1<-q(start,start+(lonxy-1)*frequency,frequency)
x2<-q(start,start+(lonx0-1)*frequency,frequency)
plot(x1,xy,col='blue',type='b',pch= 16,xlab='Time ries',ylab='Values',ylim = c(mn-one,mx+one))
points(x2,x0,col='red',type='b',pch=18)
legend(locator(1),c('Predictions','Raw data'),pch = c(16,18),lty=1,col = c('blue','red'))
}
el{plot(xy,col='blue',type='b',pch= 16,xlab='Time ries',ylab='Values',ylim = c(mn-one,mx+one))
points(x0,col='red',type='b',pch=18)
legend(locator(1),int = 0.5,c('Predictions','Raw data'),pch = c(16,18),lty=1,col = c('blue','red')) }
}
<<-function(list,file="")
{
m1<-list
x0<-m1$original.data
xy<-m1$predict.values
e<-m1$Residuals
q<-
t<-length(xy)
original.data<-numeric(t) # 结果输出阶段
original.data[]<-'NA'#全缺失值填充向量
original.data[1:length(x0)]<-x0 #原数据填充向量前端,[length(x0)5 t]的元素值缺失
predict.values<-round(xy,4)
Residuals<-numeric(t)
Residuals[]<-'NA'
什么食物含钙高
Residuals[1:length(e)]<-round(e,4) # 误差数据填充向量前端,[length(x0): t]的元素值缺失
<<-numeric(t)
<[]<-'NA'
<[1:length(e)]<- round(q,4)#相对误差数据填充向量前端,[length(xO) : t]的元素值缺失
result<-cbind(original.data,predict.values,)#合并输出原数据、预测值、残差、相对误差colnames(result)<-c("原始数据","预测值","残差","相对误差")
if(file == ""){
wd<-getwd()
wd2<-paste(wd,"result.csv",p="/")
print(wd2)
write.table(result,file=wd2,p=",",row.names = F)
}
el{
write.table(result,file=file,p=",",row.names = F)
print(file)
动漫头像女图片print(file) }
}
>北京旅游攻略5日游