
    'YHhgJ                        d Z ddlZddl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 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 ddlmZ ej<                  j?                  ej<                  jA                  e!            Z"dejF                  z   dz   Z$ e	jJ                  e"ejF                  z   e$z         Z&dejF                  z   dz   Z' e	jJ                  e"ejF                  z   e'z         Z( ejR                         jT                  Z+ e	jX                  ddd      e+_-        e+d   Z. ee+d         Z/d Z0d Z1d%dZ2d Z3d Z4d Z5e
jl                  jn                  d        Z8d Z9d Z:d Z;d  Z<d! Z=d" Z>d# Z?d$ Z@y)&zW
Tests for recursive least squares models

Author: Chad Fulton
License: Simplified-BSD
    N)assert_allcloseassert_equalassert_raises)norm)	macrodata)GLM)OLS)RecursiveLS)recursive_olsresiduals)add_constant)aicbic)ValueWarningresultszresults_rls_R.csvzresults_rls_stata.csvz
1959-01-01z
2009-07-01QS)startendfreqcpim1c                     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                         y )Nr   )	r
   endogvaluesexogfitr	   r   paramsdtamodresmod_olsres_olss       g/var/www/html/planif/env/lib/python3.12/site-packages/statsmodels/regression/tests/test_recursive_ls.py
test_endogr$   '   s    
ellDKK
0C
'')C %GkkmGCJJ/ eSY--
.C
'')C %T#GkkmGCJJ/    c            	      	   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                  z  d      z
  }t        ||j                         |j                  |j                  |j                        }t        |j                   |       t        j                  |j"                  ddd f   |j                  j                  d   dz  z  d	z        | j$                  z  }t        j&                  t)        j*                  |j,                  d|dz  
            j                         }t        ||j.                         |j1                  dt        j2                  d            }t        ||j5                  t        j2                  d                   t        |j6                  |j6                         t        |j8                  |j8                         t        |j:                  |j:                         t        |j<                  |j<                         t        |j>                  |j>                         t        |j@                  |j@                         t        |jB                  |jB                         t        |jD                  |jD                         |jG                  d      }|jG                  d      }t        |jH                  |jH                         t        |jJ                  |jJ                  d       |jM                  d      }|jM                  d      }t        |jH                  |jH                         t        |jJ                  |jJ                  d       tO        ||jP                  |jR                        }t        ||jN                         tU        ||jP                  |jR                        }	t        |	|jT                         y )Nr   r   r   r   designaxisscale         ?   locr,   
   )r-   r-   r2   r(   )r2   r-   m1 = 0V瞯<atol)+r
   r   r   r   r	   r   r   bsefilter_resultsobs_covr,   npsumsmoothed_stateresidloglikellf_recursivestandardized_forecasts_errornobslogr   pdfresid_recursivellfforecastonespredictessssrcentered_tssuncentered_tssrsquared	mse_model	mse_resid	mse_totalt_test	statisticpvaluef_testr   nobs_effectivedf_modelr   )
r   r    r!   r"   actualdesiredscale_alternativellf_alternative
actual_aic
actual_bics
             r#   test_olsr^   :   sP   
eSY
'C
'')C%T#GkkmG CJJ/CGGW[[) C&&..t4gmmD ii1offS1a*+c.@.@@qIJFFGMM*
 oognnGMMoBGC%%w/ ((AB/""4(#-	.01 2 358XX> ffTXXc&9&9q,=s,BD EEHSU OW[[1 \\"RWWZ%8\9FFGOOBGGG,<=> CGGW[[)CGGW[[)C$$g&:&:;C&&(>(>?CLL'"2"23 CMM7#4#45CMM7#4#45CMM7#4#45 ZZ!FnnX&GF$$g&7&78FMM7>>>ZZ!FnnX&GF$$g&7&78FMM7>>> _c&8&8#,,GJJ,_c&8&8#,,GJJ,r%   c           	         t         j                  }t        t         ddg         }t        |||       }|j	                         }t        ||      }| |j	                         }n|j                  |       }t        |j                  |j                         t        |j                  |j                  d       t        |j                  j                  d   |j                         t        |j                  dz
  |j                         |j                  d d df   t!        j"                  |d	dd d d d f   |j$                  z  d
      z
  }t        ||j&                  d       |j)                  |j                  |j                        }t        |j*                  |       t!        j"                  |j,                  ddd f   |j                  j                  d   dz  z  dz        |j.                  z  }	t!        j0                  t3        j4                  |j6                  d|	dz              j#                         }
t        |
|j8                         | Wt!        j:                  d      }|j=                  d|      }t        ||j?                  t!        j:                  d                   n2t!        j:                  d      }tA        tB        |j<                  d|       |jE                  d      }|jE                  d      }t        |jF                  |jF                         t        |jH                  |jH                  d       |jK                  d      }|jK                  d      }t        |jF                  |jF                         t        |jH                  |jH                         tM        |
|jN                  |j                        }t        ||jL                         y )Nunempr   constraintsư>r6   r'   r-   r   r(   r)   gHz>r+   r.   r/   r0   )r-      r2   r2   r3   )r2   rd   )r/   rd   r2   r4   r5   )(r   inflr   r
   r   r   fit_constrainedr   r   r8   r9   r:   r,   r   rW   r   r;   r<   r=   resid_responser?   r@   rA   rB   rC   r   rD   rE   rF   rH   rG   rI   r   NotImplementedErrorrR   rS   rT   rU   r   rV   )rb   r   r   r   r    mod_glmres_glmrX   rY   rZ   r[   r(   r\   s                r#   test_glmrk      s    HHEWdO,-D
eT{
;C
'')C%G++-))k)B CJJ/CGGW[[t4 C&&..t4gmmD !7#3#34 ii1offS1a*+c.@.@@qIJFFG22>
 oognnGMMoBGC%%w/ ((AB/""4(#-	.01 2 358XX> ffTXXc&9&9q,=s,BD EEHSU OW[[1 $b00@ AB$)3<<FK ZZ!FnnX&GF$$g&7&78FMM7>>>ZZ!FnnX&GF$$g&7&78FMM7>>2 _c&8&8#,,GJJ,r%   c                      t        d       y )Nm1 + unemp = 1ra   )rk    r%   r#   test_glm_constrainedro      s    )*r%   c                      t        t        t              } | j                         }t	        t        t              }|j                         }t        |j                  |j                         y N)r
   r   r   filterr	   r   r   r   r   s       r#   test_filterrs      sD    
eT
"C
**,C %GkkmGCJJ/r%   c                     t        t        t              } | j                         }t	        | j
                  d       t        |j                  j                  d d ddf   j                  t        j                  d d ddg   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dg          t        t        t              }|j                         }t        |j                  |j                         y )Nr   r/   r2      beta1beta2h㈵>rtol	                  )r
   r   r   r   r   start_paramsr   recursive_coefficientsfilteredT	results_Rilocr	   r   r   s       r#   test_estimatesr      s   
eT
"C
'')C !!1% C..771R4@BBNN2A&'9:GC..771R4@BBNN1R('7);<>C..7723?AANN23''(:;= %GkkmGCJJ/r%   c                    t        t        ddg         }t        t        |      }|j	                         }	 ddlm}  |        |j                         }|j                  dg      }|j                  g d      }|j                         }dD ]  }|j                  |      } t        t        |j                  d	       |j                         }t        t        j                  |j                        }|j	                         }|j                         }|j                         }|j                         }y # t        $ r Y w xY w)
Nr   popr   )register_matplotlib_converters)	variables)r   r   r   ){Gz?皙?alpharh|?)r   r   r
   r   r   pandas.plottingr   ImportErrorplot_recursive_coefficient
plot_cusumr   
ValueErrorplot_cusum_squaresr   )close_figuresr   r   r    r   figr   s          r#   
test_plotsr     s,   T5M*+D
eT
"C
'')CB&( 
(
(
*C 
(
(D6
(
:C 
(
(3C
(
DC ..
C  *nn5n)* *cnnE: 
 
 
"C ellDKK
0C
'')C 
(
(
*C ..
C 
 
 
"CE  s   D4 4	E ?E c                  P   t        j                  t        d      5  t        j                  dt
              } d d d         j                         }t        j                  dt
              }|j                         }t        |j                  |j                         y # 1 sw Y   exY w)NzNo frequency informationmatchzcpi ~ m1)data)
pytestwarnsr   r
   from_formular   r   r	   r   r   r   s       r#   test_from_formular   2  sv    	l*D	E =&&z<= '')C z4GkkmGCJJ/= =s   BB%c                     t        t        t              } | j                         }t	        |j
                  dd j                  t        j                  d d d          t	        |j
                  dd j                  t        j                  dd d          t	        |j
                  d	d  j                  t        j                  d
d  d          t	        |j
                  dd  t        j                  dd  d   dd       t        t        t              }|j                         }t        |      d   dd  }t	        |j
                  dd  |       y )Nr/   r2   ru   	rec_residr{   r|   r}   r~   r   r   rd   rrrx   r7   rz      )r
   r   r   r   r   rE   r   r   r   results_statar	   r   )r   r    r!   r"   desired_resid_recursives        r#   test_resid_recursiver   >  s&   
eT
"C
'')C C''"-//NN2A&{35C''"-//NN1R(57C'',..NN23'46 C''+!&&qr*40t$H %GkkmG4W=a@DC''+-DEr%   c           	         ddl m} t        j                  j	                  d      }|j                         }t        d|j                  d         D ]!  }||xx   dd||dz
     z  z   ||   z   z  cc<   #  ||dd  dd	
      j                         }t        j                  t        d      5  t        |       d d d        y # 1 sw Y   y xY w)Nr   )ARIMA   r-   r   g?r|   )r-   r   r   c)ordertrendz!res a regression results instancer   )statsmodels.tsa.arima.modelr   r;   randomstandard_normalcopyrangeshaper   r   raises	TypeErrorr   )reset_randomstater   eyir    s         r#   %test_recursive_olsresiduals_bad_inputr   U  s    1
		!!#&A	A1aggaj! ,	!cAa!eHn$qt++,
"#gS
1
5
5
7C	y(K	L $s#$ $ $s   *B??Cc                     t        t        t              } | j                         }|j                  }|j
                  t        j                  |j                  |d  d      z  }||j                  |   z  }|t        j                  |j                  |dz   d  d      z  }|dd  }t        |t        j                  dd  d   dd       t        t        t              }|j                         }t        |      d   dd  }t        |j
                  |d	       |j                  d
dt        j                  |dz   |j                               }t        j                  dd  ddg   j"                  }t        ||d	       |j                  d
dt        j                  ||j                               }t        |      d   }t        ||       t%        t&        |j(                  d       y )Nr-   )ddofrd   cusumrc   rx   r   ry   皙?r   r   pointslwuwr   r   r   )r
   r   r   r   nobs_diffuser   r;   stdrE   r   r   r   r	   r   _cusum_significance_boundsarangerB   r   r   r   "_cusum_squares_significance_bounds)	r   r    dr   r!   r"   desired_cusumactual_boundsdesired_boundss	            r#   
test_cusumr   `  s   
eT
"C
'')C 	AIIs22126Q??E	S  ##E	RVVC''!-A66E!"IEE=--ab1':DQ %GkkmG*73B7;MCII}48
 22299QqS#((#; 3 =M"''+T4L9;;NM>= 22299Q#9 3 ;M+G4R8NM>2 *cDDr%   c            	         t        t        t        d      } t        j                  t
              5  | j                         }d d d        t        j                  |j                        }t        |j                  dd  t        j                  dd  d   dd       t        |j                  t        j                  dd  d   d       t        |j                  t        j                  dd  d   d       |j!                  d	d
t#        j$                  |dz   |j&                  dz               }t        j                  dd  ddg   j(                  }t        ||d       |j+                  d	t#        j$                  |dz   |j&                  dz               }t        j                  dd  ddg   j(                  }t        ||d       y # 1 sw Y   xY w)Nrd   )loglikelihood_burnr   rx   r   r   r6   cusum2r   r   r-   r   r   r   )r   r   lwwuwwr   )r
   r   r   r   r   UserWarningr   maxr   r   r   rE   r   r   r   cusum_squaresr   r;   r   rB   r   r   )r   r    r   r   r   s        r#   
test_statar     s   
eTa
8C	k	" ggiCc445AC''+]-?-?-CD-ID*CII}11!"5g>TJC%%}'9'9!"'=h'G 22299QqS#((1*#= 3 ?M"''+T4L9;;NM>= ::299QqS#((1*5 ; 7M"''+UEN;==NM>=) s   GGc                     t         d   } t        t         ddg         }t        | |d      }|j                         }g d}t	        |j
                  |       g d}t        j                  |j                        }t	        |d   |d   d	
       t	        |dd  |dd  d
       d}t        j                  |j                  ddd f   |j                  j                  d   dz  z  dz        |j                  z  }t        j                  t        j                   |j"                  d|dz              j                         }t	        ||       y )Nre   r   r`   rm   ra   )҆ٲIg礻F^/?) ?UO¢$A?r   r   r   r6   r-   -C6?~I/or'   r.   r/   r0   r   r   r
   r   r   r   r;   asarrayr8   r<   rA   r9   r:   rB   rC   r   rD   rE   )r   r   r   r    rY   r8   rZ   r[   s           r#   test_constraints_statar     s4   KET7O,-D
eT/?
@C
'')C DGCJJ( 6G
**SWW
CCFGAJT2CGWQR[t4 !G ((AB/""4(#-	.01 2 358XX> ffTXXc&9&9q,=s,BD EEHSU OW-r%   c                     t         d   } t        t         g d         }ddg}t        | ||      }|j                         }g d}t	        |j
                  |d       g d	}t        j                  |j                        }t	        |d
   |d
   d       t	        |dd |dd d       d}t        j                  |j                  d
dd f   |j                  j                  d   dz  z  dz        |j                  z  }t        j                  t        j                   |j"                  d
|dz              j                         }t	        ||       y )Nre   )r   r`   r   rm   zcpi = 0ra   )r   r   r   r   g|=r6   )r   r   r   r   r   r   r-   r   r   r   r'   r.   r/   r0   r   )	r   r   rb   r   r    rY   r8   rZ   r[   s	            r#   test_multiple_constraintsr     sC   KE234D 	K
 eT{
;C
'')C GGCJJe4 9G
**SWW
CCFGAJT2C"Iwq}48 !G ((AB/""4(#-	.01 2 358XX> ffTXXc&9&9q,=s,BD EEHSU OW-r%   c                  z   t        g dg d      } t        j                  t        d      5  | j	                  ddi      5  | j                          d d d        d d d        t        j                  t        d      5  | j                  ddi       d d d        y # 1 sw Y   IxY w# 1 sw Y   MxY w# 1 sw Y   y xY w)N)r   r-   r   r-   )r-   r-   r-   r-   z2Linear constraints on coefficients should be givenr   constr   )r
   r   r   r   
fix_paramsr   rf   )r   s    r#   test_fix_paramsr     s    
lL
1C	z += 
? ^^WcN+ 	GGI	
 
z += 
? ,WcN+, ,	 	 
, ,s/   B% BB%<B1B"	B%%B.1B:rq   )A__doc__osnumpyr;   numpy.testingr   r   r   pandaspdr   scipy.statsr   statsmodels.datasetsr   statsmodels.genmod.apir   #statsmodels.regression.linear_modelr	   #statsmodels.regression.recursive_lsr
   statsmodels.stats.diagnosticr   statsmodels.toolsr   statsmodels.tools.eval_measuresr   r   statsmodels.tools.sm_exceptionsr   pathdirnameabspath__file__current_pathsepresults_R_pathread_csvr   results_stata_pathr   load_pandasr   r   
date_rangeindexr   r   r$   r^   rk   ro   rs   r   mark
matplotlibr   r   r   r   r   r   r   r   r   rn   r%   r#   <module>r     sm   
  F F    * & 3 ; ? * 4 8wwrwwx89RVV#&99BKKrvv->?	'*AA L26614FFGi""BMM,TJ	E
CI0&K-\O-h+000 +# +#\	0F.$,^>4.< .F	,r%   