#灰色预测模型GM(1,1)
#数据使用文献数据:基于灰色模型的中国职业性耳鼻喉口腔疾病发病预测研究
#已知2011-2018年全国职业性耳鼻喉口腔疾病发病人数,使用GM(1,1)模型预测发病数
x0<-c(532,639,716,880,1097,1276,1608,1528)#原始发病数
#目前R语言中暂无灰色模型,需手工实现R语言的灰色模型函数
#第一步:建模可行性分析,级比检验
exp(-2/(8+1));exp(2/(8+1))#级比区间(0.80,1.25)
len=length(x0)
a<-as.numeric()#循环前需建立一个目标a空值
for (i in 2:len){
a[i]<-x0[i-1] / x0[i]
a}
a#序列所有级比落入(0.80,1.25)区间内,可进行建模
#第二步:GM(1,1)建模
gm<-function(x0,t){ #x0为输入序列,t为预测个数
x1<-cumsum(x0) #(1)累加生成序列1-AGO序列(累加生成序列)
b<-numeric(length (x0)-1)#length(x0)计算x0的长度,numeric(x0)生成指定长度的0向量,这里生成比x0长度少1的0向量,记作b
n<-length(x0)-1 ## n 为length(x0)-1长度,因为需要生成MEAN(紧邻均值)序列,其长度少1
for(i in 1:n){ #(2)循环语句i从1到n循环,生成x1的紧邻均值序列
b[i]<--(x1[i] + x1[i+1])/2
b}#得序列b,即为x1的紧邻