U
    Kvf@.  ã                   @   sŒ   d Z ddlZddlZddlmZ ddlmZ ddl	m
Z
mZ ddlmZmZ dd	d
„Zdd„ Zdd„ Zdd„ Zddd„Zdd„ Zdd„ ZdS )z°
Tests for concentrating the scale out of the loglikelihood function

Note: the univariate cases is well tested in test_sarimax.py

Author: Chad Fulton
License: Simplified-BSD
é    N)ÚBunché   )Úresults_varmax)ÚsarimaxÚvarmax)Úassert_raisesÚassert_allcloseFc              
   K   s¶   |  dd¡ tj| f|Ž}d|j_||j_|j}d|d< | |¡}|j}tj| f|Ž}||j_| 	¡ }d| 
dd¡ }	|||	 d …  ||	 d …< | |¡}
tf ||||||
|dœŽS )	NÚ	tolerancer   Tr   éÿÿÿÿÚmeasurement_errorF)Úmod_concÚparams_concÚmod_origÚparams_origÚres_concÚres_origÚscale)Ú
setdefaultr   ÚSARIMAXÚssmÚfilter_concentratedÚfilter_univariateÚstart_paramsÚsmoothr   ÚcopyÚgetr   )Úendogr   Úkwargsr   r   r   r   r   r   Zk_varsr   © r   úV/tmp/pip-unpacked-wheel-2v6byqio/statsmodels/tsa/statespace/tests/test_concentrated.pyÚget_sarimax_models   s*    

  ýr    c                  C   sB  d} t j d¡ t jj| d}i }t|ƒ}t|jj|jjƒ t|jj	|jj	ƒ t|j
 |j¡|j |j¡ƒ t|j
 |j¡|j |j¡ƒ t j|dd…< t|ƒ}t|jj|jjƒ t|jj	|jj	ƒ t|j
 |j¡|j |j¡ƒ t|j
 |j¡|j |j¡ƒ d|d< t|f|Ž}t|jj|jjƒ t|jj	dd … |jj	dd … ƒ t|j
 |j¡|j |j¡ƒ t|j
 |j¡dd … |j |j¡dd … ƒ d|d	< d
|d< t  | ¡|d< t|f|Ž}t|jj|jjƒ t|jj	dd … |jj	dd … ƒ t|j
 |j¡|j |j¡ƒ t|j
 |j¡dd … |j |j¡dd … ƒ d S )Né   éq  ©Úsizeé   é
   ©r   r   r   r%   Úseasonal_orderé   Úloglikelihood_burnÚcÚtrendÚexog)ÚnpÚrandomÚseedÚnormalr    r   r   Úllfr   Úllf_obsr   Úlogliker   r   r   Ú
loglikeobsÚnanÚarange)Únobsr   r   Úoutr   r   r   Ú!test_concentrated_loglike_sarimax,   sZ    ÿÿÿÿ"ÿÿ"ÿÿr:   c                  C   s€   d} t j d¡ t jj| d}t|ƒ}t|j ¡ |j ¡ ƒ t|j 	d¡|j 	d¡ƒ t|jjdddd|jjddddƒ d S )	Nr!   r"   r#   r)   r   é-   r&   ©ÚstartÚendZdynamic)
r.   r/   r0   r1   r    r   r   Zpredictr   Zforecast)r8   r   r9   r   r   r   Ú!test_concentrated_predict_sarimaxc   s    ÿr?   c               	   C   sF  d} t j d¡ t jj| d}ddt  t  | ¡¡dœ}tj|fddi|—Ž}tj|f|Ž}|j}|d	  d
9  < t	t
t| |d d	… ¡| |¡ƒ |j |d	 ¡< | |d d	… ¡}| |d d	… ¡}| |d d	… ¡}W 5 Q R X | |¡}	| |¡}
| |¡}t|j|	jƒ t|jdd … |	jdd … ƒ t||
ƒ t||ƒ d S )Nr!   r"   r#   r'   Úct)r(   r,   r-   Zconcentrate_scaleTr
   g333333ó?r%   )r.   r/   r0   r1   Úsinr7   r   r   r   r   ÚAssertionErrorr   r4   r   Zfixed_scaler   r5   r2   r3   )r8   r   r   r   r   ÚparamsZres1Zllf1Zllf_obs1Zres2Zllf2Zllf_obs2r   r   r   Útest_fixed_scale_sarimaxs   s4    ý ÿ



rD   c                 K   sB  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 }|r´tj	|j
d< tj	|j
dd…d d …f< tj	|j
d< | ddi¡ tj|f|Ž}tj|f|Ž}d|j_| |j_| |j_|j}||j d }	| dd¡dkr0||j  |	  < n||j  |	d   < | |¡}
|
j}| ¡ }| dd¡dkr„||j  |9  < n||j  |d 9  < ||j  |9  < | |¡}t|
j|jƒ |jjD ].}|dkrÞqÌtt|
j|ƒt|j|ƒƒ qÌ|
j}|
j}dddddg}|D ],}t|
j|ƒ}t|j|ƒ}t||dd  qd!d"d#d$d%d&d'g}|D ]D}t|
j|ƒd(|d …f }t|j|ƒd(|d …f }t||dd  q^d)d*d+d,d-d.d/d0d1d2d3d4d5g}|D ],}t|
j|ƒ}t|j|ƒ}t||dd  qÆ|j}|
jd6|d7 d8d9}|
jd6|d7 d8d9}t|j |j ƒ t|j!|j!ƒ d S ):Nz
1960-01-01z
1982-10-01ZQS)ÚfreqÚinvÚincZconsump)ÚcolumnsÚindexZdln_invZdln_incZdln_consumpz
1960-04-01z
1978-10-01)r   r   é   r)   )é   r   r	   r   TÚerror_cov_typeZunstructuredÚdiagonalg      à?ZobsZpredicted_stateZfiltered_stateZ	forecastsZforecasts_errorZkalman_gaingH¯¼šò×z>)ZatolZstandardized_forecasts_errorZpredicted_state_covZfiltered_state_covZtmp1Ztmp2Ztmp3Ztmp4.Z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_covr&   é2   é(   r<   )"ÚpdZ
date_rangeZ	DataFramer   Zlutkepohl_datar.   ÚlogZdiffÚlocr6   ZilocÚupdater   ZVARMAXr   r   r   r   Z_params_state_covr   r   r   r   Z_params_obs_covr   r2   ZshapesÚgetattrZfilter_resultsr*   r8   Zget_predictionZpredicted_meanZse_mean)r   Úmissingr   rI   Zdtar   r   r   Zconc_paramsZstart_scaler   r   Zorig_paramsr   ÚnameÚdZfilter_attrÚactualZdesiredZfilter_attr_burnZsmoothed_attrr8   Z	pred_concZ	pred_origr   r   r   Úcheck_concentrated_scaleœ   s¦     ÿ



ÿ ÿ    þ  ÷rY   c                   C   s@   t dd t ddd t ddd t ddd t dddd	 d S )
NF©r   T©r   r   rM   ©r   rL   ©r   rU   r&   ©r   rU   r*   ©rY   r   r   r   r   Ú$test_concentrated_scale_conventional  s    
ÿÿr`   c                   C   s@   t dd t ddd t ddd t ddd t dddd d S )	NTrZ   r[   rM   r\   r]   r&   r^   r_   r   r   r   r   Ú"test_concentrated_scale_univariate  s    
ÿra   )F)FF)Ú__doc__Znumpyr.   ZpandasrP   Zstatsmodels.tools.toolsr   Úresultsr   Zstatsmodels.tsa.statespacer   r   Znumpy.testingr   r   r    r:   r?   rD   rY   r`   ra   r   r   r   r   Ú<module>   s   	
7)
u
