U
    Ãmœd‡¹  ã                   @   sü  d Z ddlZddlZddlZddlZddlZddlZddl	m
Z
mZmZmZ ddlmZmZ ddlmZ ddlmZmZmZmZmZ ddlmZmZ ej ej e¡¡Z ddggdggdggdggd	d
œZ!dTdd„Z"dd„ Z#dd„ Z$dd„ Z%dd„ Z&ej'j(dd„ ƒZ)dd„ Z*dd„ Z+dd„ Z,dd „ Z-d!d"„ Z.d#d$„ Z/d%d&„ Z0dUd'd(„Z1d)d*„ Z2d+d,„ Z3d-d.„ Z4dVd0d1„Z5d2d3„ Z6d4d5„ Z7d6d7„ Z8d8d9„ Z9d:d;„ Z:d<d=„ Z;d>d?„ Z<ej'j(d@dA„ ƒZ=dBdC„ Z>dDdE„ Z?dFdG„ Z@dHdI„ ZAdJdK„ ZBdLdM„ ZCdNdO„ ZDdPdQ„ ZEdRdS„ ZFdS )WzM
Tests for the generic MLEModel

Author: Chad Fulton
License: Simplified-BSD
é    N)ÚsarimaxÚvarmaxÚkalman_filterÚkalman_smoother)ÚMLEModelÚMLEResultsWrapper)Únile)Úassert_Úassert_almost_equalÚassert_equalÚassert_allcloseÚassert_raises)Úresults_sarimaxÚresults_var_miscé   Úapproximate_diffuse)Úk_statesÚdesignÚ
transitionÚ	selectionÚ	state_covÚinitializationTFc              	   C   s˜   t  d¡d }d| }|rFtjdddd�}tj||d�}tj||d�}tj||dd	d
d	d�}| rŒt ¡ � t 	d¡ |j
dd�}W 5 Q R X nd }||fS )Néd   ç      ð?é   ú
1960-01-01ÚMS©ÚperiodsÚfreq©Úindex)r   r   r   TF)ÚexogÚorderZtime_varying_regressionZmle_regressionZuse_exact_diffuseÚignoreéÿÿÿÿ)Údisp)ÚnpÚarangeÚpdÚ
date_rangeÚSeriesr   ÚSARIMAXÚwarningsÚcatch_warningsÚsimplefilterÚfit)r0   ÚpandasÚendogr"   r!   ÚmodÚres© r5   úg/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/statsmodels/tsa/statespace/tests/test_mlemodel.pyÚget_dummy_mod"   s(       ý

r7   c                  C   sJ  d} d}d}t  d¡}t  | ¡d }t  t  | | ¡d | |f¡}t  t  | d ¡d | | f¡}t  |¡d }t  t  |d ¡d ||f¡}t  t  || ¡d ||f¡}	t  t  |d ¡d ||f¡}
t|||||||||	|
d�
}t|d |ƒ t|d |ƒ t|d	 |ƒ t|d
 |ƒ t|d |ƒ t|d |	ƒ t|d |
ƒ d S )Nr   é   r   ©é
   r   r   ©	r   Úk_posdefÚobs_interceptr   Úobs_covÚstate_interceptr   r   r   r=   r   r>   r?   r   r   r   )r'   Úzerosr(   Úreshaper   r   )Úk_endogr   r<   r2   r=   r   r>   r?   r   r   r   r3   r5   r5   r6   Ú!test_init_matrices_time_invariant<   sB    
 ÿ ÿ   ürC   c                  C   sŒ  d} d}d}d}t  d¡}t  t  ||  ¡d || f¡}t  t  || |  ¡d ||| f¡}t  t  |d |  ¡d ||| f¡}t  t  ||  ¡d || f¡}t  t  |d |  ¡d ||| f¡}	t  t  || |  ¡d ||| f¡}
t  t  |d |  ¡d ||| f¡}t||||||||	|
|d�
}t|d |ƒ t|d	 |ƒ t|d
 |ƒ t|d |ƒ t|d |	ƒ t|d |
ƒ t|d |ƒ d S )Nr:   r   r8   r   r9   r   r;   r=   r   r>   r?   r   r   r   )r'   r@   rA   r(   r   r   )ÚnobsrB   r   r<   r2   r=   r   r>   r?   r   r   r   r3   r5   r5   r6   Útest_init_matrices_time_varying]   s`    
ÿ ÿ ÿ ÿ ÿþ ÿ   ürE   c                  C   sÜ  t dd�\} }t| d dt d¡ ƒ d| dddd d …f< t| jdddd d …f dƒ t| jd jd	ƒ d
gg| d< t| jd d
ƒ t| jd jdƒ t| jdƒ d| _t| jjdƒ t| j| jjƒ d| _t| jjdƒ t| jdƒ d| _t| jjdƒ tt	| j
tƒdƒ |  ¡  |  d¡ t| j
jdƒ t| j
jdƒ |  dgdgg¡ t| j
jdƒ t| j
jdgƒ t| j
jdggƒ |  ¡  t| j
jdƒ t| jjtjƒ t| jjtjƒ t| jjtjƒ t| jjtjƒ | j ¡  | jj}t|jtjƒ t|jtjƒ t|jtjƒ |   d¡ |  !d¡ |  "d¡ |  #d¡ t| jjdƒ t| jjdƒ t| jjdƒ t| jjdƒ t|jtjƒ t|jtjƒ t|jtjƒ |   d¡ | j ¡  | jj}t|jdƒ t|jdƒ t|jdƒ d S )NF©r0   ©r   r   r   ç       @r   r   r   r   )r   r   r   ç      @©r   r   r   g°rh‘í|¿?g    _ Bg   ¢”mBTg     jø@r   g      @é(   ZknownZ
stationaryée   éf   ég   )$r7   r   r'   r(   ÚssmÚshapeÚloglikelihood_burnZ	toleranceÚinitial_varianceÚ
isinstancer   ÚobjectZinitialize_defaultZinitialize_approximate_diffuseZinitialization_typeZapproximate_diffuse_varianceZinitialize_knownZconstantZstationary_covZinitialize_stationaryZfilter_methodr   ZFILTER_CONVENTIONALZstability_methodZSTABILITY_FORCE_SYMMETRYZconserve_memoryZMEMORY_STORE_ALLZsmoother_outputr   ZSMOOTHER_ALLZ_initialize_filterZ_kalman_filterZset_filter_methodZset_stability_methodZset_conserve_memoryZset_smoother_output)r3   Ú_Zkfr5   r5   r6   Útest_wrapping…   sr    
þ






rV   c               	   C   sÎ   t j} t | d ¡dd … }tj|ddd�}t ¡ �4 t d¡ |j	ddd	d
d�}|j	dddd
d�}W 5 Q R X t
|j|jdd� td
d�\}}t ¡ � t d¡ |j	ddd�}W 5 Q R X t|ddgdƒ d S )NÚdatar   ©r   r   r   Úc)r#   Útrendr$   Zncgr   ÚopgF)Úmethodr&   Zoptim_hessianZoptim_complex_stepÚoimç{®Gáz„?)ZrtolrF   r%   T)r&   Zreturn_paramsé   )r   Zwpi1_stationaryr'   Údiffr   r,   r-   r.   r/   r0   r   Úllfr7   r
   )Útruer2   r3   Úres1Úres2rU   Z
res_paramsr5   r5   r6   Útest_fit_miscð   s"    


ÿ
ÿ

re   c                  C   s   t ƒ \} }|  |j¡ d S ©N)r7   ÚscoreÚparams©r3   r4   r5   r5   r6   Útest_score_misc
  s    
rj   c                   C   s   t tdd„ ƒ d S )Nc                   S   s   t  ddd¡S )Nr   r   r8   )r   Zfrom_formular5   r5   r5   r6   Ú<lambda>  ó    z#test_from_formula.<locals>.<lambda>)r   ÚNotImplementedErrorr5   r5   r5   r6   Útest_from_formula  s    rn   c               	   C   s¤  t jddgdd�} dd„ }dd„ }tjd	 }tj||d
 |d ƒ||d
 |d ƒf }| j|ddd�}t||ƒ | j|ddd�}t||dd� | j|dddd�}t||dd� | j|dddd�}t||ƒ | j|dddd�}	t|	|dd� | j|ddddd�}
t|
|dd� dd„ }dd„ }|  |¡}t t tj||d
 ƒ||d ƒf ¡tj||d
 |d ƒ||d
 |d ƒf ¡}| j|ddd�}t||ƒ | j|ddd�}t||dd� | j|dddd�}t||dd� | j|dddd�}t||ƒ | j|dddd�}	t|	|dd� | j|ddddd�}
t|
|dd� tjd }dd„ }||d
 |d ƒ}t	 
¡ �@ t	 d¡ t|  |¡d |dd� t|  |¡d |dd� W 5 Q R X d S )Nr   ç      à?©r   r   r   ©r#   c                 S   s,   d| d d|  |  d  |d| d    S )Nç      à¿r   r   r5   ©ÚphiÚsigma2r5   r5   r6   Úpartial_phi  s    z,test_score_analytic_ar1.<locals>.partial_phic                 S   s   dd| |  d  |d  S )Nrr   r   ç      ô?r5   rs   r5   r5   r6   Úpartial_sigma2  s    z/test_score_analytic_ar1.<locals>.partial_sigma2)ç        r   r   T)ÚtransformedÚapprox_complex_stepFçñhãˆµøä>©Zatol)rz   r{   Úapprox_centeredZharvey)rz   r\   r{   )rz   r\   r{   r~   c                 S   s   dd| d  d  S )Ng      ð¿r   r   g      ø?r5   )rt   r5   r5   r6   Úpartial_transform_phiH  s    z6test_score_analytic_ar1.<locals>.partial_transform_phic                 S   s   d|  S )NrH   r5   )ru   r5   r5   r6   Úpartial_transform_sigma2K  s    z9test_score_analytic_ar1.<locals>.partial_transform_sigma2)ro   r   c                 S   sd   t  d¡}| d  d | d d d  |d< dd|d    |d< |d< ||  d |d	  |d
< |S )N)r   r   r   r   ©r   r   r%   ©r   r   )r   r   rw   r8   rJ   )r'   r@   )rt   ru   Úhessianr5   r5   r6   rƒ   q  s
    
"z(test_score_analytic_ar1.<locals>.hessianr$   r   çš™™™™™¹?)r   r,   r'   Úr_rg   r   Úuntransform_paramsÚdotZdiagr-   r.   r/   Z_hessian_complex_stepZ_hessian_finite_difference)r3   rv   rx   rh   Zanalytic_scoreZ	approx_csZ	approx_fdZapprox_fd_centeredZ	harvey_csZ	harvey_fdZharvey_fd_centeredr   r€   Zuparamsrƒ   Zanalytic_hessianr5   r5   r6   Útest_score_analytic_ar1  sž    
ÿÿ

ÿÿ
ÿ

ÿ
þ


ÿÿý
ÿ
ÿÿ
ÿ

ÿ
þ


 ÿ ÿrˆ   c               
   C   sŒ  t ƒ \} }t ¡ ��n t d¡ | j|jddd�}t|jd dƒ | j|jddd�}t|jdƒ t|jd dƒ | j|jdd	d�}t|jd	ƒ t|jd d
ƒ | j|jddd�}t|jdƒ t|jd dƒ | j|jddd�}t|jdƒ t|jd dƒ | j|jddd�}t|jdƒ t|jd dƒ | j|jddd�}t|jdƒ t|jd dƒ t	 
t¡� | j|jddd� W 5 Q R X W 5 Q R X d S )Nr$   r%   Únone)r&   Úcov_typeÚdescriptionz!Covariance matrix not calculated.ÚapproxzLCovariance matrix calculated using numerical (complex-step) differentiation.r]   zmCovariance matrix calculated using the observed information matrix (complex-step) described in Harvey (1989).r[   zQCovariance matrix calculated using the outer product of gradients (complex-step).ZrobustzµQuasi-maximum likelihood covariance matrix used for robustness to some misspecifications; calculated using the observed information matrix (complex-step) described in Harvey (1989).Z
robust_oimZrobust_approxz”Quasi-maximum likelihood covariance matrix used for robustness to some misspecifications; calculated using numerical (complex-step) differentiation.Zinvalid_cov_type)r7   r-   r.   r/   r0   rh   r   Úcov_kwdsrŠ   ÚpytestÚraisesrm   ri   r5   r5   r6   Útest_cov_params‚  s\    

þþþþþþþr�   c                  C   sþ   t ddgftŽ} t|  ddg¡ddgƒ t|  ddg¡ddgƒ | jg dd� | jg dd� | jg dd� | jg dd� t	dd�\} }t|  ddg¡ddgƒ t|  ddg¡ddgƒ | jddgd	d�}t|j
ddgƒ | jddgdd�}t|j
ddgƒ d S )
Nr   r   r8   F)rz   rF   é   é	   T)r   Úkwargsr   Ztransform_paramsr†   ÚfilterÚupdateÚloglikeZ
loglikeobsr7   rh   )r3   rU   r4   r5   r5   r6   Útest_transform¾  s    r—   c                  C   sŽ   t  ddg¡} t| ftŽ}|jg dd�}tt|tjƒdƒ | g ¡}tt|t	ƒdƒ t|j
dƒ |jg dd�}tt|t	ƒdƒ t|j
dƒ d S )Nr   rH   T)Z
return_ssmr[   r]   )rŠ   )r'   Úarrayr   r“   r”   r   rS   r   ZFilterResultsr   rŠ   )r2   r3   r4   r5   r5   r6   Útest_filterÝ  s    
r™   c                      s^   t ddgftŽ‰ tt‡ fdd„ƒ tˆ jg ƒ dgˆ _dgˆ _tˆ jdgƒ tˆ jdgƒ d S )Nr   r   c                      s   ˆ j S rf   )Ústart_paramsr5   ©r3   r5   r6   rk   ô  rl   ztest_params.<locals>.<lambda>Úa)	r   r“   r   rm   r   Zparam_namesZ_start_paramsZ_param_namesrš   r5   r5   r›   r6   Útest_paramsð  s    r�   c                 C   s`   t | d�\}}t|jdd … |jdd …  ¡ ƒ t|jdd … t |jd ¡ƒ t	|j
dƒ d S )N©r1   r   r   )r7   r
   Zfittedvaluesr2   ZsqueezeZresidr'   r@   rD   r   rQ   )r1   r3   r4   r5   r5   r6   Úcheck_results   s    " rŸ   c                 C   s   t dd� t dd� d S )NFrž   T)rŸ   rž   r5   r5   r6   Útest_results  s    
r    c                  C   s¤   t jdddd�} t jddg| d�}t|ftŽ}| g ¡}| ¡ }t|j|j	fƒ t
| ¡ j|ƒ t
|jdd�| ¡ ƒ tddgftŽ}| g ¡}tt|jd	d� d S )
Nú
1980-01-01ú
1981-01-01ÚAS©ÚstartÚendr   r   r   r    )ÚdynamicÚstring)r)   r*   r+   r   r“   r”   Úpredictr   rP   rD   r   Úget_predictionÚpredicted_meanr   ÚKeyError)Údatesr2   r3   r4   r©   r5   r5   r6   Útest_predict  s    

r®   c                  C   sÜ   t ddgftŽ} |  g ¡}|jdd�}t|t d¡d ƒ t|jdd�j|ƒ t	j
dddd�}t t	jddg|d	�ftŽ} |  g ¡}t|jdd�t d¡d ƒ t|jd
d�t d¡d ƒ t|jdd�jt d¡d ƒ d S )Nr   r   r:   )Zsteps)r:   r   r   r   r    z
1960-12-01)r   r“   r”   Úforecastr   r'   ZonesZget_forecastr«   r)   r*   r+   )r3   r4   r¯   r!   r5   r5   r6   Útest_forecast*  s    

ÿr°   c               	   C   sè   t jdddd�} t jddddd	g| d
�}t|ftŽ}| g ¡}t| ¡ ƒ}tt	 
d|¡d k	dƒ tt	 
d|¡d k	dƒ tt	 
d|¡d k	dƒ t ¡ �J t d¡ tj|jjd d …< | ¡  d|j_| ¡  d|j_| ¡  W 5 Q R X d S )Nr¡   z
1984-01-01r£   r¤   r   r   r8   r‘   r_   r    zSample:\s+01-01-1980Tz\s+- 01-01-1984zModel:\s+MLEModelr$   rœ   )r)   r*   r+   r   r“   r”   ÚstrÚsummaryr   ÚreÚsearchr-   r.   r/   r'   ÚnanÚfilter_resultsÚ_standardized_forecasts_error)r­   r2   r3   r4   Útxtr5   r5   r6   Útest_summary<  s     


r¹   r   c                 K   s�   t | f|Ž}t|jjdƒ t|jjd dƒ t|jj||fƒ t|jjjdƒ t|jjjd dƒ t|jjj||fƒ t|jjj|jkdƒ |S )Nr   ÚC_CONTIGUOUSTÚF_CONTIGUOUS)r   r   r2   ÚndimÚflagsrP   rO   Úbase)r2   rD   rB   r“   r3   r5   r5   r6   Úcheck_endogW  s    r¿   c                  C   s(  t ttddd� t ttddd� t ttddd� tdgftŽ} |  g ¡}t|jjdggƒ tdgftŽ} |  g ¡}t|jjdggƒ tdgftŽ} |  g ¡}t|jjdggƒ tdgftŽ} t t| jg ƒ ddg}t|ftŽ} |  g ¡ dgdgg}t|ftŽ} |  g ¡ d}t|ftŽ} |  g ¡ d S )Nr   )r2   r   rœ   Tr   rH   )r   rH   )	r   Ú
ValueErrorr   r“   r”   r   r¶   r2   r¿   )r3   r4   r2   r5   r5   r6   Útest_basic_endogk  s.    




rÁ   c                  C   sÜ  t  ddg¡} t| ftŽ}t|jj|jjk	dƒ t|jj| k	dƒ t|jjj| k	dƒ d| d< t|jt j	d  
dd¡ƒ t|jj| ƒ t  d¡} ttt| ftŽ t  ddg¡} t| jdƒ t| jd dƒ t| jd	 dƒ t| jd
ƒ t| ftŽ}| g ¡ t  ddg¡ 
dd¡} t| jdƒ t| jd dƒ t| jdƒ t| ftŽ}| g ¡ t  ddg¡ 
dd¡} t| jdƒ t| jd dƒ t| jdƒ ttt| ftŽ t  ddg¡ 
dd¡ ¡ } t| jdƒ t| jd	 dƒ t| jdƒ t| ftŽ}| g ¡ t  ddg¡ 
dd¡ ¡ } t| jdƒ t| jd	 dƒ t| jdƒ ttt| ftŽ t  ddg¡ 
ddd¡} ttt| ftŽ ddgdggddgddggdggdggdggddœ}t  ddgddgg¡} t| fddi|—Ž}| g ¡ d S )Nr   rH   Tr   r   ©r   r   r   rº   r»   )r   )r   r   ry   r   ©r   r   r>   r   r   r   r   rI   ç      @rB   )r'   r˜   r   r“   r   r2   r¾   rW   Ú
orig_endogr…   rA   r   Ú	TypeErrorr¿   r¼   r½   rP   r”   rÀ   Z	transpose)r2   r3   Úkwargs2r5   r5   r6   Útest_numpy_endog“  sh    



 
   ýrÈ   c                  C   sö  t  ddg¡} t d¡ t jdddd�}t jddg|d�} t| ftŽ}| g ¡ t jd	d
g|d�} tt	t| ftŽ t jddg|d�} t| ftŽ}| g ¡ t j
d	ddgi|d�} t| ftŽ}| g ¡ t j
ddgddgdœ|d�} tt	t| ftŽ t j
d	ddgi|d�} t| ftŽ}t|jj|jjk	dƒ t|jj| k	dƒ t|jjjj| k	dƒ d| jd< t|jtjd  dd¡ƒ t|jj| ƒ ddgdggddgddggdggdggdggddœ}t j
ddgddgdœ|d�} t| fddi|—Ž}| g ¡ d S )Nr   rH   Úalwaysr¡   r¢   r£   r¤   r    rœ   ÚbrI   rÄ   )rœ   rÊ   Tr   r�   rÂ   r   ry   r   r   rÃ   rB   )r)   r+   r-   r/   r*   r¿   r“   r”   r   rÀ   Ú	DataFramer   r2   r¾   rW   rÅ   ÚvaluesÚilocr'   r…   rA   r   )r2   r­   r3   rÇ   r5   r5   r6   Útest_pandas_endogð  sF    




 
   ýrÎ   c               	   C   s$  t ƒ \} }|jjj}tjj|d�|j_|jd d�}|jdd�}t||ƒ t	t
|jdd� |jd d�}|jdd�}t||ƒ t t¡� |jd dd� W 5 Q R X t t
¡� |jdd� W 5 Q R X |jd d�}|jdd�}t||ƒ t t
¡� |jdd� W 5 Q R X |jd dd	d
� |jdd� d S )N)Úsize©r\   Ú
jarqueberaÚinvalidÚbreakvar)r\   ÚalternativeÚljungboxÚdF)r\   rÔ   Zuse_fZ	boxpierce)r7   r¶   r·   rP   r'   ÚrandomÚnormalÚtest_normalityr   r   rm   Útest_heteroskedasticityrŽ   r�   rÀ   Útest_serial_correlation)r3   r4   rP   ÚactualZdesiredr5   r5   r6   Útest_diagnostics-  s,    

ÿ


rÝ   c                  C   s~   ddl m}  tj ¡ j}tjdddd�|_| |d dd	|jjd
�}| 	¡ }|j
dddd�dd d …df }t|ddgdd� d S )Nr   )r,   ú
1871-01-01ú
1970-01-01r£   ©r   ÚvolumerX   Ún)r2   r#   rZ   r   rÕ   r:   T)r\   ÚlagsZ	df_adjustr%   g¬Zd;,@g±¿ìž<,´?çü©ñÒMbP?r}   )Z"statsmodels.tsa.statespace.sarimaxr,   r   rW   Úload_pandasr)   r*   r!   r   r0   rÛ   r   )r,   Úniledatar3   r4   rÜ   r5   r5   r6   Ú)test_small_sample_serial_correlation_testR  s(      þ  ÿÿÿrç   c                  C   sØ   t j ¡ j} tjdddd�| _t| d ddddd	�}d|jd
< t 	d¡|jd< d|jd< d|jd< t 	d¡|jd< | 
g ¡}|jddd�dd d …df }t|ddgdd� |jdd�dd d…f }t|ddgdd� d S ) NrÞ   rß   r£   rà   rá   r   r   ç  4&õkC©r   r   rR   rQ   rG   g¥N@a3#@©r>   r   r   ©r   r   r   ©r   r   r   g…Îkìe@©r   r   r   rÕ   r:   ©r\   rã   r   r%   g–C‹lç;*@g-²�ï§ÆË?rä   r}   rÑ   rÐ   r   gÐðfÞW¥?gª»²Wï?r|   )r   rW   rå   r)   r*   r!   r   rO   r'   Úexpr”   rÛ   r   rÙ   )ræ   r3   r4   rÜ   r5   r5   r6   Útest_diagnostics_nile_eviewsg  s&      ý



rð   c                  C   sð   t j ¡ j} tjdddd�| _t| d ddddd	�}d|jd
< d|jd< d|jd< d|jd< d|jd< | g ¡}|j	ddd�d }t
|dgdd� |jdd�d }|d |d |d g}t
|dddgdd� |jd d�d! }t
|d"gdd� d S )#NrÞ   rß   r£   rà   rá   r   r   rè   ré   rG   g    €}Í@rê   rë   rì   gfffffô–@rí   rÕ   r’   rî   )r   r   r%   g®Gáz®!@r^   r}   rÑ   rÐ   r   r   r8   gš™™™™™©?g¸…ëQ¸ž¿g¸…ëQ¸@rÓ   r�   g…ëQ¸…ã?)r   rW   rå   r)   r*   r!   r   rO   r”   rÛ   r   rÙ   rÚ   )ræ   r3   r4   rÜ   Znormr5   r5   r6   Ú#test_diagnostics_nile_durbinkoopman†  s,      ý





rñ   c                  C   s   t ƒ \} }| ¡ }| ¡  d S rf   )r7   rª   Zsummary_frame)r3   r4   r©   r5   r5   r6   Útest_prediction_resultsª  s    
rò   c                  C   s  t jtjdddgt jdddd�d�} t | d ¡ ¡ | d	< t | d ¡ ¡ | d
< t | d ¡ ¡ | d< | jdd…d	d
dgf }tj	}t
j|d	 dddd�}| |d ¡}t|j|d ƒ |jddd�d|j  }|jddd�dt |j¡ |j  }|jddd�dt t |j¡¡ |j  }t||d ƒ t||d ƒ t||d ƒ tj}|jd }|jt |j¡ }t||d ƒ t||d ƒ | d¡d }| d¡t |j¡ }t||d ƒ t||d ƒ tj}tj|ddddd �}| |d ¡}t|j|d ƒ |jddd�d!|j  }|jddd�d"t |j¡ |j  }|jddd�d!t t |j¡¡ |j  }t||d ƒ t||d ƒ t||d ƒ tj}|jd! }|jd"t |j¡  }t||d ƒ t||d ƒ | d¡d! }| d¡d"t |j¡  }t||d ƒ t||d ƒ d S )#NÚinvÚincZconsumpr   z
1982-10-01ZQSrà   )Úcolumnsr!   Zdln_invZdln_incZdln_consumpz
1960-04-01z
1978-10-01rp   rY   r   )r#   rZ   rQ   rh   r–   ÚaicZ	lutkepohlrÐ   r‘   Úbicr   ÚhqicZ	estat_aicZ	estat_bicr‚   râ   Zunstructured)r#   rZ   Zerror_cov_typerQ   é   é   )r)   rË   r   Zlutkepohl_datar*   r'   Úlogr`   ÚlocZlutkepohl_ar1_lustatsr   r,   r”   r   ra   Zinfo_criteriaZnobs_effectiveZlutkepohl_ar1rö   r÷   Zlutkepohl_var1_lustatsr   ZVARMAXZlutkepohl_var1)Zdtar2   rb   r3   r4   rö   r÷   rø   r5   r5   r6   Ú#test_lutkepohl_information_criteria´  s„     þ
ÿÿÿÿÿ

 ÿÿÿÿ
rý   c               	   C   sv  t j ¡ jd } tjdddd�| _| jd d… }| jdd… }tj|dd	d
�}| 	dg¡}t
t|j|ddid� t
t|j|ddid� t
t|j|ddid� t
t|j|di id� t
t|j|di id� t
t|j|di id� | jdd… }tj| jd t|ƒdd�|_d}tjt|d�� | |¡ W 5 Q R X tjt|d�� | |¡ W 5 Q R X d}tjt|d�� |j||d� W 5 Q R X d}tjt|d�� |j||d� W 5 Q R X | jdd… }d}tjt|d�� | |¡ W 5 Q R X tjt|d�� | |¡ W 5 Q R X d}tjt|d�� |j||d� W 5 Q R X d}tjt|d�� |j||d� W 5 Q R X t | jd d… j¡}t | jd d… j¡dd … }	tj|d|d	d�}
|
 	ddg¡}t | d d… j¡dd … }d}tjt|d�� | |¡ W 5 Q R X tjt|d�� | |¡ W 5 Q R X d}tjt|d�� |j|	|d� W 5 Q R X d}tjt|d�� |j|	|d� W 5 Q R X d S )Nrá   rÞ   rß   r£   rà   é   rK   rp   T)r#   Úconcentrate_scalero   rŠ   rŒ   )Z
fit_kwargsr�   r   r   ©r¥   r   r   zeGiven `endog` does not have an index that extends the index of the model. Expected index frequency is)ÚmatchzdGiven `exog` does not have an index that extends the index of the model. Expected index frequency is)r"   z.The indices for endog and exog are not alignedé   é)   zJGiven `endog` does not have an index that extends the index of the model.$zIGiven `exog` does not have an index that extends the index of the model.$©r#   r"   rÿ   gš™™™™™É?)r   rW   rå   r)   r*   r!   rÍ   r   r,   Úsmoothr   rÀ   ÚappendÚextendÚapplyÚlenrŽ   r�   r+   rÌ   )ræ   Zendog1Zendog2r3   rc   Z
wrong_freqÚmessageZnot_ctsZendog3Zendog4Zmod2rd   r5   r5   r6   Ú test_append_extend_apply_invalid  s‚    
ÿ
ÿ
ÿ  ÿ
ÿr  c                  C   sT   t jdddgddddgdd�} |  ddg¡}|jddddd	gd
�}t|jtjƒ d S )Nr   rp   r   Tr  r   r_   r8   r‘   )r¦   r§   r"   )r   r,   r”   r©   r   Zdtyper'   Zfloat64)r3   r4   Úpr5   r5   r6   Útest_integer_paramsc  s    ÿr  c                 C   s  t j ||g¡ ¡ }t j ||g¡ ¡ }t j ||g¡ ¡ }t| jj |¡ƒ t| jj |¡ƒ t| j	j |¡ƒ t| jj |¡ƒ t| j
j |¡ƒ t| j
j |¡ƒ t| jj |¡ƒ t| j
j |¡ƒ t| jj |¡ƒ t| jj |¡ƒ t| jj |¡ƒ t| jj |¡ƒ d S rf   )r)   Z
MultiIndexZfrom_productZ	swaplevelr	   Z	predictedr!   Úequalsrõ   Zpredicted_covÚfilteredZfiltered_covZsmoothedZsmoothed_cov)ÚstatesÚixÚpredicted_ixÚcolsZpredicted_cov_ixZfiltered_cov_ixZsmoothed_cov_ixr5   r5   r6   Úcheck_states_indexl  s"    ÿr  c                  C   s€   d} t jd| dd�}t jt | ¡|d�}tj|dd�}| dd	d
g¡}t j|d | d dd�}t  ddg¡}t	|j
|||ƒ d S ©Nr:   Ú2000ÚMr   r    ©r   r   r   rq   ro   r„   r   r   r   ústate.0ústate.1)r)   Zperiod_ranger+   r'   r@   r   r,   r  ÚIndexr  r  ©rD   r  r2   r3   r4   r  r  r5   r5   r6   Útest_states_index_periodindexˆ  s    r  c                  C   s€   d} t jd| dd�}t jt | ¡|d�}tj|dd�}| dd	d
g¡}t j|d | d dd�}t  ddg¡}t	|j
|||ƒ d S r  )r)   r*   r+   r'   r@   r   r,   r  r  r  r  r  r5   r5   r6   Útest_states_index_dateindex–  s    r  c                  C   sx   d} t  t d¡¡}t jt | ¡|d�}tj|dd�}| dddg¡}t  t d¡¡}t  d	d
g¡}t	|j
|||ƒ d S )Nr:   r    r  rq   ro   r„   r   é   r  r  )r)   r  r'   r(   r+   r@   r   r,   r  r  r  r  r5   r5   r6   Útest_states_index_int64index¤  s    r   c                  C   sØ   d} t  d¡}t jt | ¡|d�}tj|dd�}| dddg¡}t  d¡}t  d	d
g¡}t	|j
|||ƒ t  ddd¡}t jt | ¡|d�}tj|dd�}| dddg¡}t  ddd¡}t  d	d
g¡}t	|j
|||ƒ d S )Nr:   r    r  rq   ro   r„   r   r  r  r  r   é    r8   é#   )r)   Z
RangeIndexr+   r'   r@   r   r,   r  r  r  r  r  r5   r5   r6   Útest_states_index_rangeindex²  s    

r#  c               	   C   s<   dddg} t  | ¡ t t¡� t j| dd� W 5 Q R X d S )Nr   r   T)Zinvalid_kwarg)r   r,   rŽ   ZwarnsÚFutureWarning)r2   r5   r5   r6   Útest_invalid_kwargsÎ  s    

r%  )TF)F)r   r   )GÚ__doc__Úosr³   r-   Únumpyr'   r1   r)   rŽ   Zstatsmodels.tsa.statespacer   r   r   r   Z#statsmodels.tsa.statespace.mlemodelr   r   Zstatsmodels.datasetsr   Znumpy.testingr	   r
   r   r   r   Z(statsmodels.tsa.statespace.tests.resultsr   r   ÚpathÚdirnameÚabspathÚ__file__Úcurrent_pathr“   r7   rC   rE   rV   re   ÚmarkZsmokerj   rn   rˆ   r�   r—   r™   r�   rŸ   r    r®   r°   r¹   r¿   rÁ   rÈ   rÎ   rÝ   rç   rð   rñ   rò   rý   r  r  r  r  r  r   r#  r%  r5   r5   r5   r6   Ú<module>   sp      ý
!(k
l<

(]=%$
	]R	