class_docstr: Vector Autoregressive Moving Average with eXogenous regressors model
  
  Parameters
  ----------
  endog : array_like
      The observed time-series process :math:`y`, , shaped nobs x k_endog.
  exog : array_like, optional
      Array of exogenous regressors, shaped nobs x k.
  order : iterable
      The (p,q) order of the model for the number of AR and MA parameters to
      use.
  trend : str{'n','c','t','ct'} or iterable, optional
      Parameter controlling the deterministic trend polynomial :math:`A(t)`.
      Can be specified as a string where 'c' indicates a constant (i.e. a
      degree zero component of the trend polynomial), 't' indicates a
      linear trend with time, and 'ct' is both. Can also be specified as an
      iterable defining the non-zero polynomial exponents to include, in
      increasing order. For example, `[1,1,0,1]` denotes
      :math:`a + bt + ct^3`. Default is a constant trend component.
  error_cov_type : {'diagonal', 'unstructured'}, optional
      The structure of the covariance matrix of the error term, where
      "unstructured" puts no restrictions on the matrix and "diagonal"
      requires it to be a diagonal matrix (uncorrelated errors). Default is
      "unstructured".
  measurement_error : bool, optional
      Whether or not to assume the endogenous observations `endog` were
      measured with error. Default is False.
  enforce_stationarity : bool, optional
      Whether or not to transform the AR parameters to enforce stationarity
      in the autoregressive component of the model. Default is True.
  enforce_invertibility : bool, optional
      Whether or not to transform the MA parameters to enforce invertibility
      in the moving average component of the model. Default is True.
  trend_offset : int, optional
      The offset at which to start time trend values. Default is 1, so that
      if `trend='t'` the trend is equal to 1, 2, ..., nobs. Typically is only
      set when the model created by extending a previous dataset.
  **kwargs
      Keyword arguments may be used to provide default values for state space
      matrices or for Kalman filtering options. See `Representation`, and
      `KalmanFilter` for more details.
  
  Attributes
  ----------
  order : iterable
      The (p,q) order of the model for the number of AR and MA parameters to
      use.
  trend : str{'n','c','t','ct'} or iterable
      Parameter controlling the deterministic trend polynomial :math:`A(t)`.
      Can be specified as a string where 'c' indicates a constant (i.e. a
      degree zero component of the trend polynomial), 't' indicates a
      linear trend with time, and 'ct' is both. Can also be specified as an
      iterable defining the non-zero polynomial exponents to include, in
      increasing order. For example, `[1,1,0,1]` denotes
      :math:`a + bt + ct^3`.
  error_cov_type : {'diagonal', 'unstructured'}, optional
      The structure of the covariance matrix of the error term, where
      "unstructured" puts no restrictions on the matrix and "diagonal"
      requires it to be a diagonal matrix (uncorrelated errors). Default is
      "unstructured".
  measurement_error : bool, optional
      Whether or not to assume the endogenous observations `endog` were
      measured with error. Default is False.
  enforce_stationarity : bool, optional
      Whether or not to transform the AR parameters to enforce stationarity
      in the autoregressive component of the model. Default is True.
  enforce_invertibility : bool, optional
      Whether or not to transform the MA parameters to enforce invertibility
      in the moving average component of the model. Default is True.
  
  Notes
  -----
  Generically, the VARMAX model is specified (see for example chapter 18 of
  [1]_):
  
  .. math::
  
      y_t = A(t) + A_1 y_{t-1} + \dots + A_p y_{t-p} + B x_t + \epsilon_t +
      M_1 \epsilon_{t-1} + \dots M_q \epsilon_{t-q}
  
  where :math:`\epsilon_t \sim N(0, \Omega)`, and where :math:`y_t` is a
  `k_endog x 1` vector. Additionally, this model allows considering the case
  where the variables are measured with error.
  
  Note that in the full VARMA(p,q) case there is a fundamental identification
  problem in that the coefficient matrices :math:`\{A_i, M_j\}` are not
  generally unique, meaning that for a given time series process there may
  be multiple sets of matrices that equivalently represent it. See Chapter 12
  of [1]_ for more information. Although this class can be used to estimate
  VARMA(p,q) models, a warning is issued to remind users that no steps have
  been taken to ensure identification in this case.
  
  References
  ----------
  .. [1] Lütkepohl, Helmut. 2007.
     New Introduction to Multiple Time Series Analysis.
     Berlin: Springer.
code: def update(
      self,
      params,
      transformed=True,
      includes_fixed=False,
      complex_step=False,
  ):
      params = self.handle_params(
          params, transformed=transformed, includes_fixed=includes_fixed
      )
  
      # 1. State intercept
      # - Exog
      if self.mle_regression:
          exog_params = (
              params[self._params_regression]
              .reshape(self.k_endog, self.k_exog)
              .T
          )
          intercept = np.dot(self.exog[1:], exog_params)
          self.ssm[self._idx_state_intercept] = intercept.T
  
          if self._final_exog is not None:
              self.ssm["state_intercept", : self.k_endog, -1] = np.dot(
                  self._final_exog, exog_params
              )
  
      # - Trend
      if self.k_trend > 0:
          # If we did not set the intercept above, zero it out so we can
          # just += later
          if not self.mle_regression:
              zero = np.array(0, dtype=params.dtype)
              self.ssm["state_intercept", :] = zero
  
          trend_params = (
              params[self._params_trend]
              .reshape(self.k_endog, self.k_trend)
              .T
          )
          if self._trend_is_const:
              intercept = trend_params
          else:
              intercept = np.dot(self._trend_data[1:], trend_params)
          self.ssm[self._idx_state_intercept] += intercept.T
  
          if (
              self._final_trend is not None
              and self._idx_state_intercept[-1].stop == -1
          ):
              self.ssm[
                  "state_intercept", : self.k_endog, -1:
              ] += np.dot(self._final_trend, trend_params).T
  
      # Need to set the last state intercept to np.nan (with appropriate
      # dtype) if we don't have the final exog
      if self.mle_regression and self._final_exog is None:
          nan = np.array(np.nan, dtype=params.dtype)
          self.ssm["state_intercept", : self.k_endog, -1] = nan
  
      # 2. Transition
      ar = params[self._params_ar].reshape(
          self.k_endog, self.k_endog * self.k_ar
      )
      ma = params[self._params_ma].reshape(
          self.k_endog, self.k_endog * self.k_ma
      )
      self.ssm[self._idx_transition] = np.c_[ar, ma]
  
      # 3. State covariance
      if self.error_cov_type == "diagonal":
          self.ssm[self._idx_state_cov] = params[self._params_state_cov]
      elif self.error_cov_type == "unstructured":
          state_cov_lower = np.zeros(
              self.ssm["state_cov"].shape, dtype=params.dtype
          )
          state_cov_lower[self._idx_lower_state_cov] = params[
              self._params_state_cov
          ]
          self.ssm["state_cov"] = np.dot(
              state_cov_lower, state_cov_lower.T
          )
  
      # 4. Observation covariance
      if self.measurement_error:
          self.ssm[self._idx_obs_cov] = params[self._params_obs_cov]
  
imports: import contextlib
  from warnings import warn
  import pandas
  import numpy
  from statsmodels.compat.pandas import Appender
  from statsmodels.tools.tools import Bunch
  from statsmodels.tools.data import _is_using_pandas
  from statsmodels.tsa.vector_ar import var_model
  import statsmodels.base.wrapper
  from statsmodels.tools.sm_exceptions import EstimationWarning
  from .kalman_filter import INVERT_UNIVARIATE, SOLVE_LU
  from .mlemodel import MLEModel, MLEResults, MLEResultsWrapper
  from .initialization import Initialization
  from .tools import is_invertible, concat, prepare_exog, constrain_stationary_multivariate, unconstrain_stationary_multivariate, prepare_trend_spec, prepare_trend_data
label_desc: Use image node_id 9 for calling the VARMAX obj's underlying member method code with example usage: obj.update(params, transformed, includes_fixed, complex_step) without return types