随机采样矢量ARMA模型

时间:2019-07-10 06:05:34

标签: python-3.x time-series statsmodels arima autoregressive-models

我打算随机抽样一个VARMA模型,但是为此我似乎看不到statsmodels中的函数,我研究了ARMA上的示例,并可以成功地将其复制为1变量。

# for the ARMA
import numpy as np
from statsmodels.tsa.arima_model import ARMA 
import statsmodels.api as sm


arparams=np.array([.9,-.7])
maparams=np.array([.5,.8])
ar=np.r_[1,-arparams]
ma=np.r_[1,maparams]
obs=10000
sigma=1

# for the VARMA
import numpy as np
from statsmodels.tsa.statespace.varmax import VARMAX 

# generate a a 2-D correlated normal series
mean = [0,0]
cov = [[1,0.9],[0.9,1]]
data = np.random.multivariate_normal(mean,cov,100)

# fit the data into a VARMA model
model = VARMAX(data, order=(1,1)).fit()
`enter code here`
# I cant seem to find a way to randomly sample the VARMA

1 个答案:

答案 0 :(得分:0)

来自拟合VARMAX模型的结果对象具有simulate方法,该方法可用于生成随机样本。例如:

mod = VARMAX(data, order=(1,1))
res = mod.fit()

# to generate a time series of length 100 following the VARMAX process described by `res`:
sample = res.simulate(100)

对于任何状态空间模型,包括SARIMAXUnobservedComponentsVARMAXDynamicFactor,都是如此。

(此外,模型类具有simulate方法。主要区别在于,由于模型对象没有关联的参数值,因此在这种情况下,您需要传递特定的参数向量)。