Ë
    ¤�Dj`Ë  ã                   ó6  — d Z ddlZddlmZ ddlZddlZddlm	Z	 ddl
mZ ddlmZ ddlmZ ddlmc mZ ddlmZ d	d
lmZmZ d	dlmZmZmZ d	dlmZ d	dlm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&  G d„ de«      Z' G d„ de«      Z( G d„ de«      Z) ejT                  e)e(«       y)zs
Vector Autoregressive Moving Average with eXogenous regressors model

Author: Chad Fulton
License: Simplified-BSD
é    N)Úwarn)ÚAppender)ÚBunch)Ú_is_using_pandas)Ú	var_model)ÚEstimationWarningé   )ÚINVERT_UNIVARIATEÚSOLVE_LU)ÚMLEModelÚ
MLEResultsÚMLEResultsWrapper)ÚInitialization)Úis_invertibleÚconcatÚprepare_exogÚ!constrain_stationary_multivariateÚ#unconstrain_stationary_multivariateÚprepare_trend_specÚprepare_trend_datac                   óü   ‡ — e Zd ZdZ	 	 	 	 dˆ fd„	Zdd„Zed„ «       Zed„ «       Zed„ «       Z	d„ Z
d„ Zˆ fd	„Z	 	 dd
„Zej                  d„ «       Z eej&                  j                  «      	 	 	 	 dˆ fd„	«       Zˆ xZS )ÚVARMAXuM  
    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.
    c
                 ó^  •‡ — |‰ _         |‰ _        |‰ _        |‰ _        |‰ _        t        |d   «      ‰ _        t        |d   «      ‰ _        |dvrt        d«      ‚‰ j                  dk(  r‰ j                  dk(  rt        d«      ‚‰ j                  dkD  r‰ j                  dkD  rt        dt        «       |‰ _        |	‰ _        t        ‰ j                  «      \  ‰ _        ‰ _        ‰ j                  j                   dk(  xr ‰ j                  d   dk(  ‰ _        t%        |«      \  ‰ _        }‰ j&                  dkD  ‰ _        t+        |d «      st-        j.                  |«      }t1        ‰ j                  d«      }|‰ j                  z   ‰ _        |j4                  d   }|}|‰ j2                  z  }|
j7                  dd«       |
j7                  d	t8        t:        z  «       t=        ‰‰ �|  |f|||d
œ|
¤Ž ‰ j&                  dkD  s‰ j                  dkD  r‰ j"                  sd‰ j@                  _!        i ‰ _"        ‰ jF                  ‰ j                  z  ‰ jD                  d<   ‰ jF                  dz  ‰ j                  z  ‰ jD                  d<   ‰ jF                  dz  ‰ j                  z  ‰ jD                  d<   ‰ jF                  ‰ j&                  z  ‰ jD                  d<   ‰ j                   dk(  r‰ jF                  ‰ jD                  d<   nD‰ j                   dk(  r5t        ‰ jF                  ‰ jF                  dz   z  dz  «      ‰ jD                  d<   ‰ jF                  ‰ j                  z  ‰ jD                  d<   tI        ‰ jD                  jK                  «       «      ‰ _&        tO        ‰ j                  ‰ j                  ‰ jP                  dz   ‰ j                  ¬«      }|d d ‰ _)        |dd  ‰ _*        ‰ j                  dkD  r‰ j"                  r‰ j&                  dkD  r8t-        jV                  ‰ jX                  ‰ jP                  f«      ‰ j@                  d<   t-        jZ                  ‰ jF                  «      }d‰ j@                  d|z   <   ‰ j                  dkD  rXt-        jZ                  ‰ j                  dz
  ‰ jF                  z  «      }|d   ‰ jF                  z   |d   f}d‰ j@                  d|z   <   t-        jZ                  ‰ j                  dz
  ‰ jF                  z  «      }|d   |dz   ‰ jF                  z  z   |d   |‰ jF                  z  z   f}d‰ j@                  d|z   <   t-        jZ                  ‰ jF                  «      }d‰ j@                  d|z   <   |d   |‰ jF                  z  z   |d   f}‰ j                  dkD  rd‰ j@                  d|z   <   ‰ j"                  r/‰ j&                  dk(  r t,        j\                  dd |…d d …f   ‰ _/        n=‰ j                  dkD  s‰ j&                  dkD  rt,        j\                  dd |…d d…f   ‰ _/        ‰ j                  dkD  r t,        j\                  dd |…d d …f   ‰ _0        nt,        j\                  dd |…|d …f   ‰ _0        ‰ j                   dk(  r(dt-        jZ                  ‰ jF                  «      z   ‰ _1        n3‰ j                   dk(  r$t-        jd                  ‰ jF                  «      ‰ _3        ‰ j                  r'dt-        jZ                  ‰ jF                  «      z   ‰ _4        ˆ fd„}d} |d|«      \  ‰ _5        } |d|«      \  ‰ _6        } |d|«      \  ‰ _7        } |d|«      \  ‰ _8        } |d|«      \  ‰ _9        } |d|«      \  ‰ _:        }d ‰ _;        ‰ xjx                  g d¢t{        |
j}                  «       «      z   z  c_<        y ) Nr   r	   )ÚdiagonalÚunstructuredz3Invalid error covariance matrix type specification.zNInvalid VARMAX(p,q) specification; at least one p,q must be greater than zero.zcEstimation of VARMA(p,q) models is not generically robust, due especially to identification issues.ÚinitializationÚ
stationaryÚinversion_method)ÚexogÚk_statesÚk_posdefFÚtrendé   ÚarÚmaÚ
regressionr   Ú	state_covr   Úobs_cov)ÚoffsetéÿÿÿÿÚstate_intercept)Údesign)Ú
transition)Ú	selectionr-   )r'   )r(   c                 ó`   •— ‰j                   |    }t        j                  |||z    }||z  }||fS ©N)Ú
parametersÚnpÚs_)Úkeyr)   ÚlengthÚparam_sliceÚselfs       €úeC:\Crop_Prediction\Backend\crop-ai-system\venv\Lib\site-packages\statsmodels\tsa\statespace\varmax.pyÚ_slicezVARMAX.__init__.<locals>._slice   s:   ø€ Ø—_‘_ SÑ)ˆFÜŸ%™%  v°¡Ð7ˆKØ�fÑˆFØ Ð&Ð&ó    )Úorderr"   Úerror_cov_typeÚmeasurement_errorÚenforce_stationarityÚenforce_invertibility)?r<   r=   r>   r?   r;   ÚintÚk_arÚk_maÚ
ValueErrorr   r   r"   Útrend_offsetr   Úpolynomial_trendÚk_trendÚsizeÚ_trend_is_constr   Úk_exogÚmle_regressionr   r2   Ú
asanyarrayÚmaxÚ_k_orderÚshapeÚ
setdefaultr
   r   ÚsuperÚ__init__ÚssmÚ_time_invariantr1   Úk_endogÚsumÚvaluesÚk_paramsr   ÚnobsÚ_trend_dataÚ_final_trendÚzerosr    Údiag_indicesr3   Ú_idx_state_interceptÚ_idx_transitionÚ_idx_state_covÚtril_indicesÚ_idx_lower_state_covÚ_idx_obs_covÚ_params_trendÚ
_params_arÚ
_params_maÚ_params_regressionÚ_params_state_covÚ_params_obs_covÚ_final_exogÚ
_init_keysÚlistÚkeys)r7   Úendogr   r;   r"   r<   r=   r>   r?   rD   ÚkwargsÚ	_min_k_arrT   r!   r    Ú
trend_dataÚidxr9   r)   Ú	__class__s   `                  €r8   rQ   zVARMAX.__init__„   sá  ù€ ð -ˆÔØ!2ˆÔØ$8ˆÔ!Ø%:ˆÔ"ð ˆŒ
ô ˜˜a™“MˆŒ	Ü˜˜a™“MˆŒ	ð Ð!=Ñ=Üð /ó 0ð 0à�9‰9˜Š>˜dŸi™i¨1šnÜð ?ó @ð @ð �9‰9�qŠ=˜TŸY™Y¨š]Üð =ä"ô$ð
 ˆŒ
Ø(ˆÔÜ.@ÀÇÁÓ.LÑ+ˆÔ˜tœ|Ø $× 5Ñ 5× :Ñ :¸aÑ ?ò !>Ø $× 5Ñ 5°aÑ 8¸AÑ =ð 	Ôô +¨4Ó0ÑˆŒ�dð #Ÿk™k¨A™oˆÔô    tÔ,Ü—M‘M %Ó(ˆEô ˜Ÿ	™	 1Ó%ˆ	Ø! D§I¡IÑ-ˆŒð —+‘+˜a‘.ˆØˆØ˜TŸ]™]Ñ*ˆð 	×ÑÐ*¨LÔ9ð 	×ÑÐ,Ô.?Ä(Ñ.JÔKô 	‰ÑØð	
Ø x¸(ñ	
ØFLò	
ð
 �;‰;˜Š?˜tŸ|™|¨aÒ/¸×8LÒ8LØ',ˆD�H‰HÔ$ð ˆŒØ#'§<¡<°$·,±,Ñ#>ˆ�‰˜Ñ Ø $§¡¨a¡°$·)±)Ñ ;ˆ�‰˜ÑØ $§¡¨a¡°$·)±)Ñ ;ˆ�‰˜ÑØ(,¯©°t·{±{Ñ(Bˆ�‰˜Ñ%Ø×Ñ *Ò,Ø+/¯<©<ˆD�O‰O˜KÒ(ð × Ñ  NÒ2ä�D—L‘L D§L¡L°1Ñ$4Ñ5¸Ñ9Ó:ð �O‰O˜KÑ(ð &*§\¡\°D×4JÑ4JÑ%Jˆ�‰˜	Ñ"Ü˜DŸO™O×2Ñ2Ó4Ó5ˆŒô
 (Ø×!Ñ! 4§<¡<°·±¸Q±Ø×$Ñ$ô&ˆ
ð & c r˜?ˆÔØ& r s˜OˆÔð �L‰L˜1Ò T×%9Ò%9¸d¿k¹kÈAºoÜ*,¯(©(°D·M±MÀ4Ç9Á9Ð3MÓ*NˆD�H‰HÐ&Ñ'ô �o‰o˜dŸl™lÓ+ˆØ&'ˆ�‰�˜sÑ"Ñ#ð
 �9‰9�qŠ=Ü—/‘/ 4§9¡9¨q¡=°D·L±LÑ"@ÓAˆCØ�a‘&˜4Ÿ<™<Ñ'¨¨Q©Ð/ˆCØ./ˆD�H‰H�_ sÑ*Ñ+ô �o‰o˜tŸy™y¨1™}°·±Ñ<Ó=ˆØ�1‰v˜ Q™¨$¯,©,Ñ6Ñ6Ø�1‰v˜	 D§L¡LÑ0Ñ0ð2ˆà*+ˆ�‰� 3Ñ&Ñ'ô �o‰o˜dŸl™lÓ+ˆØ)*ˆ�‰� #Ñ%Ñ&Ø�!‰f�y 4§<¡<Ñ/Ñ/°°Q±Ð7ˆØ�9‰9�qŠ=Ø-.ˆD�H‰H�^ cÑ)Ñ*ð ×Ò D§K¡K°1Ò$4Ü(*¯©Ð.?ÀÀ'ÀÊ1Ð.LÑ(MˆDÕ%Ø�\‰\˜AÒ §¡¨q¢Ü(*¯©Ð.?ÀÀ'ÀÈ3ÈBÈ3Ð.NÑ(OˆDÔ%Ø�9‰9�qŠ=Ü#%§5¡5¨°x¸°xÂÐ)BÑ#CˆDÕ ä#%§5¡5¨°x¸°xÀÁÐ)IÑ#JˆDÔ Ø×Ñ *Ò,à¤§¡°·±Ó!>Ñ>ð Õà× Ñ  NÒ2Ü(*¯©¸¿¹Ó(EˆDÔ%Ø×!Ò!Ø ,¬r¯©¸t¿|¹|Ó/LÑ LˆDÔô	'ð ˆÙ%+¨G°VÓ%<Ñ"ˆÔ˜FÙ"(¨¨vÓ"6ÑˆŒ˜Ù"(¨¨vÓ"6ÑˆŒ˜Ù*0°¸vÓ*FÑ'ˆÔ Ù)/°¸VÓ)DÑ&ˆÔ Ù'-¨i¸Ó'@Ñ$ˆÔ˜fð  ˆÔð 	�Šò 5ä7;¸F¿K¹K»MÓ7JñKñ 	KŽr:   c                 ó,   —  | j                   |fd|i|¤ŽS )Nr   )Ú_clone_from_init_kwds)r7   rm   r   rn   s       r8   ÚclonezVARMAX.clone7  s   € Ø)ˆt×)Ñ)¨%ÑE°dÐE¸fÑEÐEr:   c                 ó   — dt         t        fiS )NÚfit)ÚVARMAXResultsÚVARMAXResultsWrapper)r7   s    r8   Ú_res_classeszVARMAX._res_classes:  s   € àœÔ';Ð<Ð=Ð=r:   c                 ó  — t        j                  | j                  t         j                  ¬«      }t	        j
                  | j                  j                  «       «      }|j                  «       }t        j                  |j                  «       d¬«      }d }| j                  dkD  r9| j                  dkD  r*t         j                  | j                  | j                  f   }n7| j                  dkD  r| j                  }n| j                  dkD  r| j                  }t        j                   t        j"                  |«      «      r7t        j                   t        j"                  |«      d¬«       }||   }|�||   }t        j                  d«      }t        j                  d«      }| j                  dkD  s| j                  dkD  r—t         j$                  j'                  |«      j)                  |«      }|t        j(                  ||«      z  }| j                  dkD  r|d | j                   j*                  }| j,                  dkD  r|| j                  d  j*                  }g }| j.                  dkD  r| j.                  nd}	t1        j2                  |«      }
|
j5                  |	d d¬«      }| j.                  dkD  r7t        j6                  |j8                  «      j*                  j;                  «       }|j<                  }| j.                  dkD  r­| j>                  r¡|jA                  | j,                  | j.                  z  | j,                  «      j*                  jA                  | j,                  | j,                  | j.                  «      j*                  }tC        dgtE        | «      z   «      }|stG        d	«       |dz  }g }| jH                  dkD  �rt1        j2                  |«      }|j5                  | jH                  d d¬«      }t        j6                  |j8                  j*                  «      j;                  «       }| jJ                  r¡|jA                  | j,                  | jH                  z  | j,                  «      j*                  jA                  | j,                  | j,                  | jH                  «      j*                  }tC        dgtE        | «      z   «      }|stG        d
«       |dz  }| j.                  dkD  �r| j                  dkD  s| jL                  r÷|jA                  | j,                  | j.                  z  | j,                  «      j*                  jA                  | j,                  | j,                  | j.                  «      j*                  }t        jN                  | j,                  «      t        jP                  |d¬«      z
  }| j                  dkD  rt        j(                  ||«      }| jL                  dkD  rt        j(                  ||«      }| j                  dkD  r|j;                  «       || jR                  <   | j.                  dkD  r||| jT                  <   | jH                  dkD  r||| jV                  <   | jL                  r|j;                  «       || jX                  <   | jZ                  dk(  r(|j\                  j_                  «       || j`                  <   nb| jZ                  dk(  rSt         j$                  jc                  |j\                  «      }|| jd                     j;                  «       || j`                  <   | jf                  r_| jH                  dkD  r)j\                  j_                  «       || jh                  <   |S |j\                  j_                  «       || jh                  <   |S )N©ÚdtypeÚW)Úrequirementsr   r	   )ÚaxisÚn)ÚmaxlagsÚicr"   z\Non-stationary starting autoregressive parameters found. Using zeros as starting parameters.z\Non-stationary starting moving-average parameters found. Using zeros as starting parameters.r   r   )5r2   r[   rW   Úfloat64ÚpdÚ	DataFramerm   ÚcopyÚinterpolateÚrequireÚbfillrF   rI   Úc_rY   r   ÚanyÚisnanÚlinalgÚpinvÚdotÚTrT   rA   r   ÚVARrw   ÚarrayÚparamsÚravelÚresidr>   Úreshaper   rk   r   rB   r?   rJ   ÚeyerU   rc   rd   re   rf   r<   Úsigma_ur   rg   Úcholeskyra   r=   rh   )r7   r”   rm   r   ÚmaskÚtrend_paramsÚexog_paramsÚtrendexog_paramsÚ	ar_paramsrA   Úmod_arÚres_arÚcoefficient_matricesr   Ú	ma_paramsÚmod_maÚres_maÚ
invertibleÚtmpÚ
cov_factors                       r8   Ústart_paramszVARMAX.start_params>  sÃ  € ä—‘˜$Ÿ-™-¬r¯z©zÔ:ˆô —‘˜TŸZ™ZŸ_™_Ó.Ó/ˆØ×!Ñ!Ó#ˆÜ—
‘
˜5Ÿ;™;›=°sÔ;ˆØˆØ�<‰<˜!Ò §¡¨a¢Ü—5‘5˜×)Ñ)¨4¯9©9Ð4Ñ5‰DØ�\‰\˜AÒØ×#Ñ#‰DØ�[‰[˜1Š_Ø—9‘9ˆDô �6‰6”"—(‘(˜5“/Ô"Ü—F‘Fœ2Ÿ8™8 E›?°Ô3Ð3ˆDØ˜$‘KˆEØÐØ˜D‘z�ô —x‘x “{ˆÜ—h‘h˜q“kˆØ�<‰<˜!Ò˜tŸ{™{¨QšÜ!Ÿy™yŸ~™~¨dÓ3×7Ñ7¸Ó>ÐØ”R—V‘V˜DÐ"2Ó3Ñ3ˆEØ�|‰|˜aÒØ/°°·±Ð>×@Ñ@�Ø�|‰|˜aÒØ.¨t¯|©|¨}Ð=×?Ñ?�ð ˆ	Ø ŸI™I¨šMˆt�yŠy¨qˆÜ—‘˜uÓ%ˆØ—‘ D¨T¸�Ó=ˆØ�9‰9�qŠ=ÜŸ™ §¡Ó/×1Ñ1×7Ñ7Ó9ˆIØ—‘ˆð �9‰9�qŠ=˜T×6Ò6à×!Ñ!Ø—L‘L 4§9¡9Ñ,¨d¯l©lóç‘!ß‰g�d—l‘l D§L¡L°$·)±)Ó<¿Q¹Qð	 !ô '¨ s¬TÐ3GÐ2GÓ-HÑ'HÓIˆJáÜð Cô Dà˜Q‘�	ð ˆ	Ø�9‰9�q‹=Ü—]‘] 5Ó)ˆFØ—Z‘Z¨¯	©	°dÀ#�ZÓFˆFÜŸ™ §¡§¡Ó1×7Ñ7Ó9ˆIð ×)Ò)à×%Ñ%ØŸ™ t§y¡yÑ0°$·,±,óç‘aß‘'˜$Ÿ,™,¨¯©°d·i±iÓ@ÇÁð	 %ô +¨A¨3´Ð7KÐ6KÓ1LÑ+LÓM�
á!Üð Gô Hà ‘N�Ið �9‰9�q‹=˜dŸl™l¨QÒ.°$×2EÒ2Eà×!Ñ!Ø—L‘L 4§9¡9Ñ,¨d¯l©lóç‘!ß‰g�d—l‘l D§L¡L°$·)±)Ó<¿Q¹Qð	 !ô —&‘&˜Ÿ™Ó&¬¯©Ð0DÈ1Ô)MÑMˆCà�|‰|˜aÒÜ!Ÿv™v c¨<Ó8�Ø×"Ñ" QÒ&Ü Ÿf™f S¨+Ó6�ð �<‰<˜!ÒØ)5×);Ñ);Ó)=ˆF�4×%Ñ%Ñ&ð �9‰9�qŠ=Ø&/ˆF�4—?‘?Ñ#ð �9‰9�qŠ=Ø&/ˆF�4—?‘?Ñ#ð ×ÒØ.9×.?Ñ.?Ó.AˆF�4×*Ñ*Ñ+ð ×Ñ *Ò,Ø-3¯^©^×-DÑ-DÓ-FˆF�4×)Ñ)Ò*Ø× Ñ  NÒ2ÜŸ™×+Ñ+¨F¯N©NÓ;ˆJà˜4×4Ñ4Ñ5×;Ñ;Ó=ð �4×)Ñ)Ñ*ð ×!Ò!Ø�y‰y˜1Š}Ø/5¯~©~×/FÑ/FÓ/H��t×+Ñ+Ñ,ð ˆð 06¯~©~×/FÑ/FÓ/H��t×+Ñ+Ñ,àˆr:   c                 ó°  — g }| j                   }t        | j                   t        «      s|g}| j                  dkD  rnt	        | j
                  «      D ]V  }| j                  j                  «       d   D ]4  }|dk(  r|d||   z  gz  }Œ|dk(  r|d||   z  gz  }Œ'|d|||   fz  gz  }Œ6 ŒX |t	        | j
                  «      D ���cg c]G  }t	        | j                  «      D ]-  }t	        | j
                  «      D ]  }d|dz   ||   ||   fz  ‘Œ Œ/ ŒI c}}}z  }|t	        | j
                  «      D ���cg c]G  }t	        | j                  «      D ]-  }t	        | j
                  «      D ]  }d|dz   ||   ||   fz  ‘Œ Œ/ ŒI c}}}z  }|t	        | j
                  «      D ��cg c]4  }t	        | j                  «      D ]  }d| j                  |   › d	||   › �‘Œ Œ6 c}}z  }| j                  d
k(  r-|t	        | j
                  «      D �cg c]
  }d||   z  ‘Œ c}z  }nc| j                  dk(  rT|t	        | j
                  «      D ��cg c]0  }t	        |dz   «      D ]  }||k(  rd||   z  nd||   › d	||   › �‘Œ Œ2 c}}z  }| j                  r,|t	        | j
                  «      D �cg c]
  }d||   z  ‘Œ c}z  }|S c c}}}w c c}}}w c c}}w c c}w c c}}w c c}w )Nr   zintercept.%sr	   zdrift.%sztrend.%d.%sz	L%d.%s.%szL%d.e(%s).%szbeta.ú.r   z	sigma2.%sr   zsqrt.var.%sz	sqrt.cov.zmeasurement_variance.%s)Úendog_namesÚ
isinstancerk   rF   ÚrangerT   rE   ÚnonzerorA   rB   rI   Ú
exog_namesr<   r=   )r7   Úparam_namesr¬   ÚjÚiÚks         r8   r±   zVARMAX.param_names¿  sh  € àˆØ×&Ñ&ˆÜ˜$×*Ñ*¬DÔ1Ø&˜-ˆKð �<‰<˜!ÒÜ˜4Ÿ<™<Ó(ò M�Ø×.Ñ.×6Ñ6Ó8¸Ñ;ò M�AØ˜A’vØ#¨¸ÀQ¹Ñ(GÐ'HÑH™Ø˜ašØ#¨
°[À±^Ñ(CÐ'DÑD™à#¨¸¸KÈ¹NÐ8KÑ(KÐ'LÑL™ñMðMð 	ä˜4Ÿ<™<Ó(÷
ð 
àÜ˜4Ÿ9™9Ó%ò
ð Ü˜4Ÿ<™<Ó(ò	
ð ð ˜1˜Q™3 ¨A¡°¸A±Ð?Ó?ð
Ø?ð
Ø?ô
ñ 	
ˆð 	ä˜4Ÿ<™<Ó(÷
ð 
àÜ˜4Ÿ9™9Ó%ò
ð Ü˜4Ÿ<™<Ó(ò	
ð ð ˜a ™c ;¨q¡>°;¸q±>ÐBÓBð
ØBð
ØBô
ñ 	
ˆð 	ä˜4Ÿ<™<Ó(÷
àÜ˜4Ÿ;™;Ó'ò
ð ð �D—O‘O AÑ&Ð' q¨°Q©Ð(8Ò9ð
Ø9ó
ñ 	
ˆð ×Ñ *Ò,Øä˜tŸ|™|Ó,öàð ˜k¨!™nÓ,òñ ‰Kð × Ñ  NÒ2Øô ˜tŸ|™|Ó,÷ð Ü˜q ™s›ò	ð ð 45¸²6� ¨Q¡Ò/Ø˜[¨™^Ð,¨A¨k¸!©nÐ-=Ð>ñ?ðð?óñ ˆKð ×!Ò!Øä˜tŸ|™|Ó,öàð *¨K¸©NÓ:òñ ˆKð
 ÐùôW
ùô
ùó
ùòùó
ùòs&   ÃAJ4
Ä0AJ;
Æ9KÈKÈ?5KÊKc                 ó^  — t        j                  |d¬«      }t        j                  |j                  |j                  ¬«      }|| j
                     || j
                  <   | j                  dkD  �r2| j                  �r%| j                  dk(  r&t        j                  || j                     dz  «      }nƒ| j                  dk(  rtt        j                  | j                  d   j                  |j                  ¬«      }|| j                     || j                  <   t        j                  ||j                  «      }|| j                     j!                  | j"                  | j"                  | j                  z  «      }t%        |«      \  }}|j'                  «       || j                  <   n|| j                     || j                  <   | j(                  dkD  r¤| j*                  r˜t        j,                  | j"                  |j                  ¬«      }|| j.                     j!                  | j"                  | j"                  | j(                  z  «      }t%        ||«      \  }}|j'                  «       || j.                  <   n|| j.                     || j.                  <   || j0                     || j0                  <   | j                  dk(  r || j                     dz  || j                  <   n+| j                  dk(  r|| j                     || j                  <   | j2                  r|| j4                     dz  || j4                  <   |S )	a[  
        Transform unconstrained parameters used by the optimizer to constrained
        parameters used in likelihood evaluation

        Parameters
        ----------
        unconstrained : array_like
            Array of unconstrained parameters used by the optimizer, to be
            transformed.

        Returns
        -------
        constrained : array_like
            Array of constrained parameters which may be used in likelihood
            evaluation.

        Notes
        -----
        Constrains the factor transition to be stationary and variances to be
        positive.
        r	   ©Úndminr|   r   r   r#   r   r'   )r2   r“   r[   rN   r}   rc   rA   r>   r<   Údiagrg   rR   ra   r�   r‘   rd   r—   rT   r   r•   rB   r?   r˜   re   rf   r=   rh   )r7   ÚunconstrainedÚconstrainedr'   Ústate_cov_lowerÚcoefficientsr¢   Úvariances           r8   Útransform_paramszVARMAX.transform_paramsÿ  sË  € ô, Ÿ™ °aÔ8ˆÜ—h‘h˜}×2Ñ2¸-×:MÑ:MÔNˆð +8¸×8JÑ8JÑ*Kˆ�D×&Ñ&Ñ'ð �9‰9�q‹=˜T×6Ó6à×"Ñ" jÒ0ÜŸG™G M°$×2HÑ2HÑ$IÈ1Ñ$LÓM‘	Ø×$Ñ$¨Ò6Ü"$§(¡(¨4¯8©8°KÑ+@×+FÑ+FØ1>×1DÑ1Dô#F�ð " $×"8Ñ"8Ñ9ð   × 9Ñ 9Ñ:äŸF™F ?°O×4EÑ4EÓF�	ð )¨¯©Ñ9×AÑAØ—‘˜dŸl™l¨T¯Y©YÑ6ó8ˆLô 2°,À	ÓJñ +Ð  (à+?×+EÑ+EÓ+GˆK˜Ÿ™Ò(à+8¸¿¹Ñ+IˆK˜Ÿ™Ñ(ð �9‰9�qŠ=˜T×7Ò7äŸ™˜tŸ|™|°=×3FÑ3FÔGˆIØ(¨¯©Ñ9×AÑAØ—‘˜dŸl™l¨T¯Y©YÑ6ó8ˆLô 2°,À	ÓJñ +Ð  (à+?×+EÑ+EÓ+GˆK˜Ÿ™Ò(à+8¸¿¹Ñ+IˆK˜Ÿ™Ñ(ð ˜$×1Ñ1Ñ2ð 	�D×+Ñ+Ñ,ð
 ×Ñ *Ò,à˜d×4Ñ4Ñ5°qÑ8ð ˜×.Ñ.Ò/ð × Ñ  NÒ2à˜d×4Ñ4Ñ5ð ˜×.Ñ.Ñ/ð ×!Ò!ð ˜d×2Ñ2Ñ3°QÑ6ð ˜×,Ñ,Ñ-ð Ðr:   c                 óX  — t        j                  |d¬«      }t        j                  |j                  |j                  ¬«      }|| j
                     || j
                  <   | j                  dkD  �r/| j                  �r"| j                  dk(  r#t        j                  || j                     «      }nƒ| j                  dk(  rtt        j                  | j                  d   j                  |j                  ¬«      }|| j                     || j                  <   t        j                  ||j                  «      }|| j                     j!                  | j"                  | j"                  | j                  z  «      }t%        |«      \  }}|j'                  «       || j                  <   n|| j                     || j                  <   | j(                  dkD  r¤| j*                  r˜t        j,                  | j"                  |j                  ¬«      }|| j.                     j!                  | j"                  | j"                  | j(                  z  «      }t%        ||«      \  }}|j'                  «       || j.                  <   n|| j.                     || j.                  <   || j0                     || j0                  <   | j                  dk(  r || j                     dz  || j                  <   n+| j                  dk(  r|| j                     || j                  <   | j2                  r|| j4                     dz  || j4                  <   |S )	aÆ  
        Transform constrained parameters used in likelihood evaluation
        to unconstrained parameters used by the optimizer.

        Parameters
        ----------
        constrained : array_like
            Array of constrained parameters used in likelihood evaluation, to
            be transformed.

        Returns
        -------
        unconstrained : array_like
            Array of unconstrained parameters used by the optimizer.
        r	   r¶   r|   r   r   r   r'   g      à?)r2   r“   r[   rN   r}   rc   rA   r>   r<   r¸   rg   rR   ra   r�   r‘   rd   r—   rT   r   r•   rB   r?   r˜   re   rf   r=   rh   )r7   rº   r¹   r'   r»   r¼   Úunconstrained_matricesr½   s           r8   Úuntransform_paramszVARMAX.untransform_paramsR  sÆ  € ô  —h‘h˜{°!Ô4ˆÜŸ™ ×!2Ñ!2¸+×:KÑ:KÔLˆð -8¸×8JÑ8JÑ,Kˆ�d×(Ñ(Ñ)ð �9‰9�q‹=˜T×6Ó6à×"Ñ" jÒ0ÜŸG™G K°×0FÑ0FÑ$GÓH‘	Ø×$Ñ$¨Ò6Ü"$§(¡(¨4¯8©8°KÑ+@×+FÑ+FØ1<×1BÑ1Bô#D�ð   × 6Ñ 6Ñ7ð   × 9Ñ 9Ñ:äŸF™F ?°O×4EÑ4EÓF�	ð ' t§¡Ñ7×?Ñ?Ø—‘˜dŸl™l¨T¯Y©YÑ6ó8ˆLô 4°LÀ)ÓLñ -Ð" Hà-C×-IÑ-IÓ-KˆM˜$Ÿ/™/Ò*à-8¸¿¹Ñ-IˆM˜$Ÿ/™/Ñ*ð �9‰9�qŠ=˜T×7Ò7äŸ™˜tŸ|™|°;×3DÑ3DÔEˆIØ& t§¡Ñ7×?Ñ?Ø—‘˜dŸl™l¨T¯Y©YÑ6ó8ˆLô 4°LÀ)ÓLñ -Ð" Hà-C×-IÑ-IÓ-KˆM˜$Ÿ/™/Ò*à-8¸¿¹Ñ-IˆM˜$Ÿ/™/Ñ*ð ˜×/Ñ/Ñ0ð 	�d×-Ñ-Ñ.ð
 ×Ñ *Ò,à˜D×2Ñ2Ñ3°SÑ8ð ˜$×0Ñ0Ò1ð × Ñ  NÒ2à˜D×2Ñ2Ñ3ð ˜$×0Ñ0Ñ1ð ×!Ò!ð ˜D×0Ñ0Ñ1°3Ñ6ð ˜$×.Ñ.Ñ/ð Ðr:   c                 óÌ  •— t         ‰| �  |«       t        j                  t	        | j
                  j                  «       «      «      d d }d„ t        j                  | j                  |«      D «       \  }}}}}}| j                  rj| j                  dkD  r[| j                  dkD  s| j                  dkD  r=|j                  |«      }t        |j                  |«      «      dkD  }|r|st        d«      ‚| j                   rk| j"                  dkD  r[| j                  s| j"                  dkD  r?|j                  |«      }t        |j                  |«      «      dkD  }|r|st        d«      ‚y y y y y )Nr*   c              3   ó<   K  — | ]  }|j                  «       –— Œ y ­wr0   )Útolist)Ú.0Úarrs     r8   ú	<genexpr>z2VARMAX._validate_can_fix_params.<locals>.<genexpr>£  s   è ø€ ò ,JØ ˆC�J‰J�Lñ,Jùs   ‚r   r	   z–Cannot fix individual autoregressive parameters when `enforce_stationarity=True`. In this case, must either fix all autoregressive parameters or none.z—Cannot fix individual moving average parameters when `enforce_invertibility=True`. In this case, must either fix all moving average parameters or none.)rP   Ú_validate_can_fix_paramsr2   Úcumsumrk   r1   rV   Úarray_splitr±   r>   rA   rT   Ú
issupersetÚlenÚintersectionrC   r?   rB   )	r7   r±   ÚixÚ_Úar_namesÚma_namesÚfix_allÚfix_anyrr   s	           €r8   rÈ   zVARMAX._validate_can_fix_paramsŸ  sS  ø€ Ü‰Ñ(¨Ô5ä�Y‰Y”t˜DŸO™O×2Ñ2Ó4Ó5Ó6°s¸Ð;ˆñ,JÜ$&§N¡N°4×3CÑ3CÀRÓ$Hô,JÑ(ˆˆH�h  1 að ×$Ò$¨¯©°QªØ�|‰|˜aÒ 4§9¡9¨q¢=Ø%×0Ñ0°Ó:�ä˜×0Ñ0°Ó:Ó;¸aÑ?ð á¡7Ü$ð!ó"ð "ð
 ×%Ò%¨$¯)©)°aª-Ø�|Š|˜tŸy™y¨1š}Ø%×0Ñ0°Ó:�ä˜×0Ñ0°Ó:Ó;¸aÑ?ð á¡7Ü$ð!ó"ð "ð $+�7ð	  -ð +8Ð%r:   c                 ó²  — | j                  |||¬«      }| j                  rË|| j                     j                  | j                  | j
                  «      j                  }t        j                  | j                  dd  |«      }|j                  | j                  | j                  <   | j                  �<t        j                  | j                  |«      | j                  dd | j                  …df<   | j                  dkD  �rR| j                  s4t        j                  d|j                  ¬«      }|| j                  dd d …f<   || j                      j                  | j                  | j                  «      j                  }| j"                  r|}n#t        j                  | j$                  dd  |«      }| j                  | j                  xx   |j                  z  cc<   | j&                  �l| j                  d   j(                  dk(  rP| j                  dd | j                  …dd …fxx   t        j                  | j&                  |«      j                  z  cc<   | j                  rY| j                  €Mt        j                  t        j*                  |j                  ¬«      }	|	| j                  dd | j                  …df<   || j,                     j                  | j                  | j                  | j.                  z  «      }
|| j0                     j                  | j                  | j                  | j2                  z  «      }t        j4                  |
|f   | j                  | j6                  <   | j8                  dk(  r'|| j:                     | j                  | j<                  <   n�| j8                  dk(  r�t        j>                  | j                  d	   j@                  |j                  ¬«      }|| j:                     || jB                  <   t        j                  ||j                  «      | j                  d	<   | jD                  r'|| jF                     | j                  | jH                  <   y y )
N)ÚtransformedÚincludes_fixedr	   r+   r*   r   r|   r   r   r'   )%Úhandle_paramsrJ   rf   r—   rT   rI   r‘   r2   r�   r   rR   r]   ri   rF   r“   r}   rc   rH   rY   rZ   ÚstopÚnanrd   rA   re   rB   r‹   r^   r<   rg   r_   r[   rN   ra   r=   rh   rb   )r7   r”   rÕ   rÖ   Úcomplex_stepr�   Ú	interceptÚzerorœ   rÙ   r$   r%   r»   s                r8   ÚupdatezVARMAX.update½  sŽ  € à×#Ñ# F¸Ø3Að $ó Cˆð
 ×ÒØ  ×!8Ñ!8Ñ9×AÑAØ—‘˜dŸk™kó+ß+,©1ð äŸ™˜tŸy™y¨¨˜}¨kÓ:ˆIØ2;·+±+ˆD�H‰H�T×.Ñ.Ñ/à×ÑÐ+ÜACÇÁØ×$Ñ$ kóB3�—‘Ð*¨M¨T¯\©\¨M¸2Ð=Ñ>ð �<‰<˜!Óð ×&Ò&Ü—x‘x ¨¯©Ô6�Ø15�—‘Ð*ªAÐ-Ñ.à! $×"4Ñ"4Ñ5×=Ñ=Ø—‘˜dŸl™ló,ß,-©Að à×#Ò#Ø(‘	äŸF™F 4×#3Ñ#3°A°BÐ#7¸ÓF�	Ø�H‰H�T×.Ñ.Ó/°9·;±;Ñ>Ó/à×!Ñ!Ð-Ø×1Ñ1°"Ñ5×:Ñ:¸bÒ@Ø—‘Ð*¨M¨T¯\©\¨M¸2¹3Ð>Ó?Ä2Ç6Á6Ø×%Ñ% |óD5ß56±Qñ7Ó?ð
 ×Ò 4×#3Ñ#3Ð#;Ü—(‘(œ2Ÿ6™6¨¯©Ô6ˆCØ=@ˆD�H‰HÐ&¨¨¯©¨°rÐ9Ñ:ð �D—O‘OÑ$×,Ñ,Ø�L‰L˜$Ÿ,™,¨¯©Ñ2ó4ˆà�D—O‘OÑ$×,Ñ,Ø�L‰L˜$Ÿ,™,¨¯©Ñ2ó4ˆä)+¯©¨r°2¨v©ˆ�‰�×%Ñ%Ñ&ð ×Ñ *Ò,à�t×-Ñ-Ñ.ð �H‰H�T×(Ñ(Ò)ð × Ñ  NÒ2Ü Ÿh™h t§x¡x°Ñ'<×'BÑ'BØ-3¯\©\ô;ˆOð �t×-Ñ-Ñ.ð ˜D×5Ñ5Ñ6ä$&§F¡F¨?¸O×<MÑ<MÓ$NˆD�H‰H�[Ñ!ð ×!Ò!Ø*0°×1EÑ1EÑ*FˆD�H‰H�T×&Ñ&Ò'ð "r:   c           	   #   ó¬  K  — | j                   }| j                  dkD  rW|�Nt        j                  |«      }|j                  dk(  r|dd }	 t        j
                  |dd | j                  f«      }|| _         	 d–— || _         y# t        $ r: t        dt        | j                  f«      ›dt        |j                  «      ›d�«      ‚w xY w# || _         w xY w­w)a8  
        Set the final state intercept value using out-of-sample `exog` / trend

        Parameters
        ----------
        exog : ndarray
            Out-of-sample `exog` values, usually produced by
            `_validate_out_of_sample_exog` to ensure the correct shape (this
            method does not do any additional validation of its own).
        out_of_sample : int
            Number of out-of-sample periods.

        Notes
        -----
        We need special handling for simulating or forecasting with `exog` or
        trend, because if we had these then the last predicted_state has been
        set to NaN since we did not have the appropriate `exog` to create it.
        Since we handle trend in the same way as `exog`, we still have this
        issue when only trend is used without `exog`.
        r   Nr#   r	   zEProvided exogenous values are not of the appropriate shape. Required z, got r«   )	ri   rI   r2   Ú
atleast_1dÚndimr—   rC   ÚstrrN   )r7   r   Úcache_values      r8   Ú_set_final_exogzVARMAX._set_final_exog   sÉ   è ø€ ð, ×&Ñ&ˆØ�;‰;˜Š?ØÐÜ—}‘} TÓ*�Ø—9‘9 ’>Ø  ˜8�Dð:ÜŸ:™: d¨2¨A h°·±°Ó?�Dð  $ˆDÔð	+Ûà*ˆDÕøô "ò :Ý$ä(+¨T¯[©[¨NÕ(;Ü(+¨D¯J©J­ð&9ó :ð :ð:ûð  +ˆDÕüs7   ‚ACÁ
$B Á.CÁ6C Á:CÂACÃCÃ	CÃCc                 óŽ   •— | j                  |«      5  t        ‰| �  ||f|||||||	|
||dœ
|¤Ž}d d d «       |S # 1 sw Y   S xY w)N)
Úmeasurement_shocksÚstate_shocksÚinitial_stateÚanchorÚrepetitionsr   Úextend_modelÚextend_kwargsrÕ   rÖ   )rã   rP   Úsimulate)r7   r”   Únsimulationsrå   ræ   rç   rè   ré   r   rê   rë   rÕ   rÖ   rn   Úoutrr   s                  €r8   rì   zVARMAX.simulate)  sm   ø€ ð ×!Ñ! $Ó'ñ 	Ü‘'Ñ"Ø˜ðØ9KØ)¸Ø¨;¸TØ)¸Ø'¸ñð ñˆC÷	ð ˆ
÷	ð ˆ
ús	   “:ºA)N)r	   r   Úcr   FTTr	   r0   )TFF)
NNNNNNNNTF)Ú__name__Ú
__module__Ú__qualname__Ú__doc__rQ   ru   Úpropertyrz   r©   r±   r¾   rÁ   rÈ   rÝ   Ú
contextlibÚcontextmanagerrã   r   r   rì   Ú__classcell__©rr   s   @r8   r   r      s×   ø„ ñbðH >AØBGØBFØõqKófFð ñ>ó ð>ð ñ~ó ð~ð@ ñ=ó ð=ò~QòfKôZ"ð< ?DØ!óAGðF ×Ññ&+ó ð&+ñP ˆh×Ñ×'Ñ'Ó(Ø@DØ?CØ;?ØFKôó )ôr:   r   c                   ón  ‡ — e Zd ZdZ	 	 d
ˆ fd„	Zdd„Zej                  d„ «       Zej                  d„ «       Z	 e
ej                  j                  «      	 	 dˆ fd„	«       Z e
ej                  j                  «      	 	 	 	 dˆ fd„	«       Z	 	 dd„Z e
ej                  j                  «      dˆ fd	„	«       Zˆ xZS )rx   aë  
    Class to hold results from fitting an VARMAX model.

    Parameters
    ----------
    model : VARMAX instance
        The fitted model instance

    Attributes
    ----------
    specification : dictionary
        Dictionary including all attributes from the VARMAX model instance.
    coefficient_matrices_var : ndarray
        Array containing autoregressive lag polynomial coefficient matrices,
        ordered from lowest degree to highest.
    coefficient_matrices_vma : ndarray
        Array containing moving average lag polynomial coefficients,
        ordered from lowest degree to highest.

    See Also
    --------
    statsmodels.tsa.statespace.kalman_filter.FilterResults
    statsmodels.tsa.statespace.mlemodel.MLEResults
    c                 ó$  •— t        ‰| �  |||||fi |¤Ž t        di | j                  j                  | j                  j
                  | j                  j                  | j                  j                  | j                  j                  | j                  j                  | j                  j                  | j                  j                  | j                  j                  | j                  j                  | j                  j                  dœ¤Ž| _        d | _        d | _        | j                  j                  dkD  r¡t%        j&                  | j(                  | j                  j*                     «      }| j                  j,                  }| j                  j                  }	|j/                  ||	z  |«      j0                  j/                  |||	«      j0                  | _        | j                  j                  dkD  r¢t%        j&                  | j(                  | j                  j2                     «      }
| j                  j,                  }| j                  j                  }|
j/                  ||z  |«      j0                  j/                  |||«      j0                  | _        y y )N)r<   r=   r>   r?   rD   r;   rA   rB   r"   rF   rI   r   © )rP   rQ   r   Úmodelr<   r=   r>   r?   rD   r;   rA   rB   r"   rF   rI   ÚspecificationÚcoefficient_matrices_varÚcoefficient_matrices_vmar2   r“   r”   rd   rT   r—   r‘   re   )r7   rü   r”   Úfilter_resultsÚcov_typeÚcov_kwdsrn   rŸ   rT   rA   r£   rB   rr   s               €r8   rQ   zVARMAXResults.__init__S  sæ  ø€ ä‰ÑØ�6˜>¨8°Xñ	
ØAGò	
ô #ñ à"Ÿj™j×7Ñ7Ø!%§¡×!=Ñ!=Ø$(§J¡J×$CÑ$CØ%)§Z¡Z×%EÑ%EØ ŸJ™J×3Ñ3à—Z‘Z×%Ñ%ð —J‘J—O‘OØ—J‘J—O‘Oð —Z‘Z×%Ñ%Ø—z‘z×)Ñ)Ø—j‘j×'Ñ'ñ#&
ñ ˆÔð* )-ˆÔ%Ø(,ˆÔ%Ø�:‰:�?‰?˜QÒÜŸ™ §¡¨T¯Z©Z×-BÑ-BÑ!CÓDˆIØ—j‘j×(Ñ(ˆGØ—:‘:—?‘?ˆDà×!Ñ! '¨D¡.°'Ó:×<Ñ<ß‰g�g˜w¨Ó-¯a©að Ô)ð �:‰:�?‰?˜QÒÜŸ™ §¡¨T¯Z©Z×-BÑ-BÑ!CÓDˆIØ—j‘j×(Ñ(ˆGØ—:‘:—?‘?ˆDà×!Ñ! '¨D¡.°'Ó:×<Ñ<ß‰g�g˜w¨Ó-¯a©að Õ)ð	 r:   c                 ón  — |�V| j                  | j                  | j                  |d d ¬«      }|j                  }|j                  d   }|j                  d   }n| j                  d   }| j                  d   }|j                  d| j                  | j                  j                  z   «        | j                  j                  |fd|i|¤Ž}t        |j                  d||¬«      |j                  _        | j                  �|j                  | j                  «      }	|	S |j!                  | j                  «      }	|	S )	Nr	   )r   ).r   ).r*   rD   r   Úknown©ÚconstantÚstationary_cov)Úget_predictionrX   Úprediction_resultsÚpredicted_stateÚpredicted_state_covrO   rü   rD   ru   r   r    rR   r   Úsmoother_resultsÚsmoothr”   Úfilter)
r7   rm   r   rn   ÚfcastÚfcast_resultsrç   Úinitial_state_covÚmodÚress
             r8   ÚextendzVARMAXResults.extend  s  € ð ÐØ×'Ñ'¨¯	©	°4·9±9À4ÈÈÀ8Ð'ÓLˆEØ!×4Ñ4ˆMØ)×9Ñ9¸&ÑAˆMØ -× AÑ AÀ&Ñ IÑà ×0Ñ0°Ñ9ˆMØ $× 8Ñ 8¸Ñ AÐà×Ñ˜.¨$¯)©)°d·j±j×6MÑ6MÑ*MÔNØˆd�j‰j×Ñ˜uÑ:¨4Ð:°6Ñ:ˆä!/Ø�L‰L˜'¨MØ,ô".ˆ�‰Ôð × Ñ Ð,Ø—*‘*˜TŸ[™[Ó)ˆCð ˆ
ð —*‘*˜TŸ[™[Ó)ˆCàˆ
r:   c              #   óÜ  K  — | j                   }|j                  |«      5  | j                  j                  dd…df   }|j	                  | j
                  «       |dd|j                  …df   | j                  j                  d|j                  …df<   	 d–— || j                  j                  dd…df<   	 ddd«       y# || j                  j                  dd…df<   w xY w# 1 sw Y   yxY w­w)az  
        Set the final state intercept value using out-of-sample `exog` / trend

        Parameters
        ----------
        exog : ndarray
            Out-of-sample `exog` values, usually produced by
            `_validate_out_of_sample_exog` to ensure the correct shape (this
            method does not do any additional validation of its own).
        out_of_sample : int
            Number of out-of-sample periods.

        Notes
        -----
        This context manager calls the model-level context manager and
        additionally updates the last element of filter_results.state_intercept
        appropriately.
        Nr*   r+   )rü   rã   r   r+   rÝ   r”   rT   )r7   r   r  râ   s       r8   rã   zVARMAXResults._set_final_exogš  sä   è ø€ ð( �j‰jˆØ× Ñ  Ó&ñ 	IØ×-Ñ-×=Ñ=ºaÀ¸eÑDˆKØ�J‰J�t—{‘{Ô#àÐ% |¨¯© |°RÐ7Ñ8ð ×Ñ×/Ñ/°°·±°¸bÐ0@ÑAðIÛà=H�×#Ñ#×3Ñ3²A°r°EÒ:÷	Ið 	Iøð >I�×#Ñ#×3Ñ3²A°r°EÒ:ú÷	Ið 	Iüs5   ‚C, A2C ÂB>ÂC Â5	C,Â>CÃC Ã C)Ã%C,c              #   ó  K  — |xr | j                   j                  dkD  }|�r{t        | j                   j                  dd t	        j
                  d| j                   j                  f«      g«      }| j                   j                  dkD  r(t        | j                   j                  dd |dd g«      }nd}| j                   j                  | j                  z   dz
  }| j                   j                  |||¬«      }| j                  j                  dd…df   }| j                  j                  dd…dd…df   }	|j                  j                  ||	¬«       |j!                  | j"                  ddd¬	«      }
|
j                  dd…df   | j                  j                  dd…df<   	 d–— |r,t        j$                  | j                  j                  dd…df<   yy# |r,t        j$                  | j                  j                  dd…df<   w w xY w­w)
aŸ  
        Set the final predicted state value using out-of-sample `exog` / trend

        Parameters
        ----------
        exog : ndarray
            Out-of-sample `exog` values, usually produced by
            `_validate_out_of_sample_exog` to ensure the correct shape (this
            method does not do any additional validation of its own).
        out_of_sample : int
            Number of out-of-sample periods.

        Notes
        -----
        We need special handling for forecasting with `exog`, because
        if we had these then the last predicted_state has been set to NaN since
        we did not have the appropriate `exog` to create it.
        r   r*   Nr	   )r   rD   éþÿÿÿr  T)rÕ   rÖ   Ú
return_ssm)rü   rI   r   rm   r2   r[   rT   r   rD   rX   ru   r   r
  r  rR   Úinitialize_knownr  r”   rÙ   )r7   r   Úout_of_sampleÚflagÚ	tmp_endogÚtmp_exogÚtmp_trend_offsetÚtmp_modr  r  Útmp_ress              r8   Ú_set_final_predicted_statez(VARMAXResults._set_final_predicted_state¹  sÔ  è ø€ ð( Ò6 §¡×!2Ñ!2°QÑ!6ˆâÜØ—
‘
× Ñ   Ð%¤r§x¡x°°D·J±J×4FÑ4FÐ0GÓ'Hð Jó KˆIà�z‰z× Ñ  1Ò$Ü! 4§:¡:§?¡?°2°3Ð#7¸¸b¸q¸Ð"BÓC‘à�à#Ÿz™z×6Ñ6¸¿¹ÑBÀQÑFÐØ—j‘j×&Ñ& y°xØ4Dð 'ó FˆGà×*Ñ*×:Ñ:º1¸b¸5ÑAˆHØ!×0Ñ0×DÑDÂQÊÈ2ÀXÑNˆNØ�K‰K×(Ñ(°(Ø8Fð )ô Hà—n‘n T§[¡[¸dØ48ÀTð %ó KˆGð
 ×'Ñ'ª¨2¨Ñ.ð ×Ñ×/Ñ/²°2°Ñ6ð	DÛáÜ=?¿V¹V�×#Ñ#×3Ñ3²A°r°EÒ:ð ø‰tÜ=?¿V¹V�×#Ñ#×3Ñ3²A°r°EÒ:ð üs   ‚FHÆG Æ#/HÇ0HÈHc                 óÜ  •— |€d}| j                   j                  |||d¬«      \  }}	}
}| j                   j                  ||
«      }i }| j                   j                  dkD  r&| j                   j                  | j
                  z   |d<   | j                  |«      5  | j                  ||
«      5  t        ‰| �$  d|||||||dœ|¤Ž}d d d «       d d d «       S # 1 sw Y   ŒxY w# 1 sw Y   S xY w)Nr   T)ÚsilentrD   )ÚstartÚendÚdynamicÚinformation_setÚindexr   rë   rû   )
rü   Ú_get_prediction_indexÚ_validate_out_of_sample_exogrF   rD   rX   rã   r!  rP   r  )r7   r$  r%  r&  r'  r(  r   rn   Ú_startÚ_endr  rÏ   rë   rî   rr   s                 €r8   r  zVARMAXResults.get_predictionê  s  ø€ ð ˆ=ØˆEð �J‰J×,Ñ,¨U°C¸ÀtÐ,ÓLñ 	'ˆ��m Qð �z‰z×6Ñ6°t¸]ÓKˆð ˆØ�:‰:×Ñ Ò!à—
‘
×'Ñ'¨$¯)©)Ñ3ð ˜.Ñ)ð ×!Ñ! $Ó'ñ 	;Ø×0Ñ0°°}ÓEñ ;Ü‘gÑ,ð ;Ø S°'Ø$3¸5ÀtØ"/ñ;ð 4:ñ;�÷;÷	;ð ˆ
÷;ð ;ú÷	;ð ˆ
ús$   ÂC!Â+CÃC!ÃC	ÃC!Ã!C+c
                 óÌ  •— |�|dk(  rd}n1|dk(  r| j                   }n| j                  j                  |«      \  }}}|dk  r| j                   |z   }|| j                   kD  rt        d«      ‚t	        ||z   | j                   z
  d«      }| j                  j                  ||«      }| j                  ||«      5  t        ‰| �   |f||||||||	dœ|
¤Ž}d d d «       |S # 1 sw Y   S xY w)Nr$  r   r%  z4Cannot anchor simulation after the estimated sample.)rå   ræ   rç   rè   ré   r   rê   rë   )	rX   rü   Ú_get_index_locrC   rL   r*  r!  rP   rì   )r7   rí   rå   ræ   rç   rè   ré   r   rê   rë   rn   ÚilocrÏ   r  rî   rr   s                  €r8   rì   zVARMAXResults.simulate  s
  ø€ ð
 ˆ>˜V wÒ.Ø‰DØ�uŠ_Ø—9‘9‰DàŸ™×2Ñ2°6Ó:‰JˆD�!�Qà�!Š8Ø—9‘9˜tÑ#ˆDØ�$—)‘)ÒÜð (ó )ð )ô ˜D <Ñ/°$·)±)Ñ;¸QÓ?ˆð �z‰z×6Ñ6°t¸]ÓKˆà×,Ñ,¨T°=ÓAñ 	Ü‘'Ñ"ØðØ1CØ)¸Ø¨;¸TØ)¸ñ	ð
 ñˆC÷	ð ˆ
÷	ð ˆ
ús   Â5CÃC#c                 óê  — d }| j                   |j                   z
  }| j                  j                  dkD  r|dkD  r| j                  j                  | d  }t	        j
                  «       5 }	|	j                  |j                  j                  |«      «       |	j                  |j                  ||«      «       | j                  j                  |j                  ||||¬«      }
d d d «       |
S # 1 sw Y   
S xY w)Nr   )r$  r%  Úrevisions_details_startÚstate_index)rX   rü   rI   r   rõ   Ú	ExitStackÚenter_contextrã   r!  r  Únews)r7   Úpreviousr$  r%  Úperiodsr1  r2  r   r  Ústackrî   s              r8   Ú_news_previous_resultsz$VARMAXResults._news_previous_results(  så   € ð ˆØŸ	™	 H§M¡MÑ1ˆØ�:‰:×Ñ˜qÒ  ]°QÒ%6Ø—:‘:—?‘? M > ?Ð3ˆDô ×!Ñ!Ó#ð 	) uØ×Ñ §¡× >Ñ >¸tÓ DÔEØ×Ñ × CÑ CØ�mó!%ô &ð ×'Ñ'×,Ñ,Ø×)Ñ)°¸CØ(?Ø'ð -ó )ˆC÷	)ð ˆ
÷	)ð ˆ
ús   Á(A6C(Ã(C2c           	      ó�	  •‡‡— ddl mŠ | j                  }|j                  dkD  r/|j                  dkD  r d}d|j                  › d|j                  › d�}n2|j                  dkD  rd}d|j                  z  }nd	}d|j                  z  }|j
                  dkD  r|d
z  }||z   g}|j                  dkD  r|j                  d«       |j                  r|j                  d«       t        ‰| �)  ‰||| ¬«      }|�rÒt        j                  t        | j                  «      «      }dˆˆfd„	}	| j                  j                   }
| j                  j                  }| j                  j                  }| j                  j                  }| j                  j
                  }g }t#        |
«      D �]æ  }g }d}|dkD  r4|j                  t        j                  |||
|z  z   |
«      «       ||
|z  z  }|dkD  rF||
z  |z  }|dz   |
z  |z  }|j                  |t        j                  ||«      z   «       |||
dz  z  z  }|dkD  rF||
z  |z  }|dz   |
z  |z  }|j                  |t        j                  ||«      z   «       |||
dz  z  z  }|dkD  r9|j                  |t        j                  ||z  |dz   |z  «      z   «       ||
|z  z  }| j                  j                  r@|j                  t        j$                  | j                  j&                  |z
  dz
  d¬«      «       t        j(                  |«      }|j                  |«       | j                  j*                  }t-        |t.        «      s|g}d||   z  } |	| ||«      }|j0                  j                  |«       �Œé t        j                  t        | j                  «      «      | j                  j2                     } |	| |dd¬«      }|j0                  j                  |«       g }||gfD ]E  }t        j$                  |«      j5                  «       }t        |«      dkD  sŒ5|j                  |«       ŒG t        j(                  |«      }t        j$                  t/        t7        |«      j9                  t7        |«      «      «      «      }t        |«      dkD  r' |	| |dd¬«      }|j0                  j                  |«       |S )Nr   )Úsummary_paramsÚVARMAú(ú,ú)r’   z(%s)ÚVMAÚXrÛ   zmeasurement error)Úalphar$  Ú
model_nameÚdisplay_paramsc                 óÖ  •— | | j                   |   | j                  |   | j                  |   | j                  |   | j	                  ‰«      |   f}g }t        j                  | j                  j                  «      |   j                  «       D ]N  }|r$dj                  |j                  d«      d d «      }n|}|| j                  v rd|z  }|j                  |«       ŒP  ‰	|d |‰d|¬«      S )Nr«   r*   z
%s (fixed)F)ÚynameÚxnamerB  Úuse_tÚtitle)r”   ÚbseÚzvaluesÚpvaluesÚconf_intr2   r“   Údatar±   rÄ   ÚjoinÚsplitÚfixed_paramsÚappend)
r7   r›   rI  Ú	strip_endr  r±   ÚnameÚ
param_namerB  r;  s
           €€r8   Ú
make_tablez)VARMAXResults.summary.<locals>.make_tablef  sê   ø€ Ø˜TŸ[™[¨Ñ.°·±¸±Ø—|‘| DÑ)¨4¯<©<¸Ñ+=Ø—}‘} UÓ+¨DÑ1ð3�ð !�ÜŸH™H T§Y¡Y×%:Ñ%:Ó;¸DÑA×HÑHÓJò 3�DÙ Ø%(§X¡X¨d¯j©j¸«o¸c¸rÐ.BÓ%C™
à%)˜
Ø˜t×0Ñ0Ñ0Ø%1°JÑ%>˜
Ø×&Ñ& zÕ2ð3ñ & c°¸[Ø,1¸ÀeôMð Mr:   r	   r#   r¶   zResults for equation %szError covariance matrixF)rS  zOther parameters)T)Ústatsmodels.iolib.summaryr;  rý   rA   rB   rI   rF   rR  r=   rP   Úsummaryr2   ÚarangerÌ   r”   rü   rT   r®   r“   rW   Úconcatenater¬   r­   rk   Útablesrg   ÚflattenÚsetÚ
difference)r7   rB  r$  Úseparate_paramsÚspecrC  r;   rX  ÚindicesrV  rT   rA   rB   rF   rI   Úendog_masksr³   Úmasksr)   r%  r›   r¬   rI  ÚtableÚstate_cov_maskÚmÚinverse_maskr;  rr   s    `                         @€r8   rX  zVARMAXResults.summaryE  sh  ú€ å<ð ×!Ñ!ˆØ�9‰9�qŠ=˜TŸY™Y¨š]Ø ˆJØ˜Ÿ	™	�{ ! D§I¡I ;¨aÐ0‰EØ�Y‰Y˜Š]ØˆJØ˜dŸi™iÑ(‰EàˆJØ˜dŸi™iÑ(ˆEØ�;‰;˜Š?Ø˜#ÑˆJØ  5Ñ(Ð)ˆ
à�<‰<˜!ÒØ×Ñ˜kÔ*à×!Ò!Ø×ÑÐ1Ô2ä‘'‘/Ø˜u°Ø.Ð.ð "ó 
ˆò
 Ü—i‘i¤ D§K¡KÓ 0Ó1ˆGöMð& —j‘j×(Ñ(ˆGØ—:‘:—?‘?ˆDØ—:‘:—?‘?ˆDØ—j‘j×(Ñ(ˆGØ—Z‘Z×&Ñ&ˆFØˆKÜ˜7“^ó --�Ø�Ø�ð ˜Q’;Ø—L‘L¤§¡¨1¨a°'¸GÑ2CÑ.CÀWÓ!MÔNØ˜g¨Ñ/Ñ/�Fð ˜!’8Ø ™K¨$Ñ.�EØ˜q™5 GÑ+¨dÑ2�CØ—L‘LØ¤§¡¨5°#Ó!6Ñ6ô8à˜d W¨a¡ZÑ/Ñ/�Fð ˜!’8Ø ™K¨$Ñ.�EØ˜q™5 GÑ+¨dÑ2�CØ—L‘LØ¤§¡¨5°#Ó!6Ñ6ô8à˜d W¨a¡ZÑ/Ñ/�Fð ˜A’:Ø—L‘LØ¤§¡¨1¨v©:¸¸A¹ÀÑ7GÓ!HÑHôJà˜g¨Ñ.Ñ.�Fð —:‘:×/Ò/Ø—L‘LÜŸ™ §¡×!4Ñ!4°qÑ!8¸1Ñ!<ÀAÔFôHô —~‘~ eÓ,�Ø×"Ñ" 4Ô(à"Ÿj™j×4Ñ4�Ü! +¬tÔ4Ø#. -�KØ1°KÀ±NÑB�Ù" 4¨¨uÓ5�Ø—‘×%Ñ% eÖ,ð[--ôb —	‘	œ#˜dŸk™kÓ*Ó+¨D¯J©J×,HÑ,HÑIð á˜t ^Ð5NØ).ô0ˆEà�N‰N×!Ñ! %Ô(ð ˆEØ! NÐ#3Ð4ò $�Ü—H‘H˜Q“K×'Ñ'Ó)�Ü�q“6˜A“:Ø—L‘L •Oð$ô —N‘N 5Ó)ˆEÜŸ8™8¤D¬¨W«×)@Ñ)@ÄÀUÃÓ)LÓ$MÓNˆLÜ�<Ó  1Ò$Ù" 4¨Ð7IØ-2ô4�à—‘×%Ñ% eÔ,àˆr:   )NNr0   )NNFÚ	predictedNN)NNNNNNNN)FN)gš™™™™™©?NT)rð   rñ   rò   ró   rQ   r  rõ   rö   rã   r!  r   r   r  rì   r9  rX  r÷   rø   s   @r8   rx   rx   :  sç   ø„ ñð0 @DØõ*0óXð6 ×ÑñIó ðIð< ×Ññ.Dó ð.Dñ` ˆj×'Ñ'×/Ñ/Ó0Ø;@ØEIôó 1ðñ8 ˆj×!Ñ!×)Ñ)Ó*Ø8<Ø?CØ;?Ø#ôó +ððB 8=Ø+/óñ: ˆj× Ñ ×(Ñ(Ó)ô|ó *ô|r:   rx   c                   óˆ   — e Zd Zi Z ej
                  ej                  e«      Zi Z ej
                  ej                  e«      Z	y)ry   N)
rð   rñ   rò   Ú_attrsÚwrapÚunion_dictsr   Ú_wrap_attrsÚ_methodsÚ_wrap_methodsrû   r:   r8   ry   ry   Å  sH   „ Ø€FØ"�$×"Ñ"Ð#4×#@Ñ#@Ø#)ó+€Kà€HØ$�D×$Ñ$Ð%6×%DÑ%DØ%-ó/�Mr:   ry   )+ró   rõ   Úwarningsr   Úpandasr…   Únumpyr2   Ústatsmodels.compat.pandasr   Ústatsmodels.tools.toolsr   Ústatsmodels.tools.datar   Ústatsmodels.tsa.vector_arr   Ústatsmodels.base.wrapperÚbaseÚwrapperrk  Ústatsmodels.tools.sm_exceptionsr   Úkalman_filterr
   r   Úmlemodelr   r   r   r   r   Útoolsr   r   r   r   r   r   r   r   rx   ry   Úpopulate_wrapperrû   r:   r8   ú<module>r     sˆ   ðñó Ý ã Û å .Ý )Ý 3Ý /ß 'Ð 'Ý =ç 6ß =Ñ =Ý *÷÷ ñ ôXˆXô XôvH�Jô HôV/Ð,ô /ð €× Ñ Ð*¨MÕ :r:   