svm 支持向量机 回归 预测_时间序列(ARIMA)+支持向量机(SVM)+优化=组合预测...

最近有朋友问我传染病预测模型,今天给大家介绍一个时间序列arima模型+支持向量机svm的组合预测,有什么不足的请指出了,时间序列是一个大类,我今天主要是给大家展示的是最常用的arima. 这里原理就不介绍了,只讲应用,大家可以自己搜索原理,目前也是帮别人处理的模型,根本不需要研究原理,只是给大家提供一个思路。

先来看看组合预测原理:

svm 支持向量机 回归 预测_时间序列(ARIMA)+支持向量机(SVM)+优化=组合预测..._第1张图片

接下来我们进入正题:

载入数据

dt=read.csv(“C://Users//疾病预测//数据.csv”) #读入数据

将数据转换成时间序列

irline2 airts plot.ts(airts)# 转化为时间序列,以2011年2月为起点,12个月周期

svm 支持向量机 回归 预测_时间序列(ARIMA)+支持向量机(SVM)+优化=组合预测..._第2张图片

差分及去除季节性(这个是重点)

##少一个diff,看效果就不一样 

svm 支持向量机 回归 预测_时间序列(ARIMA)+支持向量机(SVM)+优化=组合预测..._第3张图片

严重具有季节性,需要去除,所以要多加diff()

airdiff plot.ts(airdiff) #这个是重点,这里的第一个diff是一阶差分,让数据更平稳;第二个diff是对数据去除周期性

svm 支持向量机 回归 预测_时间序列(ARIMA)+支持向量机(SVM)+优化=组合预测..._第4张图片

现在季节性完全消失了,接下来做adf检验,

ADF检验

svm 支持向量机 回归 预测_时间序列(ARIMA)+支持向量机(SVM)+优化=组合预测..._第5张图片

p=0.01<0.05 通过检验

svm 支持向量机 回归 预测_时间序列(ARIMA)+支持向量机(SVM)+优化=组合预测..._第6张图片

这个图像截尾图

svm 支持向量机 回归 预测_时间序列(ARIMA)+支持向量机(SVM)+优化=组合预测..._第7张图片

这个图像拖尾图 通过上面2个图还是不好判断阶数,

自动定阶

自动定阶,很多是在原始数据上面自动确定,但是在差分以后的数据自动定阶,求解出的结果中间差分变量需要加上前面几阶差分最为最后模型的差分数

auto.arima(airdiff,trace=T)#自动定阶

svm 支持向量机 回归 预测_时间序列(ARIMA)+支持向量机(SVM)+优化=组合预测..._第8张图片

轮流组合

求出最优组合的以后,预测的方式有2种 

1: 在差分以及去季节化以后的数据,采用这个最优组合预测,预测结果再差分还原 

2: 直接在原始数据上面,再最优组合上面,差分的地方分别加前面的差分 ;比如求解为 3,0,0加上前面一阶差分就是3,1,0 

我这里选择的第二种 

airarima1 airarima1airarima2 airarima2airarima3 airarima3

预测结果为

svm 支持向量机 回归 预测_时间序列(ARIMA)+支持向量机(SVM)+优化=组合预测..._第9张图片

预测结果与实际值相减,

svm 支持向量机 回归 预测_时间序列(ARIMA)+支持向量机(SVM)+优化=组合预测..._第10张图片

残差4个循环

选择4个的原因是当初模板这样的,数据量太少。合理的做法是需要循环的残差的个数按1逐步增加(例如第一次选择一个残差数据,他的下一个最为模型的输出,保留误差,第二次选择2个残差数据输入,第三个残差数据最为模型输出,依次循环递增),选择让模型误差最小的循环的残差数据的个数, 

svm 支持向量机 回归 预测_时间序列(ARIMA)+支持向量机(SVM)+优化=组合预测..._第11张图片

前面4列作为svm的输入,第5列作为svm的输出 

svm 支持向量机 回归 预测_时间序列(ARIMA)+支持向量机(SVM)+优化=组合预测..._第12张图片

组合预测结果

svm 支持向量机 回归 预测_时间序列(ARIMA)+支持向量机(SVM)+优化=组合预测..._第13张图片

附录–详细代码

安装包install.packages("zoo")install.packages("forecast")install.packages("tseries")install.packages("e1071")# 载入包library("e1071")library("tseries")library("zoo")library("forecast")dt=read.csv("C://Users//疾病预测//数据.csv") #读入数据airline2 airts plot.ts(airts)# 转化为时间序列,以2011年2月为起点,12个月周期airdiff plot.ts(airdiff) #这个是重点,这里的第一个diff是一阶差分,让数据更平稳;第二个diff是对数据去除周期性adf.test(airdiff, alternative="stationary", k=0)  #检验序列平稳性 用过了检验才可以去测试acf and pcaf  不然。无用功。#adf与pacf的检验,初期定阶acf(airdiff, lag.max=20)acf(airdiff, lag.max=20,plot=FALSE)pacf(airdiff, lag.max=20)pacf(airdiff, lag.max=20,plot=FALSE)auto.arima(airdiff,trace=T)#自动定阶#根据自动定阶的结果,选择最优的组合airarima1 airarima1airarima2 airarima2airarima3 airarima3airforecast airforecastplot.forecast(airforecast)   #画预测图ycforecast write.csv(tq[1],file="C://Users//疾病预测//yc1.csv")#写出数据sub1=dt[56:68,2]-tq[1] #残差sub1=as.matrix(sub1)  #转换成矩阵#4个数据循环xindt=matrix(NA,4,length(sub1)-6)for (i in 1: 10){   xindt[,i]=c(sub1[i],sub1[i+1],sub1[i+2],sub1[i+3]) }inputDataset.seed(100) # for reproducing resultsrowIndices sampleSize trainingRows trainingData testData #这里解释下,样本太少了,莫法交叉寻优,本人亲测,样本多了,就可以寻找最优的Cost and gamma#tuned #summary (tuned) # to select best gamma and cost  svmfit print(svmfit)predict(svmfit, trainingData[,1:4])compareTable View(compareTable)yc1=predict(svmfit, t(xindt))write.csv(yc1,file="C://Users//疾病预测//yc2.csv")#写出数据#预测后面第1个h1=sub1[10:13,1]h1=as.matrix(h1)row.names(h1)th1=predict(svmfit, t(h1))#预测后面第二个h2=c(sub1[11:13,1],th1)h2=as.matrix(h2)row.names(h2)th2=predict(svmfit, t(h2))#预测后面第三个数h3=c(sub1[12:13,1],th1,th2)h3=as.matrix(h3)row.names(h3)th3=predict(svmfit, t(h3))

本公众号部分精彩历史文章:

04:如何在R软件中求一致性指数(Harrell'concordance index:C-index)?

05:Nomogram 绘制原理及R&SAS实现.

06  :Lasso方法简要介绍及其在回归分析中的应用

07  : 最优模型选择中的交叉验证(Cross validation)方法

08  : 用R语言进行分位数回归(Quantile Regression)

09  : 样本数据中异常值(Outliers)检测方法及SPSS & R实现

10  : 原始数据中几类缺失值(Missing Data)的SPSS及R处理方法

11  :  [Survival analysis] Kaplan-Meier法之SPSS实现

12  :  [Survival analysis] COX比例风险回归模型在SPSS中的实现

13  :  用R绘制地图:以疾病流行趋势为例

14  :  数据挖掘方法:聚类分析简要介绍 及SPSS&R实现

15  :  医学研究中的Logistic回归分析及R实现

16  :  常用的非参数检验(Nonparametric Tests)总结

17  :  高中生都能看懂的最小二乘法原理

18  :  R语言中可实现的常用统计假设检验总结(侧重时间序列)

19  :  如何根据样本例数、均数、标准差进行T-Test和ANOVA

20  :  统计学中自由度的理解和应用

21  :  ROC和AUC介绍以及如何计算AUC

22  :  支持向量机SVM介绍及R实现

23  :  SPSS如何做主成分分析?

24  : Bootstrap再抽样方法简介

25  :  定量测量结果的一致性评价及 Bland-Altman 法的应用 

26  :  使用R绘制热图及网络图  

27  :  几种常用的双坐标轴图形绘制 

28  :  遗失的艺术—诺谟图(Nomogram) 

29  :  Nomogram 绘制原理及R&SAS实现(二) 

30  :  WOE:信用评分卡模型中的变量离散化方法 

31  :  结构方程模型(SEM)简介及教程下载  

32  :  重复测量的多因素方差分析SPSS实现操作过程 

回复文章前代码数字如“04”即可查看或直接查看历史文章。

公众号:survival-analysis QQ:8243033

邮箱:8243033 @ qq.com 欢迎关注!



svm 支持向量机 回归 预测_时间序列(ARIMA)+支持向量机(SVM)+优化=组合预测..._第14张图片

你可能感兴趣的:(svm,支持向量机,回归,预测)