灰色预测工具包开发
推荐使用工具: - 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包中的实用函数主要有:
模型类:
算子类:
背景值:
可视化
结果分析:
coef: 提取一个灰预测模型的参数估计值
结果输出:
以上所有函数的使用方法均可在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)模型计算的集成函数,参数包括三个:
y:(不可缺省)原始数据,至少4个元素以上的向量;
pattern:(可缺省)预测类型,默认为“forecast",即仅返回GM(1,1)预测数值,当设为“parameter"时返回一个greyforecasting类型的所有参数值。
(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
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.