Ë
    £�Dj™<  ã                   óP   — d Z ddlZddlZddlmZ ddlmZ ddl	m
Z
  G d„ d«      Zy)z?
SARIMAX parameters class.

Author: Chad Fulton
License: BSD-3
é    N)Ú
Polynomial)Úis_invertible)Úvalidate_basicc                   óÄ  — e Zd ZdZd„ Zed„ «       Zej                  d„ «       Zed„ «       Zej                  d„ «       Zed„ «       Z	e	j                  d„ «       Z	ed	„ «       Z
e
j                  d
„ «       Z
ed„ «       Zej                  d„ «       Zed„ «       Zej                  d„ «       Zed„ «       Zej                  d„ «       Zed„ «       Zej                  d„ «       Zed„ «       Zej                  d„ «       Zed„ «       Zej                  d„ «       Zed„ «       Zed„ «       Zed„ «       Zej                  d„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zd„ Zd „ Zd!„ Zy")#ÚSARIMAXParamsac  
    SARIMAX parameters.

    Parameters
    ----------
    spec : SARIMAXSpecification
        Specification of the SARIMAX model.

    Attributes
    ----------
    spec : SARIMAXSpecification
        Specification of the SARIMAX model.
    exog_names : list of str
        Names associated with exogenous parameters.
    ar_names : list of str
        Names associated with (non-seasonal) autoregressive parameters.
    ma_names : list of str
        Names associated with (non-seasonal) moving average parameters.
    seasonal_ar_names : list of str
        Names associated with seasonal autoregressive parameters.
    seasonal_ma_names : list of str
        Names associated with seasonal moving average parameters.
    param_names :list of str
        Names of all model parameters.
    k_exog_params : int
        Number of parameters associated with exogenous variables.
    k_ar_params : int
        Number of parameters associated with (non-seasonal) autoregressive
        lags.
    k_ma_params : int
        Number of parameters associated with (non-seasonal) moving average
        lags.
    k_seasonal_ar_params : int
        Number of parameters associated with seasonal autoregressive lags.
    k_seasonal_ma_params : int
        Number of parameters associated with seasonal moving average lags.
    k_params : int
        Total number of model parameters.
    c                 óD  — || _         |j                  | _        |j                  | _        |j                  | _        |j                  | _        |j
                  | _        |j                  | _        |j                  | _        |j                  | _        |j                  | _	        |j                  | _
        |j                  | _        |j                  | _        |j                  t        j                  | j                  «      t        j                   z  d¬«      | _        d | _        y )NT)Úallow_infnan)ÚspecÚ
exog_namesÚar_namesÚma_namesÚseasonal_ar_namesÚseasonal_ma_namesÚparam_namesÚk_exog_paramsÚk_ar_paramsÚk_ma_paramsÚk_seasonal_ar_paramsÚk_seasonal_ma_paramsÚk_paramsÚsplit_paramsÚnpÚzerosÚnanÚ_params_splitÚ_params)Úselfr
   s     ú`C:\Crop_Prediction\Backend\crop-ai-system\venv\Lib\site-packages\statsmodels\tsa\arima\params.pyÚ__init__zSARIMAXParams.__init__8   sä   € ØˆŒ	ð Ÿ/™/ˆŒØŸ™ˆŒØŸ™ˆŒØ!%×!7Ñ!7ˆÔØ!%×!7Ñ!7ˆÔØ×+Ñ+ˆÔà!×/Ñ/ˆÔØ×+Ñ+ˆÔØ×+Ñ+ˆÔØ$(×$=Ñ$=ˆÔ!Ø$(×$=Ñ$=ˆÔ!ØŸ™ˆŒð "×.Ñ.Ü�H‰H�T—]‘]Ó#¤b§f¡fÑ,¸4ð /ó AˆÔàˆ�ó    c                 ó    — | j                   d   S )z7(array) Parameters associated with exogenous variables.Úexog_params©r   ©r   s    r   r"   zSARIMAXParams.exog_paramsO   s   € ð ×!Ñ! -Ñ0Ð0r    c                 ó¦   — t        j                  |«      r|g| j                  z  }t        || j                  d¬«      | j                  d<   d | _        y )Nzexogenous coefficients©Útitler"   )r   Úisscalarr   r   r   r   ©r   Úvalues     r   r"   zSARIMAXParams.exog_paramsT   sK   € ä�;‰;�uÔØ�G˜d×0Ñ0Ñ0ˆEÜ,:Ø�4×%Ñ%Ð-Eô-Gˆ×Ñ˜=Ñ)àˆ�r    c                 ó    — | j                   d   S )z1(array) Autoregressive (non-seasonal) parameters.Ú	ar_paramsr#   r$   s    r   r,   zSARIMAXParams.ar_params\   ó   € ð ×!Ñ! +Ñ.Ð.r    c                 ó¦   — t        j                  |«      r|g| j                  z  }t        || j                  d¬«      | j                  d<   d | _        y )NúAR coefficientsr&   r,   )r   r(   r   r   r   r   r)   s     r   r,   zSARIMAXParams.ar_paramsa   óJ   € ä�;‰;�uÔØ�G˜d×.Ñ.Ñ.ˆEÜ*8Ø�4×#Ñ#Ð+<ô+>ˆ×Ñ˜;Ñ'àˆ�r    c                 óÌ   — t        j                  | j                  j                  dz   «      }d|d<   | j                  j                  }| j
                  d    ||<   t        |«      S )z:(Polynomial) Autoregressive (non-seasonal) lag polynomial.é   r   r,   )r   r   r
   Úmax_ar_orderÚar_lagsr   r   ©r   ÚcoefÚixs      r   Úar_polyzSARIMAXParams.ar_polyi   s[   € ô �x‰x˜Ÿ	™	×.Ñ.°Ñ2Ó3ˆØˆˆQ‰Ø�Y‰Y×ÑˆØ×&Ñ& {Ñ3Ð3ˆˆR‰Ü˜$ÓÐr    c                 ó�  — t        |t        «      r|j                  }t        || j                  j
                  dz   d¬«      }|d   dk7  rt        d«      ‚g }t        d| j                  j
                  dz   «      D ]C  }|| j                  j                  v r|j                  ||    «       Œ1||   dk7  sŒ:t        d«      ‚ || _
        y )Nr2   zAR polynomialr&   r   z*AR polynomial constant must be equal to 1.úWAR polynomial includes non-zero values for lags that are excluded in the specification.)Ú
isinstancer   r6   r   r
   r3   Ú
ValueErrorÚranger4   Úappendr,   )r   r*   r,   Úis       r   r8   zSARIMAXParams.ar_polyr   sÄ   € ô �eœZÔ(Ø—J‘JˆEÜ˜u d§i¡i×&<Ñ&<¸qÑ&@Ø%4ô6ˆà�‰8�qŠ=ÜÐIÓJÐJØˆ	Ü�q˜$Ÿ)™)×0Ñ0°1Ñ4Ó5ò 	4ˆAØ�D—I‘I×%Ñ%Ñ%Ø× Ñ  %¨¡( Õ+Ø�q‘˜Q“Ü ð "3ó 4ð 4ð		4ð #ˆ�r    c                 ó    — | j                   d   S )z1(array) Moving average (non-seasonal) parameters.Ú	ma_paramsr#   r$   s    r   rA   zSARIMAXParams.ma_params…   r-   r    c                 ó¦   — t        j                  |«      r|g| j                  z  }t        || j                  d¬«      | j                  d<   d | _        y )NúMA coefficientsr&   rA   )r   r(   r   r   r   r   r)   s     r   rA   zSARIMAXParams.ma_paramsŠ   r0   r    c                 óÊ   — t        j                  | j                  j                  dz   «      }d|d<   | j                  j                  }| j
                  d   ||<   t        |«      S )z:(Polynomial) Moving average (non-seasonal) lag polynomial.r2   r   rA   )r   r   r
   Úmax_ma_orderÚma_lagsr   r   r5   s      r   Úma_polyzSARIMAXParams.ma_poly’   sX   € ô �x‰x˜Ÿ	™	×.Ñ.°Ñ2Ó3ˆØˆˆQ‰Ø�Y‰Y×ÑˆØ×%Ñ% kÑ2ˆˆR‰Ü˜$ÓÐr    c                 óŽ  — t        |t        «      r|j                  }t        || j                  j
                  dz   d¬«      }|d   dk7  rt        d«      ‚g }t        d| j                  j
                  dz   «      D ]B  }|| j                  j                  v r|j                  ||   «       Œ0||   dk7  sŒ9t        d«      ‚ || _
        y )Nr2   zMA polynomialr&   r   z*MA polynomial constant must be equal to 1.úWMA polynomial includes non-zero values for lags that are excluded in the specification.)r;   r   r6   r   r
   rE   r<   r=   rF   r>   rA   )r   r*   rA   r?   s       r   rG   zSARIMAXParams.ma_poly›   sÂ   € ô �eœZÔ(Ø—J‘JˆEÜ˜u d§i¡i×&<Ñ&<¸qÑ&@Ø%4ô6ˆà�‰8�qŠ=ÜÐIÓJÐJØˆ	Ü�q˜$Ÿ)™)×0Ñ0°1Ñ4Ó5ò 	4ˆAØ�D—I‘I×%Ñ%Ñ%Ø× Ñ   q¡Õ*Ø�q‘˜Q“Ü ð "3ó 4ð 4ð		4ð #ˆ�r    c                 ó    — | j                   d   S )z+(array) Seasonal autoregressive parameters.Úseasonal_ar_paramsr#   r$   s    r   rK   z SARIMAXParams.seasonal_ar_params®   ó   € ð ×!Ñ!Ð"6Ñ7Ð7r    c                 ó¦   — t        j                  |«      r|g| j                  z  }t        || j                  d¬«      | j                  d<   d | _        y )Núseasonal AR coefficientsr&   rK   )r   r(   r   r   r   r   r)   s     r   rK   z SARIMAXParams.seasonal_ar_params³   óL   € ä�;‰;�uÔØ�G˜d×7Ñ7Ñ7ˆEÜ3AØ�4×,Ñ,Ð4Nô4Pˆ×ÑÐ/Ñ0àˆ�r    c                 óÖ  — | j                   j                  }dg}|dkD  rÁt        j                  | j                   j                  «      }t        j
                  | j                   j                  t        ¬«      dz
  }| j                  d    ||<   t        j                  dt        j                  t        j                  |d«      d|dz
  dfgd«      j                  «       f   }t        |«      S )z4(Polynomial) Seasonal autoregressive lag polynomial.r2   r   ©ÚdtyperK   ©éÿÿÿÿr2   ©r   r   Úconstant)r
   Úseasonal_periodsr   r   Úmax_seasonal_ar_orderÚarrayÚseasonal_ar_lagsÚintr   Úr_ÚpadÚreshapeÚflattenr   ©r   Úsr6   Úexpandedr7   s        r   Úseasonal_ar_polyzSARIMAXParams.seasonal_ar_poly»   sÄ   € ð �I‰I×&Ñ&ˆØˆsˆØˆqŠ5Ü—x‘x §	¡	× ?Ñ ?Ó@ˆHÜ—‘˜$Ÿ)™)×4Ñ4¼CÔ@À1ÑDˆBØ ×.Ñ.Ð/CÑDÐDˆH�R‰LÜ—5‘5˜œBŸF™F¤2§:¡:¨h¸Ó#@Ø$*¨Q°©U°A¨JÐ#7¸óEßELÁWÃYðOñ PˆDä˜$ÓÐr    c                 óÎ  — | j                   j                  }t        |t        «      r|j                  }t        |d|| j                   j                  z  z   d¬«      }|d   dk7  rt        d«      ‚g }t        d| j                   j                  dz   «      D ]I  }|| j                   j                  v r|j                  |||z      «       Œ4|||z     dk7  sŒ@t        d«      ‚ || _        y )Nr2   zseasonal AR polynomialr&   r   ú'Polynomial constant must be equal to 1.r:   )r
   rW   r;   r   r6   r   rX   r<   r=   rZ   r>   rK   )r   r*   ra   rK   r?   s        r   rc   zSARIMAXParams.seasonal_ar_polyÉ   sã   € à�I‰I×&Ñ&ˆô �eœZÔ(Ø—J‘JˆEÜ˜u a¨!¨d¯i©i×.MÑ.MÑ*MÑ&MØ%=ô?ˆà�‰8�qŠ=ÜÐFÓGÐGØÐÜ�q˜$Ÿ)™)×9Ñ9¸AÑ=Ó>ò 	4ˆAØ�D—I‘I×.Ñ.Ñ.Ø"×)Ñ)¨5°°Q±©<¨-Õ8Ø�q˜1‘u‘ Ó"Ü ð "3ó 4ð 4ð		4ð #5ˆÕr    c                 ó    — | j                   d   S )z+(array) Seasonal moving average parameters.Úseasonal_ma_paramsr#   r$   s    r   rg   z SARIMAXParams.seasonal_ma_paramsÞ   rL   r    c                 ó¦   — t        j                  |«      r|g| j                  z  }t        || j                  d¬«      | j                  d<   d | _        y )Núseasonal MA coefficientsr&   rg   )r   r(   r   r   r   r   r)   s     r   rg   z SARIMAXParams.seasonal_ma_paramsã   rO   r    c                 óú  — | j                   j                  }t        j                  dg«      }|dkD  rÀt        j                  | j                   j
                  «      }t        j                  | j                   j                  t        ¬«      dz
  }| j                  d   ||<   t        j                  dt        j                  t        j                  |d«      d|dz
  dfgd«      j                  «       f   }t        |«      S )z4(Polynomial) Seasonal moving average lag polynomial.r2   r   rQ   rg   rS   rU   rV   )r
   rW   r   rY   r   Úmax_seasonal_ma_orderÚseasonal_ma_lagsr[   r   r\   r]   r^   r_   r   r`   s        r   Úseasonal_ma_polyzSARIMAXParams.seasonal_ma_polyë   sÉ   € ð �I‰I×&Ñ&ˆÜ�x‰x˜˜‹}ˆØˆqŠ5Ü—x‘x §	¡	× ?Ñ ?Ó@ˆHÜ—‘˜$Ÿ)™)×4Ñ4¼CÔ@À1ÑDˆBØ×-Ñ-Ð.BÑCˆH�R‰LÜ—5‘5˜œBŸF™F¤2§:¡:¨h¸Ó#@Ø$*¨Q°©U°A¨JÐ#7¸óEßELÁWÃYðOñ PˆDä˜$ÓÐr    c                 óÌ  — | j                   j                  }t        |t        «      r|j                  }t        |d|| j                   j                  z  z   d¬«      }|d   dk7  rt        d«      ‚g }t        d| j                   j                  dz   «      D ]H  }|| j                   j                  v r|j                  |||z     «       Œ3|||z     dk7  sŒ?t        d«      ‚ || _        y )Nr2   zseasonal MA polynomialr&   r   re   rI   )r
   rW   r;   r   r6   r   rk   r<   r=   rl   r>   rg   )r   r*   ra   rg   r?   s        r   rm   zSARIMAXParams.seasonal_ma_polyù   sâ   € à�I‰I×&Ñ&ˆô �eœZÔ(Ø—J‘JˆEÜ˜u a¨!¨d¯i©i×.MÑ.MÑ*MÑ&MØ%=ô@ˆà�‰8�qŠ=ÜÐFÓGÐGØÐÜ�q˜$Ÿ)™)×9Ñ9¸AÑ=Ó>ò 	4ˆAØ�D—I‘I×.Ñ.Ñ.Ø"×)Ñ)¨%°°A±©,Õ7Ø�q˜1‘u‘ Ó"Ü ð "3ó 4ð 4ð		4ð #5ˆÕr    c                 ó    — | j                   d   S )z(float) Innovation variance.Úsigma2r#   r$   s    r   rp   zSARIMAXParams.sigma2  s   € ð ×!Ñ! (Ñ+Ð+r    c                 ó¤   — t        | j                  j                   «      }t        ||d¬«      j	                  «       | j
                  d<   d | _        y )Nrp   r&   )r[   r
   Úconcentrate_scaler   Úitemr   r   )r   ÚparamsÚlengths      r   rp   zSARIMAXParams.sigma2  sF   € ä˜Ÿ™×4Ñ4Ð4Ó5ˆÜ'5Ø�F (ô(,ß,0©D«Fð 	×Ñ˜8Ñ$àˆ�r    c                 ó4   — | j                   | j                  z  S )z8(Polynomial) Reduced form autoregressive lag polynomial.)r8   rc   r$   s    r   Úreduced_ar_polyzSARIMAXParams.reduced_ar_poly  ó   € ð �|‰|˜d×3Ñ3Ñ3Ð3r    c                 ó4   — | j                   | j                  z  S )z8(Polynomial) Reduced form moving average lag polynomial.)rG   rm   r$   s    r   Úreduced_ma_polyzSARIMAXParams.reduced_ma_poly  rx   r    c                 ó¤   — | j                   €+ | j                  j                  di | j                  ¤Ž| _         | j                   j	                  «       S )z"(array) Complete parameter vector.© )r   r
   Újoin_paramsr   Úcopyr$   s    r   rt   zSARIMAXParams.params$  sB   € ð �<‰<ÐØ0˜4Ÿ9™9×0Ñ0ÑF°4×3EÑ3EÑFˆDŒLØ�|‰|× Ñ Ó"Ð"r    c                 óR   — | j                   j                  |«      | _        d | _        y )N)r
   r   r   r   r)   s     r   rt   zSARIMAXParams.params+  s    € à!ŸY™Y×3Ñ3°EÓ:ˆÔØˆ�r    c                 óh   — t        j                  t        j                  | j                  «      «       S )zA(bool) Are current parameter values all filled in (i.e. not NaN).)r   ÚanyÚisnanrt   r$   s    r   Úis_completezSARIMAXParams.is_complete0  s#   € ô —6‘6œ"Ÿ(™( 4§;¡;Ó/Ó0Ð0Ð0r    c                 óz   — d}	 | j                   j                  | j                  «       |S # t        $ r d}Y |S w xY w)z>(bool) Are current parameter values valid (e.g. variance > 0).TF)r
   Úvalidate_paramsrt   r<   )r   Úvalids     r   Úis_validzSARIMAXParams.is_valid5  sF   € ð ˆð	Ø�I‰I×%Ñ% d§k¡kÔ2ð ˆøô ò 	Ø‰EØˆð	ús   „%+ «:¹:c                 óV  — t        | j                  | j                  d¬«       t        | j                  | j                  d¬«       d}d}| j                  dkD  rt        | j                  j                  «      }| j                  dkD  rt        | j                  j                  «      }|xr |S )z?(bool) Is the reduced autoregressive lag poylnomial stationary.r/   r&   rN   Tr   )	r   r,   r   rK   r   r   r8   r6   rc   )r   Úar_stationaryÚseasonal_ar_stationarys      r   Úis_stationaryzSARIMAXParams.is_stationary?  s˜   € ô 	�t—~‘~ t×'7Ñ'7Ø.õ	0ä�t×.Ñ.°×0IÑ0IØ7õ	9ð ˆØ!%ÐØ×Ñ˜aÒÜ)¨$¯,©,×*;Ñ*;Ó<ˆMØ×$Ñ$ qÒ(Ü%2°4×3HÑ3H×3MÑ3MÓ%NÐ"àÒ7Ð!7Ð7r    c                 óV  — t        | j                  | j                  d¬«       t        | j                  | j                  d¬«       d}d}| j                  dkD  rt        | j                  j                  «      }| j                  dkD  rt        | j                  j                  «      }|xr |S )z?(bool) Is the reduced moving average lag poylnomial invertible.rC   r&   ri   Tr   )	r   rA   r   rg   r   r   rG   r6   rm   )r   Úma_stationaryÚseasonal_ma_stationarys      r   r   zSARIMAXParams.is_invertibleP  s˜   € ô 	�t—~‘~ t×'7Ñ'7Ø.õ	0ä�t×.Ñ.°×0IÑ0IØ7õ	9ð ˆØ!%ÐØ×Ñ˜aÒÜ)¨$¯,©,×*;Ñ*;Ó<ˆMØ×$Ñ$ qÒ(Ü%2°4×3HÑ3H×3MÑ3MÓ%NÐ"àÒ7Ð!7Ð7r    c                 ó6   — | j                   j                  «       S )a¢  
        Return the parameters split by type into a dictionary.

        Returns
        -------
        split_params : dict
            Dictionary with keys 'exog_params', 'ar_params', 'ma_params',
            'seasonal_ar_params', 'seasonal_ma_params', and (unless
            `concentrate_scale=True`) 'sigma2'. Values are the parameters
            associated with the key, based on the `params` argument.
        )r   r~   r$   s    r   Úto_dictzSARIMAXParams.to_dictb  s   € ð ×!Ñ!×&Ñ&Ó(Ð(r    c                 óX   — t        j                  | j                  | j                  ¬«      S )z¸
        Return the parameters as a Pandas series.

        Returns
        -------
        series : pd.Series
            Pandas series with index set to the parameter names.
        )Úindex)ÚpdÚSeriesrt   r   r$   s    r   Ú	to_pandaszSARIMAXParams.to_pandasp  s   € ô �y‰y˜Ÿ™¨D×,<Ñ,<Ô=Ð=r    c                 ó”  — g }| j                   r'|j                  dt        | j                  «      z  «       | j                  r'|j                  dt        | j
                  «      z  «       | j                  r'|j                  dt        | j                  «      z  «       | j                  r'|j                  dt        | j                  «      z  «       | j                  r'|j                  dt        | j                  «      z  «       | j                  j                  s|j                  d| j                  z  «       ddj                  |«      z  S )	z+Represent SARIMAXParams object as a string.zexog=%szar=%szma=%szseasonal_ar=%szseasonal_ma=%sz	sigma2=%szSARIMAXParams(%s)z, )r   r>   Ústrr"   r   r,   r   rA   r   rK   r   rg   r
   rr   rp   Újoin)r   Ú
componentss     r   Ú__repr__zSARIMAXParams.__repr__{  s
  € àˆ
Ø×ÒØ×Ñ˜i¬#¨d×.>Ñ.>Ó*?Ñ?Ô@Ø×ÒØ×Ñ˜g¬¨D¯N©NÓ(;Ñ;Ô<Ø×ÒØ×Ñ˜g¬¨D¯N©NÓ(;Ñ;Ô<Ø×$Ò$Ø×ÑÐ.Ü! $×"9Ñ"9Ó:ñ;ô <à×$Ò$Ø×ÑÐ.Ü! $×"9Ñ"9Ó:ñ;ô <à�y‰y×*Ò*Ø×Ñ˜k¨D¯K©KÑ7Ô8Ø" T§Y¡Y¨zÓ%:Ñ:Ð:r    N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Úpropertyr"   Úsetterr,   r8   rA   rG   rK   rc   rg   rm   rp   rw   rz   rt   rƒ   r‡   r‹   r   r�   r•   rš   r|   r    r   r   r      s†  „ ñ&òPð. ñ1ó ð1ð ×Ññó ðð ñ/ó ð/ð ×Ññó ðð ñ ó ð ð ‡^�^ñ#ó ð#ð$ ñ/ó ð/ð ×Ññó ðð ñ ó ð ð ‡^�^ñ#ó ð#ð$ ñ8ó ð8ð ×Ññó ðð ñ ó ð ð ×Ññ5ó ð5ð( ñ8ó ð8ð ×Ññó ðð ñ ó ð ð ×Ññ5ó ð5ð( ñ,ó ð,ð ‡]�]ñó ðð ñ4ó ð4ð ñ4ó ð4ð ñ#ó ð#ð ‡]�]ñó ðð ñ1ó ð1ð ñó ðð ñ8ó ð8ð  ñ8ó ð8ò")ò	>ó;r    r   )rž   Únumpyr   Úpandasr“   Únumpy.polynomialr   Ú statsmodels.tsa.statespace.toolsr   Ústatsmodels.tsa.arima.toolsr   r   r|   r    r   ú<module>r¦      s'   ðñó Û Ý 'å :Ý 6÷};ò };r    