ó
áp7]c           @` sÒ   d  Z  d d l m Z m Z m 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 e d	 „ Z d
 „  Z d „  Z d „  Z e e d „ Z d „  Z d „  Z d S(   s°   
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
i    (   t   divisiont   absolute_importt   print_functionN(   t   Bunchi   (   t   results_varmax(   t   sarimaxt   varmax(   t   assert_raisest   assert_allclosec         K` s  | j  d d ƒ t j |  |  } t | j _ | | j _ | j } d | d <| j | ƒ } | j	 } t j |  |  } | | j _ | j
 ƒ  } d | j d t ƒ }	 | | |	 | |	 )| j | ƒ }
 t i | d 6| d 6| d 6| d	 6| d
 6|
 d 6| d 6  S(   Nt	   tolerancei    i   iÿÿÿÿt   measurement_errort   mod_conct   params_conct   mod_origt   params_origt   res_conct   res_origt   scale(   t
   setdefaultR   t   SARIMAXt   Truet   ssmt   filter_concentratedt   filter_univariatet   start_paramst   smoothR   t   copyt   gett   FalseR   (   t   endogR   t   kwargsR   R   R   R   R   R   t   k_varsR   (    (    sQ   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_concentrated.pyt   get_sarimax_models   s$    	
	c          C` sì  d }  t  j j d ƒ t  j j d |  ƒ } i  } t | ƒ } t | j j | j j ƒ t | j j	 | j j	 ƒ t | j
 j | j ƒ | j j | j ƒ ƒ t | j
 j | j ƒ | j j | j ƒ ƒ t  j | d d +t | ƒ } t | j j | j j ƒ t | j j	 | j j	 ƒ t | j
 j | j ƒ | j j | j ƒ ƒ t | j
 j | j ƒ | j j | j ƒ ƒ d | d <t | |  } t | j j | j j ƒ t | j j	 d | j j	 d ƒ t | j
 j | j ƒ | j j | j ƒ ƒ t | j
 j | j ƒ d | j j | j ƒ d ƒ d | d	 <d
 | d <t  j |  ƒ | d <t | |  } t | j j | j j ƒ t | j j	 d | j j	 d ƒ t | j
 j | j ƒ | j j | j ƒ ƒ t | j
 j | j ƒ d | j j | j ƒ d ƒ d  S(   Ni   iq  t   sizei   i
   i   t   seasonal_orderi   t   loglikelihood_burnt   ct   trendt   exog(   i   i   i   i   (   t   npt   randomt   seedt   normalR    R   R   t   llfR   t   llf_obsR   t   loglikeR   R   R   t
   loglikeobst   nant   ones(   t   nobsR   R   t   out(    (    sQ   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_concentrated.pyt!   test_concentrated_loglike_sarimax-   sJ    
!

!c       	   C` sÂ   d }  t  j j d ƒ t  j j d |  ƒ } t | ƒ } t | j j ƒ  | j j ƒ  ƒ t | j j	 d ƒ | j j	 d ƒ ƒ t | j j d d d d d	 d
 ƒ | j j d d d d d	 d
 ƒ ƒ d  S(   Ni   iq  R!   i   t   starti    t   endi-   t   dynamici
   (
   R'   R(   R)   R*   R    R   R   t   predictR   t   forecast(   R1   R   R2   (    (    sQ   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_concentrated.pyt!   test_concentrated_predict_sarimaxd   s    %!c          C` sŠ  d }  t  j j d ƒ t  j j d |  ƒ } i d d 6d d 6t  j |  ƒ d	 6} t j | d
 t | } t j | |  } | j } | d c d 9<t	 t
 t | j | d  ƒ | j | ƒ ƒ | j j | d ƒ > | j | d  ƒ } | j | d  ƒ } | j | d  ƒ } Wd  QX| j | ƒ }	 | j | ƒ }
 | j | ƒ } t | j |	 j ƒ t | j d |	 j d ƒ t | |
 ƒ t | | ƒ d  S(   Ni   iq  R!   i   i   R"   t   ctR%   R&   t   concentrate_scaleiÿÿÿÿg333333ó?(   i   i   i   i   (   R'   R(   R)   R*   R0   R   R   R   R   R   t   AssertionErrorR   R-   R   t   fixed_scaleR   R.   R+   R,   (   R1   R   R   R   R   t   paramst   res1t   llf1t   llf_obs1t   res2t   llf2t   llf_obs2(    (    sQ   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_concentrated.pyt   test_fixed_scale_sarimaxt   s0    		 c         K` s…  t  j d d d d ƒ} t  j t j d d d d g d	 | ƒ} t j | d ƒ j ƒ  | d
 <t j | d ƒ j ƒ  | d <t j | d ƒ j ƒ  | 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= <n  | j i d d 6ƒ t j | |  } t j | |  } t | j _ |  | j _ |  | j _ | j } | | j d }	 | j d d ƒ d k r¤| | j c |	 <n | | j c |	 d <| j | ƒ }
 |
 j } | j ƒ  } | j d d ƒ d k r| | j c | 9<n | | j c | d 9<| | j c | 9<| j | ƒ } t |
 j | j ƒ xK | j j D]= } | d k r~qfn  t t |
 j | ƒ t | j | ƒ ƒ qfW|
 j } |
 j } d d d d d g } xE | D]= } t |
 j | ƒ } t | j | ƒ } t | | d d  ƒqÕWd! d" d# d$ d% d& d' g } xe | D]] } t |
 j | ƒ d( | d  … f } t | j | ƒ d( | d  … f } t | | d d  ƒq8Wd) d* d+ d, d- d. d/ d0 d1 d2 d3 d4 d5 g } xE | D]= } t |
 j | ƒ } t | j | ƒ } t | | d d  ƒqÍW| j } |
 j  d6 d7 d8 | d9 d: d; ƒ } |
 j  d6 d7 d8 | d9 d: d; ƒ } t | j! | j! ƒ t | j" | j" ƒ d  S(>   Ns
   1960-01-01s
   1982-10-01t   freqt   QSt   columnst   invt   inct   consumpt   indext   dln_invt   dln_inct   dln_consumps
   1960-04-01s
   1978-10-01i    i   i   i   i   R	   t   error_cov_typet   unstructuredt   diagonalg      à?t   obst   predicted_statet   filtered_statet	   forecastst   forecasts_errort   kalman_gaint   atolgH¯¼šò×z>t   standardized_forecasts_errort   predicted_state_covt   filtered_state_covt   tmp1t   tmp2t   tmp3t   tmp4.t   smoothed_statet   smoothed_state_covt   smoothed_state_autocovt   smoothed_state_disturbancet   smoothed_state_disturbance_covt    smoothed_measurement_disturbancet$   smoothed_measurement_disturbance_covt   scaled_smoothed_estimatort   scaled_smoothed_estimator_covt   smoothing_errort   smoothed_forecastst   smoothed_forecasts_errort   smoothed_forecasts_error_covR4   i
   R5   i2   R6   i(   (   i    i    (   i   i   (#   t   pdt
   date_ranget	   DataFrameR   t   lutkepohl_dataR'   t   logt   difft   locR/   t   iloct   updateR   t   VARMAXR   R   R   R   R   t   _params_state_covR   R   R   R   t   _params_obs_covR   R+   t   shapest   getattrt   filter_resultsR#   R1   t   get_predictiont   predicted_meant   se_mean(   R   t   missingR   RL   t   dtaR   R   R   t   conc_paramst   start_scaleR   R   t   orig_paramsR   t   namet   dt   filter_attrt   actualt   desiredt   filter_attr_burnt   smoothed_attrR1   t	   pred_conct	   pred_orig(    (    sQ   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_concentrated.pyt   check_concentrated_scale   sŒ    "					""		""c           C` sc   t  d t ƒ t  d t d t ƒ t  d t d d ƒ t  d t d t ƒ t  d t d t d d ƒ d  S(   NR   R
   RP   RR   R€   R#   i
   (   RŽ   R   R   (    (    (    sQ   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_concentrated.pyt$   test_concentrated_scale_conventional  s    c           C` sc   t  d t ƒ t  d t d t ƒ t  d t d d ƒ t  d t d t ƒ t  d t d t d d ƒ d  S(   NR   R
   RP   RR   R€   R#   i
   (   RŽ   R   (    (    (    sQ   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_concentrated.pyt"   test_concentrated_scale_univariate  s    (   t   __doc__t
   __future__R    R   R   t   numpyR'   t   pandasRn   t   statsmodels.tools.toolsR   t   resultsR   t   statsmodels.tsa.statespaceR   R   t   numpy.testingR   R   R   R    R3   R9   RE   RŽ   R   R   (    (    (    sQ   lib/python2.7/site-packages/statsmodels/tsa/statespace/tests/test_concentrated.pyt   <module>   s   	7		)u	
