蟒蛇
Python 使用 statsmodels 重新生成 ARMA 參數
我正在嘗試從 python 中的 statsmodel 重新生成 ARMA 參數。我正在使用的程式碼是:
from statsmodels.tsa.arima_process import arma_generate_sample import statsmodels.api as sm arparams = np.array([.75, -.25]) maparams = np.array([.65, .35]) arparams = np.r_[1, -arparams] maparam = np.r_[1, maparams] nobs = 250 np.random.seed(2014) y = arma_generate_sample(arparams, maparams, nobs) #generate ARMA series res = sm.tsa.arma_order_select_ic(y, ic=['aic', 'bic'], trend='nc') z = sm.tsa.ARMA(y, (2,2)).fit() print z.arparams array([ 0.13178508, 0.08568388])
重新生成的 AR 參數與我開始使用的參數不同。我究竟做錯了什麼?
你的程式碼邏輯沒問題。但是,參數的變異數較高,因為
nobs=250
相對較低。增加nobs
,您的參數將最終收斂到您指定的參數。import statsmodels.api as sm import numpy as np # Parameters. ar = np.array([.75, -.25]) ma = np.array([.65, .35]) # Simulate an ARMA process. np.random.seed(42) y = sm.tsa.arma_generate_sample( ar=np.r_[1, -ar], ma=np.r_[1, ma], nsample=10000, sigma=1, ) # Fit ARMA process on the simulates to check coefficients, ACF and PACF. model = sm.tsa.ARMA(y, (2, 2)).fit(trend='c') # Plot ACF and PACF of estimated model. sm.tsa.graphics.plot_acf(y, lags=20, zero=True); sm.tsa.graphics.plot_pacf(y, lags=20, zero=True); model.summary()