ó
áp7]c           @` sJ  d  Z  d d l m Z m Z m Z d d l Z d d l Z d d l	 Z	 d d l
 m Z d d l Z d d l m Z d d l m Z d d l m Z d d l m Z m Z d d	 l m Z d d
 l m Z d d l m Z d d l m Z d d l m Z m  Z  m! Z! e j" j# e j" j$ e% ƒ ƒ Z& d e j' d Z( e j) e& e j' e( ƒ Z* d e j' d Z+ e j) e& e j' e+ ƒ Z, e j- ƒ  j. Z/ e j0 d d d d d d ƒ e/ _1 e/ d Z2 e e/ d ƒ Z3 d „  Z4 d „  Z5 d d „ Z7 d „  Z8 d „  Z9 d „  Z: e	 j; j< d „  ƒ Z= d  „  Z> d! „  Z? d" „  Z@ d# „  ZA d$ „  ZB d% „  ZC d S(&   sW   
Tests for recursive least squares models

Author: Chad Fulton
License: Simplified-BSD
i    (   t   divisiont   absolute_importt   print_functionN(   t   norm(   t	   macrodata(   t   OLS(   t   GLM(   t   aict   bic(   t   RecursiveLS(   t   recursive_olsresiduals(   t   add_constant(   t   ValueWarning(   t   assert_equalt   assert_raisest   assert_allcloset   resultss   results_rls_R.csvs   results_rls_stata.csvt   starts
   1959-01-01t   ends
   2009-07-01t   freqt   QSt   cpit   m1c          C` s§   t  t j t j ƒ }  |  j ƒ  } t t t ƒ } | j ƒ  } t | j | j ƒ t  t t d j ƒ }  |  j ƒ  } t t t d ƒ } | j ƒ  } t | j | j ƒ d  S(   NR   (	   R	   t   endogt   valuest   exogt   fitR   R   t   paramst   dta(   t   modt   rest   mod_olst   res_ols(    (    sM   lib/python2.7/site-packages/statsmodels/regression/tests/test_recursive_ls.pyt
   test_endog(   s    c    
      C` sE  t  t t d ƒ }  |  j ƒ  } t t t d ƒ } | j ƒ  } t | j | j ƒ t | j | j ƒ t | j j	 d | j
 ƒ |  j d  d  … d f t j |  d d d  d  … d  d  … f | j d d ƒ} t | | j ƒ | j | j d | j
 ƒ} t | j | ƒ t j | j d d d  … f | j j	 d d d ƒ |  j } t j t j | j d	 d d | d ƒƒ j ƒ  } t | | j ƒ | j d
 d t j d ƒ ƒ} t | | j t j d ƒ ƒ ƒ t | j | j ƒ t | j | j ƒ t | j | j ƒ t | j | j ƒ t | j | j ƒ t | j  | j  ƒ t | j! | j! ƒ t | j" | j" ƒ | j# d ƒ } | j# d ƒ } t | j$ | j$ ƒ t | j% | j% d d ƒ| j& d ƒ } | j& d ƒ } t | j$ | j$ ƒ t | j% | j% d d ƒt' | | j( | j) ƒ } t | | j' ƒ t* | | j( | j) ƒ }	 t |	 | j* ƒ d  S(   NR   i    t   designt   axist   scalei   g      à?i   t   loci
   s   m1 = 0t   atolgVçž¯Ò<(   i    i    (   i    i    (   i   i   i
   (   i
   i   (+   R	   R   R   R   R   R   R   t   bset   filter_resultst   obs_covR$   t   npt   sumt   smoothed_statet   residt   logliket   llf_recursivet   standardized_forecasts_errort   nobst   logR   t   pdft   resid_recursivet   llft   forecastt   onest   predictt   esst   ssrt   centered_tsst   uncentered_tsst   rsquaredt	   mse_modelt	   mse_residt	   mse_totalt   t_testt	   statistict   pvaluet   f_testR   t   nobs_effectivet   df_modelR   (
   R   R   R   R    t   actualt   desiredt   scale_alternativet   llf_alternativet
   actual_aict
   actual_bic(    (    sM   lib/python2.7/site-packages/statsmodels/regression/tests/test_recursive_ls.pyt   test_ols;   sP    9#c         C` s  t  j } t t  d d g ƒ } t | | d |  ƒ} | j ƒ  } t | | ƒ } |  d  k rj | j ƒ  } n | j d |  ƒ } t | j	 | j	 ƒ t | j
 | j
 d d ƒt | j j d | j ƒ t | j d | j ƒ | j d  d  … d f t j | d d d  d  … d  d  … f | j d	 d ƒ} t | | j d d
 ƒ| j | j	 d | j ƒ} t | j | ƒ t j | j d d d  … f | j j d d d ƒ | j }	 t j t j | j d d d |	 d ƒƒ j ƒ  }
 t |
 | j ƒ |  d  k r;t j d ƒ } | j d d | ƒ} t | | j  t j d ƒ ƒ ƒ n( t j d ƒ } t! t" | j d d | ƒ| j# d ƒ } | j# d ƒ } t | j$ | j$ ƒ t | j% | j% d d ƒ| j& d ƒ } | j& d ƒ } t | j$ | j$ ƒ t | j% | j% ƒ t' |
 | j( | j ƒ } t | | j' ƒ d  S(   Nt   unempR   t   constraintsR&   gíµ ÷Æ°>i    i   R"   R#   gH¯¼šò×z>R$   g      à?i   R%   i   i
   s   m1 = 0gVçž¯Ò<(   i    i    (   i    i    (   i   i   i
   (   i
   i   (   i   i   i
   ()   R   t   inflR   R	   R   R   t   Nonet   fit_constrainedR   R   R'   R(   R)   R$   R   RF   R   R*   R+   R,   t   resid_responseR.   R/   R0   R1   R2   R   R3   R4   R5   R7   R6   R8   R   t   NotImplementedErrorRA   RB   RC   RD   R   RE   (   RO   R   R   R   R   t   mod_glmt   res_glmRG   RH   RI   RJ   R"   RK   (    (    sM   lib/python2.7/site-packages/statsmodels/regression/tests/test_recursive_ls.pyt   test_glm‰   sN    	9#"c           C` s   t  d d ƒ d  S(   NRO   s   m1 + unemp = 1(   RW   (    (    (    sM   lib/python2.7/site-packages/statsmodels/regression/tests/test_recursive_ls.pyt   test_glm_constrainedÝ   s    c          C` sM   t  t t ƒ }  |  j ƒ  } t t t ƒ } | j ƒ  } t | j | j ƒ d  S(   N(   R	   R   R   t   filterR   R   R   R   (   R   R   R   R    (    (    sM   lib/python2.7/site-packages/statsmodels/regression/tests/test_recursive_ls.pyt   test_filterá   s
    c          C` s  t  t t ƒ }  |  j ƒ  } t |  j d ƒ t | j j d  d  … d d … f j	 t
 j d  d d g d d ƒt | j j d  d  … d	 d
 … f j	 t
 j d d !d d g ƒ t | j j d  d  … d d  … f j	 t
 j d d d g ƒ t t t ƒ } | j ƒ  } t | j | j ƒ d  S(   Ni    i   i
   i   t   beta1t   beta2t   rtolgñhãˆµøä>i	   i   i   i   i   i   (   R	   R   R   R   R   t   start_paramsR   t   recursive_coefficientst   filteredt   Tt	   results_Rt   ilocR   R   (   R   R   R   R    (    (    sM   lib/python2.7/site-packages/statsmodels/regression/tests/test_recursive_ls.pyt   test_estimatesì   s    %%%c         C` s<  t  t d d g ƒ } t t | ƒ } | j ƒ  } y d d l m } | ƒ  Wn t k
 r_ n X| j ƒ  } | j d d g ƒ } | j d d d d g ƒ } | j	 ƒ  } x& d d g D] } | j	 d | ƒ } qµ Wt
 t | j	 d d	 ƒ| j ƒ  } t t j | j ƒ } | j ƒ  } | j ƒ  } | j	 ƒ  } | j ƒ  } d  S(
   NR   t   popi    (   t   register_matplotlib_converterst	   variablesg{®Gáz„?gš™™™™™¹?t   alphag°rh‘í|¿?(   R   R   R	   R   R   t   pandas.plottingRf   t   ImportErrort   plot_recursive_coefficientt
   plot_cusumR   t
   ValueErrort   plot_cusum_squaresR   (   t   close_figuresR   R   R   Rf   t   figRh   (    (    sM   lib/python2.7/site-packages/statsmodels/regression/tests/test_recursive_ls.pyt
   test_plots  s*    c          C` su   t  j t d d ƒ t j d d t ƒ}  Wd  QX|  j ƒ  } t j d d t ƒ} | j ƒ  } t | j	 | j	 ƒ d  S(   Nt   matchs   No frequency informations   cpi ~ m1t   data(
   t   pytestt   warnsR   R	   t   from_formulaR   R   R   R   R   (   R   R   R   R    (    (    sM   lib/python2.7/site-packages/statsmodels/regression/tests/test_recursive_ls.pyt   test_from_formula3  s    c          C` sü   t  t t ƒ }  |  j ƒ  } t | j d d !j t j d  d ƒ t | j d d !j t j d d !d ƒ t | j d	 j t j d
 d ƒ t | j d t	 j d d d d d d ƒt
 t t ƒ } | j ƒ  } t | ƒ d d } t | j d | ƒ d  S(   Ni   i
   i   t	   rec_residi	   i   i   i   i   i   i   t   rrR&   gñhãˆµøä>R]   i   (   R	   R   R   R   R   R4   Ra   Rb   Rc   t   results_stataR   R
   (   R   R   R   R    t   desired_resid_recursive(    (    sM   lib/python2.7/site-packages/statsmodels/regression/tests/test_recursive_ls.pyt   test_resid_recursive?  s    c    	   	   C` s±  t  t t ƒ }  |  j ƒ  } | j } | j t j | j | d d ƒ} | | j | 8} | t j | j | d d d ƒ} | d } t	 | t
 j d d d d d d ƒt t t ƒ } | j ƒ  } t | ƒ d	 d } t	 | j | d d ƒ| j d
 d d d d t j | d | j ƒ ƒ } t
 j d d d g j } t	 | | d d ƒ| j d
 d d d d t j | | j ƒ ƒ } t | ƒ d } t	 | | ƒ t t | j d
 d ƒd  S(   Nt   ddofi   i   t   cusumR&   gíµ ÷Æ°>R]   gñhãˆµøä>iþÿÿÿRh   gš™™™™™©?t   pointst   lwt   uwi    iÿÿÿÿg°rh‘í|¿?(   R	   R   R   R   t   nobs_diffuseR~   R*   t   stdR4   R   Rz   Rc   R   R
   t   _cusum_significance_boundst   arangeR1   Ra   R   Rm   t"   _cusum_squares_significance_bounds(	   R   R   t   dR~   R   R    t   desired_cusumt   actual_boundst   desired_bounds(    (    sM   lib/python2.7/site-packages/statsmodels/regression/tests/test_recursive_ls.pyt
   test_cusumV  s,    	#$
$	(	$c          C` s{  t  t t d d ƒ}  t j t ƒ  |  j ƒ  } Wd  QXt | j | j	 ƒ } t
 | j d t j d d d d d d ƒt
 | j t j d d d d ƒt
 | j t j d d d d ƒ| j d	 d
 d d d t j | d | j d ƒ ƒ } t j d d d g j } t
 | | d d ƒ| j d	 d
 d t j | d | j d ƒ ƒ } t j d d d g j } t
 | | d d ƒd  S(   Nt   loglikelihood_burni   Ry   R&   gñhãˆµøä>R]   R~   t   cusum2Rh   gš™™™™™©?R}   i    R   i   R€   R   t   lwwt   uwwg{®Gáz„?(   R	   R   R   Rt   Ru   t   UserWarningR   t   maxR‚   RŒ   R   R4   Rz   Rc   R~   t   cusum_squaresR„   R*   R…   R1   Ra   R†   (   R   R   R‡   R‰   RŠ   (    (    sM   lib/python2.7/site-packages/statsmodels/regression/tests/test_recursive_ls.pyt
   test_stata…  s"    !	,	&c          C` s2  t  d }  t t  d d g ƒ } t |  | d d ƒ} | j ƒ  } d d d g } t | j | ƒ d	 d
 d
 g } t | j d | d d d ƒt | j d | d d d ƒd } t j | j	 d d d  … f | j
 j d d d ƒ | j } t j t j | j d d d | d ƒƒ j ƒ  } t | | ƒ d  S(   NRP   R   RN   RO   s   m1 + unemp = 1gÒ†Ù²Igæ¿g¤»÷F^¿g/Âý‘ð?gõúñ ¿Þ?gUOÂ¢$˜A?i    R&   gš™™™™™¹?i   g-Cëâ6?g~I/o³€Àg      à?i   R%   R$   (   i    i    (   R   R   R	   R   R   R   R'   R*   R+   R0   R(   R)   R1   R2   R   R3   R4   (   R   R   R   R   RH   RI   RJ   (    (    sM   lib/python2.7/site-packages/statsmodels/regression/tests/test_recursive_ls.pyt   test_constraints_stataŸ  s     
#c          C` sS  t  d }  t t  d d d g ƒ } d d g } t |  | d | ƒ} | j ƒ  } d d	 d
 d g } t | j | d d ƒd d d d g } t | j d | d d d ƒt | j d d !| d d !d d ƒd } t j | j	 d d d  … f | j
 j d d d ƒ | j } t j t j | j d d d | d ƒƒ j ƒ  } t | | ƒ d  S(   NRP   R   RN   R   s   m1 + unemp = 1s   cpi = 0RO   gÒ†Ù²Igæ¿g¤»÷F^¿g/Âý‘ð?i    R&   g»½×Ùß|Û=gõúñ ¿Þ?gUOÂ¢$˜A?gš™™™™™¹?i   iÿÿÿÿg-Cëâ6?g~I/o³€Àg      à?i   R%   R$   (   i    i    (   R   R   R	   R   R   R   R'   R*   R+   R0   R(   R)   R1   R2   R   R3   R4   (   R   R   RO   R   R   RH   RI   RJ   (    (    sM   lib/python2.7/site-packages/statsmodels/regression/tests/test_recursive_ls.pyt   test_multiple_constraints¼  s$    
	$#(D   t   __doc__t
   __future__R    R   R   t   numpyR*   t   pandast   pdRt   t   scipy.statsR   t   ost   statsmodels.datasetsR   t#   statsmodels.regression.linear_modelR   t   statsmodels.genmod.apiR   t   statsmodels.tools.eval_measuresR   R   t#   statsmodels.regression.recursive_lsR	   t   statsmodels.stats.diagnosticR
   t   statsmodels.toolsR   t   statsmodels.tools.sm_exceptionsR   t   numpy.testingR   R   R   t   patht   dirnamet   abspatht   __file__t   current_patht   sept   results_R_patht   read_csvRb   t   results_stata_pathRz   t   load_pandasRs   R   t
   date_ranget   indexR   R   R!   RM   RQ   RW   RX   RZ   Rd   t   markt
   matplotlibRq   Rw   R|   R‹   R“   R”   R•   (    (    (    sM   lib/python2.7/site-packages/statsmodels/regression/tests/test_recursive_ls.pyt   <module>   sJ   !
		NT			/			/		