U
    Ãmœd¢"  ã                   @   sŽ   d Z ddlZddlZddlmZ ddlmZm	Z	 ddl
mZmZ ddlmZ ddlZdd	d
„Zddd„Zddd„Zdd„ Zdd„ Zdd„ ZdS )zQ
Tests for Chandrasekhar recursions

Author: Chad Fulton
License: Simplified-BSD
é    Né   )Úresults_varmax)ÚsarimaxÚvarmax)ÚMEMORY_CONSERVEÚMEMORY_NO_LIKELIHOOD)Úassert_allcloseFc                 C   sÐ  |j }t| j|jƒ t| j |¡|j |¡dd� | jjjD ](}|dkrJq<tt| j|ƒt|j|ƒƒ q<ddddg}|s€|dg7 }|D ]*}t| j|ƒ}t|j|ƒ}t||d	d� q„d
dg}|sÎ|dddddg7 }|D ]*}t| j|ƒ}t|j|ƒ}t||d	d� qÒ|�sTdddddddddddddg}	|	D ],}t| j|ƒ}t|j|ƒ}t||d	d� �q&| jj	}
|�sŒ| j
d|
d d d!�}| j
d|
d d d!�}n$| j
d|
d d"�}| j
d|
d d"�}t|j|jƒ t|j|jƒ d S )#Ng»½×Ùß|Û=)ZatolZobsZpredicted_stateZfiltered_stateZ	forecastsZforecasts_errorZkalman_gaingê-�™—q=Zpredicted_state_covZfiltered_state_covZstandardized_forecasts_errorZtmp1Ztmp2Ztmp3Ztmp4Zsmoothed_stateZsmoothed_state_covZsmoothed_state_autocovZsmoothed_state_disturbanceZsmoothed_state_disturbance_covZ smoothed_measurement_disturbanceZ$smoothed_measurement_disturbance_covZscaled_smoothed_estimatorZscaled_smoothed_estimator_covZsmoothing_errorZsmoothed_forecastsZsmoothed_forecasts_errorZsmoothed_forecasts_error_cové
   é2   é(   )ÚstartÚendZdynamic)r   r   )Úparamsr   ZllfÚmodelZ	score_obsÚssmZshapesÚgetattrZfilter_resultsÚnobsZget_predictionZpredicted_meanZse_mean)Ú	res_chandÚres_origÚmemory_conserver   ÚnameZfilter_attrÚactualZdesiredZfilter_attr_burnZsmoothed_attrr   Z
pred_chandZ	pred_orig© r   úl/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/statsmodels/tsa/statespace/tests/test_chandrasekhar.pyÚcheck_output   sx    
 ÿ
ÿÿ

ÿ  ÷ÿÿr   c           
      K   s    t jdddd�}t jtjdddg|d�}t |d ¡ ¡ jd	d
… }t	j
|f|Ž}t	j
|f|Ž}d|j_|j}| |j_| |j_| |¡}| |¡}	t||	ƒ d S )Nú
1960-01-01ú
1982-10-01ÚQS©ÚfreqÚinvÚincÚconsump©ÚcolumnsÚindexú
1960-04-01ú
1978-10-01T)ÚpdÚ
date_rangeÚ	DataFramer   Úlutkepohl_dataÚnpÚlogÚdiffÚlocr   ÚSARIMAXr   Úfilter_chandrasekharÚstart_paramsÚfilter_univariateÚsmoothr   )
r3   Úkwargsr%   ÚdtaÚendogÚmod_origÚ	mod_chandr   r   r   r   r   r   Úcheck_univariate_chandrasekharZ   s     ÿ

r:   c                 K   sX  t jdddd�}t jtjdddg|d�}t |d ¡ ¡ |d	< t |d ¡ ¡ |d
< t |d ¡ ¡ |d< |jdd…d	d
gf }t	j
|f|Ž}t	j
|f|Ž}d|j_|j}	| |j_| |j_|ròt ddgddgg¡|d< t ddgddgg¡|d< |�r2|j tt @ ¡ |j tt @ ¡ | |	¡}
| |	¡}n| |	¡}
| |	¡}t|
||d� d S )Nr   r   r   r   r    r!   r"   r#   Zdln_invZdln_incZdln_consumpr&   r'   Tç      ð?ç      à?Úobs_cov)r   )r(   r)   r*   r   r+   r,   r-   r.   r/   r   ZVARMAXr   r1   r2   r3   ÚarrayZset_conserve_memoryr   r   Úfilterr4   r   )r3   Úgen_obs_covr   r5   r%   r6   r7   r8   r9   r   r   r   r   r   r   Ú check_multivariate_chandrasekharr   sD     ÿ
ÿ

ÿ
ÿÿ


rA   c                   C   sV   t dd� t ddd� tdd� tddd� tddd� tddd� tdddd	� d S )
NF©r3   T©r3   Zconcentrate_scale©r3   Zmeasurement_errorÚdiagonal©r3   Zerror_cov_type©r3   r@   ©r3   r@   r   ©r:   rA   r   r   r   r   Útest_chandrasekhar_conventional�   s$    
ÿ
ÿÿÿ ÿrJ   c                   C   sV   t dd� t ddd� tdd� tddd� tddd� tddd� tdddd� d S )	NTrB   rC   rD   rE   rF   rG   rH   rI   r   r   r   r   Útest_chandrasekhar_univariate­   s$    
ÿ
ÿÿÿ ÿrK   c               	   C   sð   t  d¡} t j| d< t | ¡}d|j_tjt	dd�� | 
ddg¡ W 5 Q R X t  d¡} t | ¡}d|j_d|j_tjt	dd�� | 
ddg¡ W 5 Q R X t  d¡} t | ¡}d|j_t  d	¡|d
< tjt	dd�� | 
ddg¡ W 5 Q R X d S )Nr	   r   Tz6Cannot use Chandrasekhar recursions with missing data.)Úmatchr<   r;   z9Cannot use Chandrasekhar recursions with filtered timing.)r   r   r	   r=   zeCannot use Chandrasekhar recursions with time-varying system matrices \(except for intercept terms\).)r,   ZzerosÚnanr   r0   r   r1   ÚpytestZraisesÚRuntimeErrorr?   Ztiming_init_filteredZones)r7   Úmodr   r   r   Útest_invalid½   s$    






rQ   )F)F)FFF)Ú__doc__Únumpyr,   Zpandasr(   Úresultsr   Zstatsmodels.tsa.statespacer   r   Z(statsmodels.tsa.statespace.kalman_filterr   r   Znumpy.testingr   rN   r   r:   rA   rJ   rK   rQ   r   r   r   r   Ú<module>   s    
G
    ÿ
+