Eviews时间序列模型,时间序列回归模型步骤
指的是利用序列中上一步或上一步的值来获得预测下一步的值。
例如x(t )=B0B1*x) T-1) B2*x) T-2))))))。
统计可用于计算输出变量和不同时间滞后之前的值之间的相关性。输出变量与特定滞后变量的相关性越强,自回归模型在建模时对该变量的权重就越大。
有趣的是,如果所有滞后变量与输出变量相关性很小或没有相关性,这表明时间序列问题可能是不可预测的。
我们的数据如上
首先,快速检查自相关值的散点图。
可以快速直观的检查时间序列数据集中是否存在自相关。您可以在散点图上绘制前一时间步(t-1)的观察值,并在散点图上绘制下一时间步(T-1)的观察值。这可以手动完成。首先,创建一个时间序列数据集的延迟版本,然后使用panda库中内置的散点图功能。但是有更简单的方法。Panda提供了内置的plot,称为thelag_plot()函数来实现这一点。本节提供了一个为最低日温度数据集创建滞后图表的示例。
frompandasimportseriesfromatplotlibimportyplotfrompandas . tools . plottingimportlag _ plot series=series . from _ CSV(
沿着对角线的这个规则图形表明可能存在自相关。
第二,快速查看自相关的皮尔逊相关系数。
微信微信官方账号。
这将产生一个介于-1(负相关)和1(正相关)之间的两个变量的相关汇总数,表示较小的值在接近0时相关性较低,较大的值在0.5以上或-0.5以下相关性较高。Corr))函数可以方便地计算依赖关系。
frompandasimportseries frompandasimportdataframefrompandasimportconcatfrommatplotlibimportyplotseries=series . from _ CSV header=0(values)=data frame(series . values)data frame=concat([values . shift]1),values))。
t-1 1.00000 0.77487
t 1 0.77487 1.00000
可见相关系数0.7还是有很大的相关性的。
第三,检查大型数据集的自相关性。
可以画出每个滞后变量的相关系数。这样,我们可以立即知道哪些滞后变量可能是预测模型中使用的最佳候选变量,以及观测值与历史值之间的关系如何随时间变化。您可以手动计算每个滞后变量的相关值,并绘制结果。幸运的是,panda提供了一个名为autocorrelation_plot()函数的内置渲染。此图像显示了X轴上的凸耳数量和Y轴上-1和1之间的相关系数值。该图还包括实线和虚线,分别代表相关值的95%和99%置信区间。线上的这些相关值比线下的更重要,并提供阈值或截止值来选择更相关的滞后值。
frompandastimportseriesfromatplotlibimportyplotfrompandas . tools . plottingimportautocorrelation _ plot series=series . fries . fret
statsmodelslibraryalsoprovidesaversionofplotintheplot _ ACF(functionasalineplot).
frompandasimportseriesfromatplotplibimportpyplotfromstatsmodels . graphics . tsaplotsimportplot _ ACF series=series . from
事实上,这种相关性可以用来选择特征变量。我最初在比特公司选择了皮尔逊变量。根据p值的大小。
嗯,我觉得他只能描述线性相关。最终,我没有在项目中使用这种方法。我使用了随机森林和RFE的方法。
这里当然我觉得自相关主要是看滞后项是否有用,一般进行自回归是有用的。所以是对自回归模型的初步检验,或者最好不要用这种方法挑选变量。
好了,现在我们用自回归模型来预测。
目的:利用前一时间的温度来预测今天的温度。
基线:就用前一天的数值作为今天的温度值。
从熊猫导入序列从熊猫导入数据帧从熊猫导入联结合并多个字符串从绘制精美的图表导入pyplot从sklearn.metrics导入均方误差级数=级数。来自CSV(每日最低温度。CSV ,header=0)#创建滞后数据集值=数据框(系列。值)数据框=concat([值。shift(1),values),axis=1)dataframe.columns=[t-1 , t 1]#拆分为训练和测试集sX=dataframe.valuestrain,test=X
预测集上表现如上
下面看自回归型号:
自回归模型是使用滞后变量作为输入变量的线性回归模型。
我们可以使用sci工具包-学习中的线性回归类手工计算线性回归模型,手工指定要使用的滞后输入变量。
另外,统计模型库提供了一个自动回归模型,该模型使用统计测试自动选择适当的滞后值,并训练线性回归模型。它是在阿肯色州类中提供的。我们可以使用这个模型,首先创建模型AR(),然后调用适合()在数据集上训练它。这将返回一个ARResult对象。
一旦合适,我们就可以通过调用预测()函数来对未来的一些观察结果进行预测。这将创建一个七天预测
划重点:也就是我们划分试验集合没啥意义了,用火车去训练,然后利用预测自动给出来以后n天的预测,测试的t-1时刻的数据根本没有用到,只是用试验的t时刻数据当做y看看我们自动预测的好不好而已
从pandas导入系列从matplotlib导入pyplot从stats模型。运输安全管理局。ar _ model从sk learn导入ar。度量导入均方误差系列=系列。来自CSV(每日最低温度。CSV ,header=0)# split datasetX=series。值strain,test=X[1:len(X)-7],X[len(X)-7:]#train和试验都是一个列#训练自回归模型=AR(训练)# AR(训练)之后对这一个时间序列自动滞后很多项去做线性回归,并且选出来合适的滞后项model _ fit=模型。fit()print( Lag:% s % model _ fit。k _ ar)print(系数:% s % model _ fit。params)# make predictions=model _ fit。predict(start=len(训练),end=len(训练)len(测试)-1,dynamic=False)#注意我这里预测只是指定我想预测的以后的多步的范围,我用的数据只是火车的数据,测试我并没有去构建多个滞后项去拟合,这从代码里面没有涉及到试验也可以看出来对于范围内的I(len(预测)):print(预测=% f,预期=%f %(预测[i],测试[i]))#看看我的预测和真是的值error=mean_squared_error(测试,预测)print( Test MSE:%。3f“%错误)#绘图结果pyplot。绘图(测试)pyplot。plot(预测,color=red)pyplot.show()结果如下:
滞后:29
系数电子邮件地址
4.00650265电子02 3.93020055电子02 2.59463738电子02 4.46675960电子02
1.27681498e-02
5.75906178 e-04 2.48096415 e-02
7.40316579e-03
1.87870751 e-02
-1.77162867 e-03 1.67319894 e-02 1.97615668 e-02 9.83245087 e-03
6.22710723e-03 -1.37732255e-03]
预测值=11.871275,期望值=12.900000
预测值=13.053794,预期值=14.600000
预测值=13.532591,预期值=14.000000
预测值=13.243126,预期值=13.600000
预测值=13.091438,预期值=13.500000
预测值=13.146989,预期值=15.700000
预测值=13.176153,预期值=13.000000
测试均方误差:1.502
效果额没有很好,这其实就是预测多步!
这很不符合我们机器学习的思想鸭!我们机器学习是想说,在试验集合上利用火车的系数和变量去拟合预测,然后再比较效果,下面给出了这个思路的代码
从pandas导入系列从matplotlib导入pyplot从stats模型。运输安全管理局。AR _ model从sk learn导入AR。度量导入均方误差系列=系列。来自CSV(每日最低温度。CSV ,header=0)# split datasetX=series。值应变,test=X[1:len(X)-7],X[len(X)-7:]#训练自回归模型=AR(训练)模型_拟合=模型。fit()windows=model _ fit。k _ arco ef=模型_拟合结果如下:
预测值=11.871275,期望值=12.900000
预测值=13.659297,期望值=14.600000
预测值=14.349246,预期值=14.000000
预测值=13.427454,预期值=13.600000
预测值=13.374877,预期值=13.500000
预测值=13.479991,预期值=15.700000
预测值=14.765146,期望值=13.000000
测试均方误差:1.451
呃其实有点细节没搞明白,以后再翻过来看
https://机器学习掌握。com/自回归-模型-时间序列-预测-python/