Gaggles
unread,Jul 5, 2024, 9:18:56 AMJul 5Sign in to reply to author
Sign in to forward
You do not have permission to delete messages in this group
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to pystatsmodels
I am trying to estimate a two equation SVAR model using statsmodels but I am facing an issue. For reference, I am using the following code where 'subset' is just a pandas dataframe with two columns (the two series for the variables of the system) and a time series index in datetime format.
lags = 20
A = np.array([[1, 'E'], [0, 1]])
A_guess = np.asarray([0.0002])
model = SVAR(subset, svar_type='A', A=A)
results = model.fit(A_guess = A_guess, maxlags=20, maxiter = 10000000, maxfun=1000000, solver='bfgs', trend="n")
Running the code I get the following error
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
File /Users/test/Desktop/anders_project/code/sql_server_retrieval.py:27
24 model = SVAR(subset, svar_type='A', A=A)
26 # Fit the model
---> 27 results = model.fit(maxlags=20, maxiter = 10000000, maxfun=1000000, solver='bfgs', trend="n")
28 var_results[ticker] = results
31 # # %% (C)(R) VAR model estimation -> apparently I cannot estimate without intercept so need to find an alternative; also, there seem to be data issues so i need to clean data/remove outliers first
32
33 # from statsmodels.tsa.vector_ar.var_model import VAR
(...)
66 # print(f"Results for {ticker}:")
67 # result.summary()
File /Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/statsmodels/tsa/vector_ar/svar_model.py:180, in SVAR.fit(self, A_guess, B_guess, maxlags, method, ic, trend, verbose, s_method, solver, override, maxiter, maxfun)
177 # initialize starting parameters
178 start_params = self._get_init_params(A_guess, B_guess)
--> 180 return self._estimate_svar(start_params, lags, trend=trend,
181 solver=solver, override=override,
182 maxiter=maxiter, maxfun=maxfun)
File /Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/statsmodels/tsa/vector_ar/svar_model.py:248, in SVAR._estimate_svar(self, start_params, lags, maxiter, maxfun, trend, solver, override)
245 omega = sse / df_resid
246 self.sigma_u = omega
--> 248 A, B = self._solve_AB(start_params, override=override,
...
--> 279 A[A_mask] = params[:A_len]
280 if B is not None:
281 B[B_mask] = params[A_len:A_len+B_len]
TypeError: NumPy boolean array indexing assignment requires a 0 or 1-dimensional input, input has 2 dimensions
I tried estimating the model without time series index, without A_guess and using np.nan instead of 'E' which are all suggestions I found online but the issue persists.
Does therefore anyone have an idea how to resolve the issue? There is very little content on this topic online so I hope that someone here might be able to help.
Thank you in advance!