U
    Kvf"                     @   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d | jjjD ](}|dkrLq>tt| j|t|j| q>ddddg}|s|d	g7 }|D ]*}t| j|}t|j|}t||d
d qddg}|s|dddddg7 }|D ]*}t| j|}t|j|}t||d
d q|sVd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-C6
?gh㈵>)ZrtolatolZobsZpredicted_stateZfiltered_stateZ	forecastsZforecasts_errorZkalman_gaing-q=)r	   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   W/tmp/pip-unpacked-wheel-2v6byqio/statsmodels/tsa/statespace/tests/test_chandrasekhar.pycheck_output   s|    




  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   )
r4   kwargsr&   dtaendogmod_orig	mod_chandr   r   r   r   r   r   check_univariate_chandrasekhar^   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_|rt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/   r0   r   ZVARMAXr   r2   r3   r4   arrayZset_conserve_memoryr   r   filterr5   r   )r4   gen_obs_covr   r6   r&   r7   r8   r9   r:   r   r   r   r   r   r    check_multivariate_chandrasekharv   sD     






rB   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r4   Tr4   Zconcentrate_scaler4   Zmeasurement_errordiagonalr4   Zerror_cov_typer4   rA   r4   rA   r   r;   rB   r   r   r   r   test_chandrasekhar_conventional   s$    

 rK   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 )	NTrC   rD   rE   rF   rG   rH   rI   rJ   r   r   r   r   test_chandrasekhar_univariate   s$    

 rL   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-   zerosnanr   r1   r   r2   pytestZraisesRuntimeErrorr@   Ztiming_init_filteredZones)r8   modr   r   r   test_invalid   s$    






rS   )F)F)FFF)__doc__Znumpyr-   Zpandasr)   resultsr   Zstatsmodels.tsa.statespacer   r   Z(statsmodels.tsa.statespace.kalman_filterr   r   Znumpy.testingr   rP   r   r;   rB   rK   rL   rS   r   r   r   r   <module>   s    
K
    
+