README.md

greyforecasting

Project Status: Active – The project has reached a stable, usable state and is being actively developed.

灰色预测工具包开发

工具加载方法

推荐使用工具: - R语言https://cloud.r-project.org/ - Rstudiohttps://www.rstudio.com/products/rstudio/download/

在Rstudio的环境中加载工具包。首先,下载devtools包并在环境中加载

install.packages("devtools")
library("devtools")

然后,直接从github上在线加载该工具包

install_github("exoplanetX/greyforecasting")

之后,以工具包方式加载

library(greyforecasting)

更新说明

2021.12.18 修订abgr()函数,增加参数piece,默认为piece=4,与roll()函数中的参数对应,能够设置滚动预测中的数据切片长度。

2021.11.26 修订fgm()函数,对所有建模函数增加了模型名称属性,加入一个使用ggplot2画图的函数,可以同时绘制多个模型在同一张散点图中。 建模数据创建的向量默认元素名称是连续整数,类似年份。若数据名称非连续整数,请在创建向量时不要加元素名。

md1=gm(y)
md2=dgm(y)
gsplot(md1,md2)

2021.5.23 修订了conplot——被遗忘了两年的函数,同时连带修订了plot参数,可以增加xlab和ylab标题,但如果想在标题中用非ASCII字符,例如中文,推荐用如下工具:

install.packages("showtext")
library("showtext")
showtext_auto()

2021.5.22 近期对代码进行了一些修补,删除了一些无用参数,增加了verhulst等模型,加入了数据导出到excel文件功能。

灰色预测程序包

程序包中的代码使用S3类创建,与R语言其他模型格式保持一致。 灰色预测模型程序的使用基本示例如下

程序包中的函数一览

greyforecasting包中的实用函数主要有:

模型类:

算子类:

背景值:

可视化

结果输出:

以上所有函数的使用方法均可在R中调取使用说明,如

help(gm) #查看gm函数的功能、格式和使用帮助

灰色预测基本模型

(1) GM(1,1)模型的计算方法

直接计算模型,模型类函数保持一致的参数格式,返回计算结果和参数。

g<-gm(y) #对案例数据y建立灰预测模型
g<-gm(y,ntest=1,term=2) #对y建模,生成2期预测数据,样本内1个数据留作验证

变量g中记录了灰色模型的所有计算结果和参数,可以使用$符号按元素提取g中存储的计算结果,并与r中命令格式保持一致,可以使用诸如coef提取参数,如:

coef(g)

另外,直接计算y的预测值可以使用gmprocess函数。目前gmprocess推荐作为过渡函数,在二次开发时候方便使用,建模可以直接使用模型函数。

y #案例数据
gmprocess(y) 
gmprocess(y, pattern="parameter") #输出模型参数

gmprocess()函数是GM(1,1)模型计算的集成函数,参数包括三个:

(2) 建模结果可视化

直接对建模结果变量使用plot函数可以生成拟合图,即

g <- gm(y)
plot(g) #输出模型g的拟合图
plot(g,forecast=TRUE) #拟合图中包含预测部分

另外,用ggplot2绘图系统做了对应散点图,例

g1 <- gm(y)
g2 <- dgm(y)
gsplot(g1,g2,save=TRUE, n_breaks=10) # n_breaks: x轴标签数量,save:存储为modelplot.pdf,dpi=600的图片文件

(3) 缓冲算子

缓冲算子作为函数可以单独调用,但主要是用于建模中作为参数调用,直接施加于模型的预处理部分,如

g<- gm(y,buff=operator,alpha=0.6) # 在gm模型中调用经典弱化缓冲算子,作用系数为0.6(默认为0.5)

滚动建模机制

model1<-roll(y,rollterm=3)

对序列y进行滚动建模,默认采用四数据为一个数据切片逐步滚动方式,模型采用GM(1,1)模型,生成3个外推预测值。roll函数返回值也是greyforecasting类,记录了整个算法的计算结果. roll函数的主要参数: - y:建模序列 - ntest: 序列后n位设置为样本外测试数据 - rollterm: 滚动外推预测期数 - model:用于对数据切片建模的基本模型 - buff: 对每个切片数据段上使用的缓冲算子,默认为NA - intensity: 缓冲算子的可变权重,默认为各缓冲算子的默认权值

具体参数请查阅

help(roll)

加入缓冲调节的滚动算法

(1) roll函数调入缓冲算子

roll函数可以调入缓冲算子对数据切片进行调节,具体方法如下:

model1<-roll(y,rollterm=3,buff=operator,intensity=0.6)

在原滚动算法基础上,对数据切片加入平均弱化缓冲算子作用,调节系数为0.6。

(2) 自适应缓冲滚动预测算法

在roll函数基础上,选取缓冲算子最优调节权重,实现对序列趋势自适应的预测算法。

model2<-abgr(y,ntest=1,model=gm,buff=svwbo,term=1)

abgr是在roll基础上进行的二次开发,使用缓冲算子将滚动数据段上的灰色模型连接起来,逐段缓冲调整后再建模预测。该函数与roll的参数基本相同,其中外推期数term对应roll中的rollterm。

模型结果的输出

该工具包代码采用S3类编写,即所有计算输出均与R语言建模方法的查看保持一致。例如:

model3<-gm(y,ntest=1,term=1) #建立GM(1,1)模型
model3 #直接打出保存模型的变量名,简要输出模型结果和参数值
summary(model3) #查看模型model3的计算结果
plot(model3) #做出model3的拟合图形
coef(model3) #提取model3的参数估计值

其中plot作图函数参数较多,列举几个重要参数:

model3<-gm(y,ntest=1,term=1) #建立GM(1,1)模型,末尾预留1期测试数据,预测1期
plot(model3,xlab="year",forecast=TRUE) #做出model3拟合图,图中包含预测部分

conplot函数将多个模型放入同一张图内做对比,格式类似plot函数

md1=gm(y)
md2=dgm(y)  #对比模型只考虑的等长拟合和预测的情况
md3=verhulst(y)
conplot(list(md1,md2,md3),forecast=TRUE) #模型以列表变量形式放入

其他参数请参考

help(plot.greyforecasting) 

模型数据存入excel文件当中

md=gm(y,term=2)
gssave(md) #默认存储路径为本地用户文件夹

模型参数的简要说明

由模型函数生成的计算结果存入'greyforecasting'类变量中,包含属性如下:

提供了一些测试数据

未完待续......

The package now is a brief tool in R, and plans to embrace all the algorithms of grey forecast theory. Any problems please contact nuaa_xuning@163.com



exoplanetX/greyforecasting documentation built on Jan. 17, 2022, 6:46 a.m.