我的目的是模拟未来某个特定位置(例如东京)的每日温度的多种情况,并观察动态。 为此,我在删除原始数据的趋势和季节性之后尝试了 statsmodels.tsa.arima_model.ARMAResults.forecast 函数,通过KPSS测试和ADF测试确认了剩余数据的平稳性,并搜索了正确的顺序。 ARMA模型,通过 statsmodels.tsa.arima_model.ARIMA.fit(method ='mle',trend ='nc')对该模型进行了拟合。 但是,结果不是我想要的。预测的每日温度为单一温度,因此很快收敛到零(即[0.04579973,-0.35632123、0.27349546,-0.14268638,-0.01815464, 0.06129577,-0.01736912,-0.03543152、0.04223661,-0.01285459, -0.01444013、0.01744708,-0.00351766,-0.0083289、0.00844778 ....]),尽管它为我提供了机密间隔信息。 有人会告诉我如何模拟温度闪烁的发展吗?
Python版本:3.6.7 统计模型版本:0.9.0 环境:Google Colab
TS是已除去趋势和季节性的时间序列数据(pd.Series)。 ADF / KPSS测试已经确认了平稳性。
print(sm.tsa.arma_order_select_ic(TS, ic='aic', trend='nc'))
#(4, 1)
arima_mdl = smt.ARIMA(TS, order=(4,0,1)).fit(method='mle', trend='nc')
arima_mdl.summary()
# coef std err z P>|z| [0.025 0.975]
#ar.L1.residual_base 1.4031 0.013 104.805 0.000 1.377 1.429
#ar.L2.residual_base -0.4380 0.017 -25.640 0.000 -0.471 -0.405
#ar.L3.residual_base 0.0433 0.017 2.621 0.009 0.011 0.076
#ar.L4.residual_base -0.0243 0.010 -2.375 0.018 -0.044 -0.004
#ma.L1.residual_base -0.9187 0.009 -98.722 0.000 -0.937 -0.900
#Roots
# Real Imaginary Modulus Frequency
#AR.1 1.0290 -0.0000j 1.0290 -0.0000
#AR.2 2.0195 -0.0000j 2.0195 -0.0000
#AR.3 -0.6329 -4.4078j 4.4530 -0.2727
#AR.4 -0.6329 +4.4078j 4.4530 0.2727
#MA.1 1.0885 +0.0000j 1.0885 0.0000
以及下面的预测代码:
arima_mdl.forecast(steps=200,alpha=0.05)
#array([-8.56316155e-01, -4.25869289e-01, -2.84155971e-01, -2.06066070e-01, -1.62323717e-01, -1.39464719e-01, -1.26609792e-01, -1.18587231e-01,-1.13033412e-01, -1.08753068e-01, -1.05144590e-01, -1.01910598e-01,-9.89029729e-02, -9.60471132e-02, -9.33049505e-02, -9.06565532e-02,-8.80909949e-02, -8.56018380e-02, -8.31848964e-02, -8.08371274e-02,...
答案 0 :(得分:0)
我发现 sm.tsa.arma_generate_sample 功能可以帮助我完成以下操作。
arparams = np.array([1.4031,-0.4380,0.0433,-0.0243])
maparams = np.array([-0.9187])
ar = np.r_[1, -arparams] # add zero-lag and negate
ma = np.r_[1, maparams] # add zero-lag
arimasim = sm.tsa.arma_generate_sample(ar, ma, 3)
arimasim
上面的代码生成了3天的单个场景。 通过包装逻辑并将其映射几次,我可以观察动态。