Ë
    £�Dj  ã                   ó    — d Z ddlZdd„Zdd„Zy)z4
SARIMAX tools.

Author: Chad Fulton
License: BSD-3
é    Nc           	      ó‚  — t        j                  | «      } |€dnd|z  }t        j                  | | j                  t        «      k(  «      st        d|›d| ›d�«      ‚| j                  t        «      } t        j                  | dk  «      rt        d|z  «      ‚| j                  d	k(  r| j                  d
   d
k(  r
| dd…df   } n!| j                  d
kD  rt        d|›d| ›d�«      ‚| j                  dk(  r| j                  «       } nït        | «      dk(  rd} nÞd| v }t        j                  | d
k(  «      d
kD  }t        j                  | d
kD  «      }|s|r/|rt        d|z  «      ‚t        j                  | d
k(  «      d   d
z   } nt        j                  | «      } t        | «      dk(  rd} nNt        j                  | t        j                  d
t        | «      d
z   «      k(  «      r| d   } n| j                  «       } t!        | t"        «      xr+ t        j                  t        j$                  | «      dk(  «      }|rt        d|z  «      ‚| S )a+  
    Standardize lag order input.

    Parameters
    ----------
    order : int or array_like
        Maximum lag order (if integer) or iterable of specific lag orders.
    title : str, optional
        Description of the order (e.g. "autoregressive") to use in error
        messages.

    Returns
    -------
    order : int or list of int
        Maximum lag order if consecutive lag orders were specified, otherwise
        a list of integer lag orders.

    Notes
    -----
    It is ambiguous if order=[1] is meant to be a boolean list or
    a list of lag orders to include, but this is irrelevant because either
    interpretation gives the same result.

    Order=[0] would be ambiguous, except that 0 is not a valid lag
    order to include, so there is no harm in interpreting as a boolean
    list, in which case it is the same as order=0, which seems like
    reasonable behavior.

    Examples
    --------
    >>> standardize_lag_order(3)
    3
    >>> standardize_lag_order(np.arange(1, 4))
    3
    >>> standardize_lag_order([1, 3])
    [1, 3]
    NÚorderz%s orderzInvalid z. Non-integer order (z) given.r   z#Terms in the %s cannot be negative.é   é   zX. Must be an integer or 1-dimensional array-like object (e.g. list, ndarray, etc.). Got ú.z¦Invalid %s. Appears to be a boolean list (since it contains a 0 element and/or multiple elements) but also contains elements greater than 1 like a list of lag orders.éÿÿÿÿz+Invalid %s. Cannot have duplicate elements.)ÚnpÚarrayÚallÚastypeÚintÚ
ValueErrorÚanyÚndimÚshapeÚitemÚlenÚsumÚwhereÚsortÚarangeÚtolistÚ
isinstanceÚlistÚdiff)r   ÚtitleÚ	has_zerosÚhas_multiple_onesÚ
has_gt_oneÚhas_duplicates         ú_C:\Crop_Prediction\Backend\crop-ai-system\venv\Lib\site-packages\statsmodels\tsa\arima\tools.pyÚstandardize_lag_orderr"   
   s  € ôL �H‰H�U‹O€EØ�}‰G¨*°uÑ*<€Eô �6‰6�%˜5Ÿ<™<¬Ó,Ñ,Ô-ÝÚ!¢5ð*ó +ð 	+à�L‰LœÓ€Eô 
‡v�vˆe�a‰iÔÜÐ>ÀÑFÓGÐGð ‡z�z�Q‚˜5Ÿ;™; q™>¨QÒ.Ø’a˜�d‘‰Ø	�‰�aŠÝâ7<ºeðEó Fð 	Fð ‡z�z�Q‚Ø—
‘
“‰Ü	ˆU‹�qŠØ‰ð ˜%�Zˆ	ÜŸF™F 5¨A¡:Ó.°Ñ2ÐÜ—V‘V˜E A™IÓ&ˆ
ÙÑ)ÙÜ ð "0ð 38ñ	"8ó 9ð 9ô
 —X‘X˜e q™jÓ)¨!Ñ,¨qÑ0‰Eô —G‘G˜E“NˆEô ˆu‹:˜Š?Ø‰Eä�V‰V�EœRŸY™Y q¬#¨e«*°q©.Ó9Ñ9Ô:Ø˜"‘I‰Eð —L‘L“NˆEô ˜u¤dÓ+ÒK´·±´r·w±w¸u³~ÈÑ7JÓ0K€MÙÜÐFÈÑNÓOÐOà€Ló    c                 ó¼  — |€dnd|z  }	 t        j                  | t        ¬«      } | j                  «       D �cg c]  }t	        |t
        «      ‘Œ }}t        |«      rt
        nt        }t        j                  | |¬«      } |s^t        j                  t        j                  | «      «      s(t        j                  t        j                  | «      «      rt        d|z  «      ‚t        j                  t        j                  | «      «      } | j                  |fk7  r%|dk(  rdnd}t        d|||| j                  fz  «      ‚| S c c}w # t        $ r t        d|z  «      ‚w xY w)	aÙ  
    Validate parameter vector for basic correctness.

    Parameters
    ----------
    params : array_like
        Array of parameters to validate.
    length : int
        Expected length of the parameter vector.
    allow_infnan : bool, optional
            Whether or not to allow `params` to contain -np.inf, np.inf, and
            np.nan. Default is False.
    title : str, optional
        Description of the parameters (e.g. "autoregressive") to use in error
        messages.

    Returns
    -------
    params : ndarray
        Array of validated parameters.

    Notes
    -----
    Basic check that the parameters are numeric and that they are the right
    shape. Optionally checks for NaN / infinite values.
    Ú z for %s)Údtypez,Parameters vector%s includes invalid values.z/Parameters vector%s includes NaN or Inf values.r   ÚszOSpecification%s implies %d parameter%s, but values with shape %s were provided.)r	   r
   ÚobjectÚravelr   Úcomplexr   ÚfloatÚ	TypeErrorr   ÚisnanÚisinfÚ
atleast_1dÚsqueezer   )ÚparamsÚlengthÚallow_infnanr   ÚpÚ
is_complexr&   Úplurals           r!   Úvalidate_basicr7   o   sC  € ð6 �-‰B Y°Ñ%6€Eð"Ü—‘˜&¬Ô/ˆØ6<·l±l³nÖE°”j ¤GÕ,ÐEˆ
ÐEÜ˜zœ?•´ˆÜ—‘˜&¨Ô.ˆñ œRŸV™V¤B§H¡H¨VÓ$4Ô5ÜŸV™V¤B§H¡H¨VÓ$4Ô5ÜÐJØ ñ!ó "ð 	"ô �]‰]œ2Ÿ:™: fÓ-Ó.€Fð ‡|�|˜�yÒ Ø ’{‘¨ˆÜð @à! 6¨6°6·<±<Ð@ñAó Bð 	Bð €Mùò- Føô ò "ÜÐGØ ñ!ó "ð 	"ð"ús   ‹-E ¸D>Á0E Ä>E ÅE)N)FN)Ú__doc__Únumpyr	   r"   r7   © r#   r!   ú<module>r;      s   ðñó óbôJ6r#   