
    M/Ph;                     X    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dS )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d"S )#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                    || _         |j        | _        |j        | _        |j        | _        |j        | _        |j        | _        |j        | _        |j        | _        |j        | _        |j	        | _	        |j
        | _
        |j        | _        |j        | _        |                    t          j        | j                  t          j        z  d          | _        d | _        d S )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     \/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/statsmodels/tsa/arima/params.py__init__zSARIMAXParams.__init__8   s    	 /!%!7!%!7+!/++$($=!$($=! "..HT]##bf,4 / A 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 | _        d S )Nzexogenous coefficientstitler"   )r   isscalarr   r   r   r   r   values     r   r"   zSARIMAXParams.exog_paramsT   sX    ;u 	1Gd00E,:4%-E-G -G -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 | _        d S )NAR coefficientsr&   r,   )r   r(   r   r   r   r   r)   s     r   r,   zSARIMAXParams.ar_paramsa   U    ;u 	/Gd..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   sR     x	.233QY&{33R$r    c                    t          |t                    r|j        }t          || j        j        dz   d          }|d         dk    rt          d          g }t          d| j        j        dz             D ]H}|| j        j        v r|	                    ||                     -||         dk    rt          d          I|| _
        d S )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     eZ(( 	JEudi&<q&@%46 6 68q==IJJJ	q$)01455 	4 	4ADI%%%  %(++++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 | _        d S )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   sO     x	.233QY%k2R$r    c                    t          |t                    r|j        }t          || j        j        dz   d          }|d         dk    rt          d          g }t          d| j        j        dz             D ]G}|| j        j        v r|	                    ||                    ,||         dk    rt          d          H|| _
        d S )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     eZ(( 	JEudi&<q&@%46 6 68q==IJJJ	q$)01455 	4 	4ADI%%%  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 | _        d S )Nseasonal AR coefficientsr&   rK   )r   r(   r   r   r   r   r)   s     r   rK   z SARIMAXParams.seasonal_ar_params   Y    ;u 	8Gd77E3A4,4N4P 4P 4P/0r    c                    | j         j        }dg}|dk    rt          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                                          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&sq55x	 ?@@H$)4C@@@1DB ./CDDHRL5BF2:h#@#@$*QUAJ#7E EELWYYO PD$r    c                    | j         j        }t          |t                    r|j        }t          |d|| j         j        z  z   d          }|d         dk    rt          d          g }t          d| j         j        dz             D ]N}|| j         j	        v r |
                    |||z                       0|||z           dk    rt          d          O|| _        d S )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& eZ(( 	JEua!di.M*M&M%=? ? ?8q==FGGGq$)9A=>> 	4 	4ADI..."))5Q<-8888q1u""  "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 | _        d S )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k    rt          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                                          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&x}}q55x	 ?@@H$)4C@@@1DB-.BCHRL5BF2:h#@#@$*QUAJ#7E EELWYYO PD$r    c                    | j         j        }t          |t                    r|j        }t          |d|| j         j        z  z   d          }|d         dk    rt          d          g }t          d| j         j        dz             D ]M}|| j         j	        v r|
                    |||z                      /|||z           dk    rt          d          N|| _        d S )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& eZ(( 	JEua!di.M*M&M%=@ @ @8q==FGGGq$)9A=>> 	4 	4ADI..."))%A,7777q1u""  "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        d<   d | _        d S )Nrp   r&   )r[   r
   concentrate_scaler   itemr   r   )r   paramslengths      r   rp   zSARIMAXParams.sigma2  sQ    4455'5F((, (, (,,0DFF 	8$r    c                      | 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3r    c                      | 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                 z    | j          | j        j        di | j        | _         | j                                         S )z"(array) Complete parameter vector.N )r   r
   join_paramsr   copyr$   s    r   rt   zSARIMAXParams.params$  s?     <0490FF43EFFDL|  """r    c                 R    | j                             |          | _        d | _        d S )N)r
   r   r   r   r)   s     r   rt   zSARIMAXParams.params+  s%    !Y33E::r    c                 Z    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"(4;//0000r    c                 p    d}	 | j                             | j                   n# t          $ r d}Y nw xY w|S )z>(bool) Are current parameter values valid (e.g. variance > 0).TF)r
   validate_paramsrt   r<   )r   valids     r   is_validzSARIMAXParams.is_valid5  sR     	I%%dk2222 	 	 	EEE	s   $ 33c                    t          | j        | j        d           t          | j        | j        d           d}d}| j        dk    rt          | j        j                  }| j        dk    rt          | j        j                  }|o|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.	0 	0 	0 	0t.0I7	9 	9 	9 	9 !%a)$,*;<<M$q((%243H3M%N%N"7!77r    c                    t          | j        | j        d           t          | j        | j        d           d}d}| j        dk    rt          | j        j                  }| j        dk    rt          | j        j                  }|o|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.	0 	0 	0 	0t.0I7	9 	9 	9 	9 !%a)$,*;<<M$q((%243H3M%N%N"7!77r    c                 4    | 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                 B    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D,<====r    c                 r   g }| j         r*|                    dt          | j                  z             | j        r*|                    dt          | j                  z             | j        r*|                    dt          | j                  z             | j        r*|                    dt          | j	                  z             | j
        r*|                    dt          | j                  z             | j        j        s|                    d| j        z             dd                    |          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__{  sD   
 	Ai#d.>*?*??@@@ 	=gDN(;(;;<<< 	=gDN(;(;;<<<$ 	<.!$"9::; < < <$ 	<.!$"9::; < < <y* 	9kDK7888"TYYz%:%:::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      ss       & &P  . 1 1 X1    / / X/        X  ^# # ^#$ / / X/        X  ^# # ^#$ 8 8 X8        X  5 5 5( 8 8 X8        X  5 5 5( , , X, ]  ] 4 4 X4 4 4 X4 # # X# ]  ] 1 1 X1   X 8 8 X8  8 8 X8") ) )	> 	> 	>; ; ; ; ;r    r   )r   numpyr   pandasr   numpy.polynomialr    statsmodels.tsa.statespace.toolsr   statsmodels.tsa.arima.toolsr   r   r|   r    r   <module>r      s             ' ' ' ' ' ' : : : : : : 6 6 6 6 6 6}; }; }; }; }; }; }; }; }; };r    