U
    KvfW^                  $   @   sJ  d dl Zd dlZd dlZd dlmZmZmZ d dl	m
ZmZ d dlmZ dd Zdd Zd	d
 Zejdd d d d edgdfdd d d eddgdfdd d d eddgdfdd d d edddgdfdd d d edgd dg dfd dd d edgdfd dddedgdfddd d eddgdfddddeddgdfd d d d edgdfdd d d eddgdfdd d d eddgdfdd d d edddgdfdd d d edgd dg dfd dd d edgdfd dddedgdfddd d eddgdfddddeddgdfgdd Zejdddddddd d!dddd"gd d dd d dd#d#d$fddd d d d d dd"gdd#d#d$fdddgd dd"gdd"gd ddgdd#d#d$fd%d&d'd(d)d*d+dd,gddd"ddd"d-d$d#d#fd.d,gddd"ddd"d-d$d#d#fd.d,d/gddd"ddd"d-d$d#d#fd#d,d/gddd"ddd"d-d$d#d#fd0gd1d2 Zd3d4 Zd5d6 Zejd7d8d9dddd:d;d<d=d>d?gfd@d9dddd:d;d=d>d?gfdAd9dddd<d=d>d?gfdBd9dddd=d>d?gfd8dCdddd>d?gfd@d9d#ddd>d?gfd@d9d$ddd:d;d=d?gfd@d9dd#dd:d;d=d>d?gfd@d9dd$dd:d;d=d>d?gfd@d9ddd#d:d;d=d?gfg
dDdE ZdFdG ZdS )H    N)assert_equalassert_allcloseassert_raises)constrain_stationary_univariate!unconstrain_stationary_univariate)specificationc                 C   s
  |\}}}|\}	}
}}t | j|||f t | j|	|
||f t | j| t | j| t | j| t | j|	 t | j|
 t | j| t | j	| t | j
t|tr|ntd|d  t | jt|tr|ntd|d  t | jt|	tr|	ntd|	d  t | jt|tr|ntd|d  t|tr>|d n|}t|trV|d n|}t|	trn|	d n|	}t|tr|d n|}t | j| t | j| t | j| t | j| t | j|||   t | j|||   t | j| t | j| t | j| d S )N   )r   orderseasonal_orderar_orderdiffma_orderseasonal_ar_orderseasonal_diffseasonal_ma_orderseasonal_periodsZar_lags
isinstancelistnparangeZma_lagsZseasonal_ar_lagsZseasonal_ma_lagsmax_ar_ordermax_ma_ordermax_seasonal_ar_ordermax_seasonal_ma_orderZmax_reduced_ar_orderZmax_reduced_ma_orderenforce_stationarityenforce_invertibilityconcentrate_scale)specr
   r   r   r   r   pdqPDQsr   r   r   r    r&   R/tmp/pip-unpacked-wheel-2v6byqio/statsmodels/tsa/arima/tests/test_specification.pycheck_attributes   sP    


r(   c                 C   s  |\}}}|\}}}}t |}t|tr0t |n|}t|trFt |n|}t|tr\t |n|}t|trrt |n|}t| }||	 |
 | | }|s|d t| j| t| j| t| j|| dk t| j	|dk t| j
| t| j| t| j| t| j| t| j| t| j|| | | | |  t| j| t| j|	 t| j|
 t| j| t| j| t| j| d S )Nsigma2r   )lenr   r   intappendr   is_ar_consecutiveis_ma_consecutiveZis_integratedZis_seasonalk_exog_paramsk_ar_paramsk_ma_paramsk_seasonal_ar_paramsk_seasonal_ma_paramsZk_params
exog_namesar_namesma_namesseasonal_ar_namesseasonal_ma_namesparam_names)r   r
   r   r   r   r   r-   r.   r4   r5   r6   r7   r8   r   r    r!   r"   r#   r$   r%   r/   r0   r1   r2   r3   Zk_variance_paramsr9   r&   r&   r'   check_properties;   sJ    



r:   c                 C   s  t j||||	|
|f }||||	|
d}|s2||d< t| || t| jf || t| |d  tt| jg  tt| jdg|dd     tt| jt jt j	|dd  f  tt| jt jt j
|dd  f  | jdkr*t j|t ||t |	|
|f }|rtt| j| nt| |d  | jdkr~t j||t ||	t |
|f }|rntt| j| nt| |d  | jdkrt j|t ||t |	|
|f }|rtt| j| nt| |d  | jdkr&t j||t ||	t |
|f }|rtt| j| nt| |d  |stt j||||	|
df }tt| j| t j||||	|
df }tt| j| |}|}|	}|
}|}| jdkr|rtt |}| jdkr|rtt | }| jdkr|rtt |	}| jdkr|rtt | }|s|d }t j||||||f }t j||||	|
|f }t| || t| || t| | || d S )	N)exog_params	ar_params	ma_paramsseasonal_ar_paramsseasonal_ma_paramsr)   ar   r           r	         ?)r   Zr_r   Zsplit_paramsjoin_paramsZvalidate_paramsr   
ValueErrortolistinfnanr   Z	ones_likeZ
zeros_liker   r   r   unconstrainarrayr   Zunconstrain_paramsZconstrain_params)r   r
   r   r   r   r   r;   r<   r=   r>   r?   r)   paramsdesiredZunconstrained_ar_paramsZunconstrained_ma_paramsZ unconstrained_seasonal_ar_paramsZ unconstrained_seasonal_ma_paramsZunconstrained_sigma2Zunconstrained_paramsr&   r&   r'   check_methodse   s              rL   zn,d,D,s,params,which      ?r   r   rB   gɿg      Y@      rA      r!   c              
   C   s  |dkr6| |d  }}}dd t d|d D }g }	n,d||   }}}g }dd t d|d D }	|d | }
||d }|d }d|d|f\}}}}|||f||||ff}d d d d}| }|d	d	g ||	g g d
 | }|g |
|g g |d tj|||f||||fd}t|f|| t|f|| t|f|| tj|||||||d}t|f|| t|f|| t|f|| d S )Nr   r   c                 S   s   g | ]}d | qS zar.L%dr&   .0ir&   r&   r'   
<listcomp>   s     z/test_specification_ar_or_ma.<locals>.<listcomp>r   c                 S   s   g | ]}d | qS zma.L%dr&   rR   r&   r&   r'   rU      s     r	   r   r   r   Tr-   r.   r4   r5   r6   r7   r8   r;   r<   r=   r>   r?   r)   )r
   r   )r   r   r   r   r   r   r   )rangecopyupdater   SARIMAXSpecificationr(   r:   rL   )nr    r#   r%   rJ   whichr   r!   r5   r6   r<   r=   r)   r"   r$   argskwargsproperties_kwargsmethods_kwargsr   r&   r&   r'   test_specification_ar_or_ma   sl    		 
     rd   zUendog,exog,p,d,q,P,D,Q,s,enforce_stationarity,enforce_invertibility,concentrate_scale)NNr   r   r   r   r   r   r   TTF)NNr   r   r   r   r   r   r   TTF)NNr   r   r   r   r   r   r   TTF)NNr   r   r   r   r   r   rP   TTF)NNr   r   r   r   r   r   rP   TTF)NNr   r   r   r   r   r   rP   TTF)NNr   r   r   r   r   r   rP   TTF)NNrN   r      rP   r   re      TTFre   TF)NNrN   r   re   rP   r   re   rf   FFT)NNrN   r   re   rP   r   re   rf   TFT)NNrN   r   re   rP   r   re   rf   FTT)TNrN   r   re   rP   r   re   rf   FTT)NrN   rN   r   re   rP   r   re   rf   FTT)TrN   rN   r   re   rP   r   re   rf   FTT)yNrN   r   re   rP   r   re   rf   FTTx1rf   rg   x2)rg   rN   rN   r   re   rP   r   re   rf   FTTc                    s
  t |trt|}|d }n| }}t |tr@t|}|d }n| }}t |trdt|}|d }n| }}t |trt|}|d }n| }}||   td| d d|   d ||   d }| dkrt|d } n8t | trtjt|d | d} n| d k	rt	dt |t
rTdd	 t|D }t|t| |t|}nVt |tr|}t|t| |t|}tj||d
}n|d krg }nt	d|||f||| ff}|	|
|d}| }t |t o|dk}t |t o|dk}||||dd	 t |tr |ntd|d D dd	 t |trF|ntd|d D  fdd	t |trp|ntd|d D  fdd	t |tr|ntd|d D d | }|tt||dkrg ntt|d |dkrg ntt|d d |dkrg ntt|d |dkr6g ntt|d d |rTg ndd tj| ||||f||| f|	|
|d}t|f|| t|f|| t|f|| tj| ||||||| |	|
|d}t|f|| t|f|| t|f|| d S )Nr	   re   r   TrM   namezInvalid `endog` in test setup.c                 S   s   g | ]}d |d  qS )zx%dr   r&   rR   r&   r&   r'   rU   x  s     z&test_specification.<locals>.<listcomp>columnszInvalid `exog` in test setup.rW   r   c                 S   s   g | ]}d | qS rQ   r&   rR   r&   r&   r'   rU     s   c                 S   s   g | ]}d | qS rV   r&   rR   r&   r&   r'   rU     s   c                    s   g | ]}d |   qS )zar.S.L%dr&   rR   r%   r&   r'   rU     s   c                    s   g | ]}d |   qS )zma.S.L%dr&   rR   rn   r&   r'   rU     s   rX   
   d   rP   g46<@rY   )exogr
   r   r   r   r   )rq   r   r   r   r   r   r   r   r   r   r   )r   r   r*   maxr   r   strpdSeriesrD   r+   rZ   Zreshape	DataFramer[   r\   	constrainr   r]   r(   r:   rL   )endogrq   r   r    r!   r"   r#   r$   r%   r   r   r   r0   r   r1   r   r2   r   r3   r   Znobsr4   r`   ra   rb   r-   r.   rc   r   r&   rn   r'   test_specification(  s    *








 


  
      ry   c               	   C   sn   t  } t| jd t| jd t jtjdgddtjddggddgdd	d
dddd} d}tt| | d S )Nr   r   r   r   r   r   r   r   rg   rj   rh   ri   rl   )r   r   rN   )rN   r   r   rf   FT)rx   rq   r
   r   r   r   r   zSARIMAXSpecification(endog=y, exog=['x1', 'x2'], order=(1, 1, 2), seasonal_order=(2, 1, 0, 12), enforce_stationarity=False, enforce_invertibility=False, concentrate_scale=True))	r   r]   r   r
   r   rt   ru   rv   repr)r   rK   r&   r&   r'   	test_misc  s      r}   c                  C   sL  t ttjddd t ttjddd t ttjdd t ttjdd t ttjdd t ttjd	d t ttjd
d t ttjdd t ttjdd t ttjdd t ttjdd t ttjdd t ttjdd t ttjdd t ttjdd t ttjdd t ttjdtdd tjdd} t t| j t t| jddgd d S )Nr   r   r   r   )r
   r   )r   r   )r	   r   r   )r
   )      ?r   r   )r   r	   r   )r   r   r   )r   )r   r   r   rP   )r   )r	   r   r   rP   )r   r   r   rP   )r   r	   r   rP   )r   r   r   r   )r   r   r   r	   )r   r   r   r   )r   )ro   rN   )r
   rx   )r   g?g333333?)r<   )r   rD   r   r]   r   zerosrC   r   r&   r&   r'   test_invalid  sr       r   zWorder,seasonal_order,enforce_stationarity,enforce_invertibility,concentrate_scale,validrz   r{   yule_walkerburginnovationshannan_rissaneninnovations_mle
statespacer~   )r   r   r   )r   r   r   )r   r   r   rP   c           
      C   s   t j| ||||d}tddddddg}t|}t|j| |D ]}	t||	d  q@||D ]}	t|	| tt	|j|	 q`t jt
jg| ||||d}t|jtdg t|dd  |dgD ]}	tt	|j|	 qd S )	N)r
   r   r   r   r   r   r   r   r   r   r   )rx   r
   r   r   r   r   )r   r]   setr   Zvalid_estimatorsvalidate_estimator
differenceprintr   rD   r   rG   )
r
   r   r   r   r   Zvalidr   Z
estimatorsrK   Z	estimatorr&   r&   r'   test_valid_estimators  s>    #   
 r   c                  C   s   t  } tt| jd d S )NZnot_an_estimator)r   r]   r   rD   r   r   r&   r&   r'   test_invalid_estimatorH  s    r   )Znumpyr   Zpandasrt   ZpytestZnumpy.testingr   r   r   Z statsmodels.tsa.statespace.toolsr   rw   r   rH   Zstatsmodels.tsa.arimar   r(   r:   rL   markZparametrizerI   rd   ry   r}   r   r   r   r&   r&   r&   r'   <module>   s   -*q  
:(!
 *
 
 









 
!