我正在尝试使用 python statsmodels 进行样本外预测。我不想只预测训练集末尾的下一个 x 个值,但我想一次预测一个值并在预测时考虑实际值。换句话说,我想做滚动 1 期预测,但我不想每次都重新校准模型。我能找到的最接近的帖子在这里:
ARMA out-of-sample prediction with statsmodels
但是,这使用的是 ARMA 而不是 ARIMA。我怎样才能用 ARIMA 实现这个或者有更好的方法吗?我知道我实际上可以提取系数并自己应用一个函数,但在我的代码中,我使用的 ARIMA 模型随着时间的推移是动态的,因此使用的系数和滞后值的数量不是恒定的。任何帮助将不胜感激。
最佳答案
如果我是对的,我遇到了非常相似的问题:基本上我想将我的时间序列分成训练集和测试集,训练模型,然后根据其过去的历史任意预测测试集的任何元素。虽然我没有设法使用 ARIMA statsmodels 类来实现它。
这就是我使用 statsmodels 的方法:我对序列应用一阶差分以实现平稳性,并计算了一个 arma 模型:
model = sm.tsa.ARMA(fitting_data, order=(p, q), dates=fitting_dates).fit()
我已将 arma 模型转换为纯 ar 模型:
ar_params = model.arparams
ma_params = model.maparams
ar_coefficients = arma2ar(ar_params, ma_params, nobs=final_ar_coeff)
nobs 参数会影响您将获得的自回归系数的数量。我尝试了几个值,增加它直到观察到预测没有显着变化。一旦你得到你的预测 w.r.t.差异系列,您想将它们带回原始系列。我实现了一种方法,给定一个或一系列预测以及预测之前的最后一个已知元素,计算原始系列中的预测:
def differenced_series_to_original(values, starting_value):
original_series = [starting_value]
[original_series.append(original_series[-1]+i) for i in values]
return original_series[1:]
显然 values 是您的预测列表,starting_value 最后一个已知元素。希望对您的问题有所帮助。
关于Python statsmodels ARIMA 预测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33661762/
查看原文>>>基于”PLUS模型+“生态系统服务多情景模拟预测实践技术应用目录第一章、理论基础与软件讲解第二章、数据获取与制备第三章、土地利用格局模拟第四章、生态系统服务评估第五章、时空变化及驱动机制分析第六章、论文撰写技巧及案例分析基于ArcGISPro、Python、USLE、INVEST模型等多技术融合的生态系统服务构建生态安全格局基于生态系统服务(InVEST模型)的人类活动、重大工程生态成效评估、论文写作等具体应用基于ArcGISPro、R、INVEST等多技术融合下生态系统服务权衡与协同动态分析实践应用 本文从数据、方法、实践三方面对生态系统服务多情景预测进行讲解。内容涵盖多
目录1.GM(1,1)模型2. 组合预测模型3. GMDH进行时间序列预测4.运行结果5Matlab代码实现1.GM(1,1)模型灰色预测是一种对具有不确定因素的系统进行预测的方法,能有效解决数据少、序列的完整性及可靠性低的问题。GM(1,1)模型是一种较为常用的灰色模型,GM(1,1)预测模型的建立实质上就是对原始数据序列作一次累加生成,使生成数据序列呈显出一定规律,然后通过建立微分方程模型,求得拟合曲线,进而对系统进行预测。2. 组合预测模型灰色模型是通过对原始数据加工处理来弱化随机性的,若数据存在较大的波动性,预测出来的结果可能会存在较大误差。ARIMA模型对于预测的模型比较理想,要求时
我正在试验Google预测示例中的language_id.txt数据集。现在我正在尝试使用以下方法更新模型:defupdate(label,data)input=@prediction.trainedmodels.update.request_schema.newinput.label=labelinput.csv_instance=[data]result=@client.execute(:api_method=>@prediction.trainedmodels.update,:parameters=>{'id'=>MODEL_ID},:headers=>{'Content-Typ
关于轴承相关的项目之前做的大都是故障识别诊断类型的,少有涉及回归预测的,周末的时候宅家发现一个轴承寿命加速实验的数据集就想着拿来做一下寿命预测。首先看下数据集如下:直接百度即可搜到,这里就不再赘述了。Learning_set为训练集Test_set为测试集我这里为了简单处理直接使用Learning_set作为总数据集,随机划分指定比例作为测试集。当然了你也可以选择分别读取加载两部分的数据分别作为训练集和测试集都可以的。每个目录下都是一堆csv文件,样例如下:样例数据内容如下:9,11,19,1.1879e+05,0.059,-0.3729,11,19,1.1883e+05,0.603,-0.0
我尝试使用convnetjs让Node.js从x,y坐标中的一行数字中学习。目标是预测简单数字行中的下一个值。首先是一个非常简单的行[0,1,0,2,0,3,0,4,0,5,0,6]也许稍后sin和cos数字行。我不想深入学习深度学习Material,所以我使用的是convnetjs。到目前为止我试过了:varconvnetjs=require("./convnet-min.js");//createanetoutofitvarnet=newconvnetjs.Net();varlayer_defs=[];layer_defs.push({type:'input',out_sx:1,o
如果轮盘游戏网站csgopolygon.com正在调用Math.random和Math.floor,我如何预测它的结果? 最佳答案 您认为在理论上可以预测Math.random结果的直觉是正确的。这就是为什么,如果你想构建一个游戏/赌博应用程序,你应该确保使用cryptographicallysecurepseudo-randomnumbergenerator.如果他们正在使用这样的东西,那就别管它了。但是,如果您是正确的,并且他们使用System.time作为Java附带的标准随机数生成器的种子,那么可能有办法。这将涉及生成数百万
最近几天我一直在尝试转换thisjsscript到python代码。到目前为止,我的实现(主要是盲目的cp,一些小修复):importrandomclassmarkov:memory={}separator=''order=2defgetInitial(self):ret=[]foriinrange(0,self.order,1):ret.append('')returnretdefbreakText(self,txt,cb):parts=txt.split(self.separator)prev=self.getInitial()defstep(self):cb(prev,self.
我正在执行JavascriptonScroll。我的代码适用于任何普通计算机鼠标,但是当我使用笔记本的触摸板时,我遇到以下情况:当手指移动滚轮时,我的鼠标会触发(大约1到8次)mousewheel事件。我的触摸板触发了更多(~60)个mousewheel事件,同时两根手指触摸触摸板并在我的手指再次悬空后继续触发。我知道移动触摸设备的这种行为。该功能称为“预测触摸”-如果您的手指移动在抬起之前有足够的加速度,则滚动会继续。我认为触摸板驱动程序正在设置这种“平滑滚动”行为。为了调试这种情况,我使用了以下代码:/*HandleMouse-WheelScrolling*/varlastChan
大家好,我是带我去滑雪! 本期使用爬取到的有关房价数据集data.csv,使用支持向量回归(SVR)方法预测房价。该数据集中“y1”为响应变量,为房屋总价,而x1-x9为特征变量,依次表示房屋的卧室数量、客厅数量、面积、装修情况、有无电梯、、房屋所在楼层位置、有无地铁、关注度、看房次数共计9项。数据集data.csv可在文末获取。 (ps,往期出过一个利用SVR预测房价,但代码没有分开讲,许多童鞋复制代码运行,总会出现各种问题,所以应童鞋要求,出一篇更为仔细的博客,大部分博主讲解SVR都采用python自带波士顿房价数据集,但很多童鞋大多都需要用到自己的数据集进行SVR建模,我想这
大家好,今天和各位分享一下如何使用Tensorflow构建CNN卷积神经网络和LSTM循环神经网络相结合的混合神经网络模型,完成对多特征的时间序列预测。本文预测模型的主要结构由CNN和LSTM神经网络构成。气温的特征数据具有空间依赖性。本文选择通过在模型前端使用CNN卷积神经网络提取特征之间的空间关系。同时,气温数据又具有明显的时间依赖性,因此在卷积神经网络后添加LSTM长短时记忆模型进行时序处理。1.获取数据集数据集自取:https://download.csdn.net/download/dgvv4/49801464本文使用GPU加速计算,没有GPU的朋友把下面调用GPU的那段代码删了就行