/statsmodels/tsa/vector_ar/tests/example_svar.py

http://github.com/statsmodels/statsmodels · Python · 25 lines · 20 code · 3 blank · 2 comment · 0 complexity · 6bf6dd15b2496677f429ae1f892ff6b9 MD5 · raw file

  1. import numpy as np
  2. import pandas as pd
  3. import statsmodels.datasets.macrodata
  4. from statsmodels.tsa.vector_ar.svar_model import SVAR
  5. mdatagen = statsmodels.datasets.macrodata.load().data
  6. mdata = mdatagen[['realgdp','realcons','realinv']]
  7. names = mdata.dtype.names
  8. start = pd.datetime(1959, 3, 31)
  9. end = pd.datetime(2009, 9, 30)
  10. #qtr = pd.DatetimeIndex(start=start, end=end, freq=pd.datetools.BQuarterEnd())
  11. qtr = pd.date_range(start=start, end=end, freq='BQ-MAR')
  12. data = pd.DataFrame(mdata, index=qtr)
  13. data = (np.log(data)).diff().dropna()
  14. #define structural inputs
  15. A = np.asarray([[1, 0, 0],['E', 1, 0],['E', 'E', 1]])
  16. B = np.asarray([['E', 0, 0], [0, 'E', 0], [0, 0, 'E']])
  17. A_guess = np.asarray([0.5, 0.25, -0.38])
  18. B_guess = np.asarray([0.5, 0.1, 0.05])
  19. mymodel = SVAR(data, svar_type='AB', A=A, B=B, freq='Q')
  20. res = mymodel.fit(maxlags=3, maxiter=10000, maxfun=10000, solver='bfgs')
  21. res.irf(periods=30).plot(impulse='realgdp', plot_stderr=True,
  22. stderr_type='mc', repl=100)