
    Vfd')              	       n   d dl mZ d dlmZ d dlZd dlZd dlZd dl	Z	d dl
mZmZ d dlmZ d dlmZ d dlmZmZ d0d
ZdZdZdZdZ e eeeeee                    Zd eD             Zd eD             Zd eD             Zd eD             Zd eD             Z e	j        dee          d             Z  e	j        dee          d             Z! e	j        dee          d             Z"d Z#d Z$d Z%d Z&e	j'        (                    dddg          e	j'        (                    d g d!          d"                         Z)d# Z*d$ Z+d% Z,d& Z-e	j'        j.        d'             Z/e	j'        (                    d(d)dg          d*             Z0e	j'        (                    d+g d,          d-             Z1d. Z2d/ Z3dS )1    )BytesIO)productN)assert_allcloseassert_array_equal)tools)WLS)
RollingWLS
RollingOLSF        c                 :   t           j                            d          }|                    | |f          }d t	          |          D             }|rt          j        |          }dg|z   }|dk    r-|                    |j                  |k     }	t           j	        ||	<   |j        d         dk    r8|d d d df         
                    d          |                    |           z   }
n+|
                    d          |                    |           z   }
|                    d|
j        d                   dz  }|r[t          j        d	| 
          }t          j        |||          }t          j        |
|d          }
t          j        ||d          }|sd }|
||fS )Ni&:c                 8    g | ]}d                      |          S )zx{0})format).0is     Ilib/python3.11/site-packages/statsmodels/regression/tests/test_rolling.py
<listcomp>zgen_data.<locals>.<listcomp>   s$    222FMM!222    constr         r   z
12-31-1999)periods)indexcolumnsy)r   nameweights)nprandomRandomStatestandard_normalranger   add_constantrandom_sampleshapenansum	chisquarepd
date_range	DataFrameSeries)nobsnvarr   pandasmissingr   rsxcolsmaskr   widxs                r   gen_datar7      s   			y	)	)B
D$<((A22eDkk222D  q!!y4}}((72&$wqzA~~aaa"fIMM!r11$777EE!HHr))$///
Q
##a'A 4mL$777L#t444Ias---Ias333 a7Nr   )   )   r   TF)r   g?c                 <    g | ]}|d          |d         z   dk    |S )r      r    r   params     r   r   r   .   s/    	?	?	?EuQx%(':Q'>'>%'>'>'>r   c                 ^    g | ]*}d                      t          t          |                    +S -joinmapstrr>   s     r   r   r   /   s,    555UsxxC  555r   c                 F    g | ]}t           d          t           d         |S )r<      )paramsr>   s     r   r   r   1   s*    EEE%VAYE6!9EEEEr   c                 $    g | ]}d D ]}||fz   	S )r:   r=   )r   r?   tfs      r   r   r   2   s+    MMMU}MM5B5=MMMMr   c                 ^    g | ]*}d                      t          t          |                    +S rA   rC   r>   s     r   r   r   3   s,    GGGeS%))GGGr   module)scoperI   idsc                     t          | j         S Nr7   r?   requests    r   datarU   6       W]##r   c                     t          | j         S rQ   rR   rS   s    r   
basic_datarX   ;   rV   r   c                     t          | j         S rQ   rR   rS   s    r   weighted_datarZ   @   rV   r   c                 x    t          | t          j        t          j        f          r| j        |         S | |         S rQ   )
isinstancer)   r,   r+   iloc)r2   r6   s     r   
get_singler^   E   s2    !bi.// vc{S6Mr   c                     t          | t          j        t          j        f          r&| j        ||z
  |         }t          j        |          S | ||z
  |         S rQ   )r\   r)   r,   r+   r]   r   asarray)r2   r6   windowouts       r   get_subrc   K   sT    !bi.// fS6\C'(z#S6\C  r   c                    | \  }}}t          ||d|          }t          j        |j        d         t                    }t          d|j        d         dz             D ]}t          ||d          }t          ||d          }t          j        t          j        t          j	        |                    p%t          j        t          j	        |                              ||dz
  <   t          |j        |           d S )Nd   ra   r   r   )dtyper   )r	   r   zerosr%   boolr"   rc   squeezeanyisnanr   _has_nan)	rU   r   r2   r5   modhas_nanr   _y_xs	            r   test_has_nanrr   R   s    GAq!
Q#q
1
1
1Chqwqz...G3
Q'' 
 
Q3Q3VBHRLL!!9RVBHRLL%9%9
 
A s|W-----r   c                    | \  }}}t          |||d          }|                    d          }t          d|j        d                   D ]5}t	          ||d          }t	          ||d          }|t	          ||d          }	nt          j        |          }	t          |||	d                                          }
t          |j	        |dz
            }t          |j
        |dz
            }t          ||
j	                   t          ||
j
                   t          t          |j        |dz
            |
j                   t          t          |j        |dz
            |
j                   t          t          |j        |dz
            |
j                   t          t          |j        |dz
            |
j                   t          t          |j        |dz
            |
j                   t          |j        |
j                   t          t          |j        |dz
            |
j                   t          t          |j        |dz
            |
j        d	
           t          |j        |
j                   t          t          |j        |dz
            |
j                   t          t          |j        |dz
            |
j                   t          t          |j        |dz
            |
j                   t          t          |j        |dz
            |
j        d	
           t          t          |j        |dz
            |
j        d	
           t          t          |j        |dz
            |
j                   7d S )Nre   )r   ra   T)use_tr   drop)r   r0   r   :0yE>atol)r	   fitr"   r%   rc   r   	ones_liker   r^   rI   r-   r   ssrllfaicbiccentered_tssdf_modeldf_residess
k_constant	mse_model	mse_resid	mse_totalrsquaredrsquared_adjuncentered_tss)rZ   r   r2   r5   rn   resr   rp   rq   _wwlsrolling_paramsrolling_nobss                r   test_weighted_against_wlsr   _   s1   GAq!
Q1S
1
1
1C
'''

C3
##  
  
Q3Q3=As##BBb!!B"b"f55599;;#CJA66!#(AE22
333ch///
37AE22CG<<<
37AE22CG<<<
37AE22CG<<<
37AE22CG<<<
3#3QU;;S=MNNNcl333
3<Q77FFF
37AE22CG$GGGG777
3=!a%88#-HHH
3=!a%88#-HHH
3=!a%88#-HHHs|QU++S\	
 	
 	
 	
 	s'Q//1A	
 	
 	
 	
 	s)1q51133E	
 	
 	
 	
= 
  
r   cov_type	nonrobustHC0rt   )NTFc           	         | \  }}}t          ||d|          }|                    ||          }|                                }|                                 t	          d|j        d                   D ]}	t          ||	d          }
t          ||	d          }t          |
|d                              ||          }t          t          |j
        |	dz
            |j
                   t          t          |j        |	dz
            |j                   t          t          |j        |	dz
            |j        d	           t          t          |j        |	dz
            |j                   t          j        d
          5  t          t          |j        |	dz
            |j        d	           d d d            n# 1 swxY w Y   |j        |j        k    sJ |j        |j        k    sJ |                                }t'          |t(          j                  r8|j        |	dz
           }t          j        |                              d          }n||	dz
           j        }t          ||            d S )Nre   rf   )rt   r   r   ru   )r0   r   rv   rw   ignore)invalid)r   r<   )r	   ry   conf_int
cov_paramsr"   r%   rc   r   r   r^   tvaluesbsepvaluesfvaluer   errstatef_pvaluer   rt   r\   r)   r+   r]   r`   reshapeT)rU   rt   r   r   r2   r5   rn   r   cir   rp   rq   r   wls_cici_vals                  r   test_against_wls_inferencer      s    GAq!
Q#q
1
1
1C
'''
1
1C	B NN 3
## ( (Q3Q3"b&)))--EH-MM
3;A66DDD
37AE22CG<<<
3;A66$OOOO
3:q1u55szBBB[*** 	 	3<Q//D   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 |s|++++yCI%%%%b",'' 	!WQU^FZ''//88FFAY[F'''')( (s   .F==G	G	c                 $   | \  }}}t          ||dd|          }|                                }t          j        |j                  }t          j        t          j        |dd                              sJ t          j        t          j        |                    sd S t          ||dd          }|                                }t          j        |j                  }t          j        t          j        |dd                              sJ d S )Nre   ru   )ra   r0   r   c   skip)ra   r0   )	r	   ry   r   r`   rI   allisfiniterk   rl   )rU   r   r2   r5   rn   r   rI   s          r   
test_raiser      s    GAq!
Q#vq
A
A
AC
''))CZ
##F6"+fRSSk**+++++6"(1++ 
Q#v
6
6
6C
''))CZ
##F6"(6#$$<(()))))))r   c                     t          ddd          \  } }}t          j        t          d          5  t	          | |                              d           d d d            n# 1 swxY w Y   t          j        t                    5  t	          | |                              d	           d d d            n# 1 swxY w Y   t          j        t          d
          5  t	          | |d           d d d            n# 1 swxY w Y   t          j        t          d
          5  t	          | |dd           d d d            d S # 1 swxY w Y   d S )Nr8   r<   Tz reset must be a positive integermatchr   )resetunknown)methodzmin_nobs must be largerr   min_nobs<   re   )ra   r   )r7   pytestraises
ValueErrorr	   ry   )r   r2   _s      r   
test_errorr      s<   sAt$$GAq!	z)K	L	L	L ( (1aB'''( ( ( ( ( ( ( ( ( ( ( ( ( ( (	z	"	" / /1aI.../ / / / / / / / / / / / / / /	z)B	C	C	C % %1a!$$$$% % % % % % % % % % % % % % %	z)B	C	C	C 2 21aS11112 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2sG   %A""A&)A&%B77B;>B;C<<D D "EE
Ec                 *   | \  }}}t          ||d                                          }t                      }|                    |           |                    dd           |j                            |          }t          |          t          |          u sJ t                      }|                    |d           |                    dd           |j                            |          }t          |          t          |          u sJ d S )Nr   ra   r   T)remove_data)r
   ry   r   saveseek	__class__loadtype)rU   r   r2   r5   r   fhres_unpickleds          r   test_save_loadr      s    GAq!
Q"
%
%
%
)
)
+
+C	BHHRLLLGGAqMMMM&&r**M$s))++++	BHHRTH"""GGAqMMMM&&r**M$s))++++++r   c                     t          dddd          \  } }}d}t          j        | |gd          }t          j        |d||	          }|                                }t          | |d
          }|                                }t          |j        |j                   t          j        |d|          }	|	                                 d S )Nr8   r9   Tr/   y ~ 1 + x0 + x1 + x2r   axisre   ra   rU   r   r   )ra   rU   )	r7   r)   concatr	   from_formulary   r   rI   r
   )
r   r2   r5   fmlarU   rn   r   altalt_resols_mods
             r   test_formular      s    sAtD111GAq!!D9aV!$$$D

!$sq
I
I
IC
''))C
Q#
&
&
&CggiiGCJ///%d3TBBBGKKMMMMMr   c                     dd l m}  t          dddd          \  }}}d}t          j        ||gd          }t          j        |d	||
          }|                                }|                                }t          || j
                  sJ |                    dd d           |                    dd d           |                    ddgd d           |                    dgd d           |                    g dd d           t          j        t          d          5  |                    d           d d d            n# 1 swxY w Y   | 
                                }t          j                    5  t          j        d           |                    |          }	d d d            n# 1 swxY w Y   |	|u sJ |                    d d           d S )Nr   r8   r9   Tr   r   r   r   re   r   r<   )      )	variablesalphafigsizex0)r   x1x2zvariable x4 is not an integerr   x4)r   r   )fig)r   r   )matplotlib.pyplotpyplotr7   r)   r   r	   r   ry   plot_recursive_coefficientr\   Figurer   r   r   warningscatch_warningssimplefilter)
pltr   r2   r5   r   rU   rn   r   r   rb   s
             r   	test_plotr      s   ######sAtD111GAq!!D9aV!$$$D

!$sq
I
I
IC
''))C

(
(
*
*Cc3:&&&&&""QdG"LLL""Tw"OOO""a&g #    ""&g #    ""$$$D' #    
z)H	I	I	I 7 7&&&6667 7 7 7 7 7 7 7 7 7 7 7 7 7 7 **,,C		 	"	" 6 6h''',,,556 6 6 6 6 6 6 6 6 6 6 6 6 6 6 #::::""w"?????s$   'E

EE<+F33F7:F7params_onlyTc                 &   | \  }}}t          ||d          }|                    d|          }|                    d|          }|                    d|          }t          |j        |j                   t          |j        |j                   d S )N   invr   r   lstsqpinvr
   ry   r   rI   )	rX   r   r   r2   r   rn   res_inv	res_lstsqres_pinvs	            r   test_methodsr     s    GAq!
Q3

CggUg<<GwK@@Iwwf+w>>HGNI$4555GNHO44444r   r   )r   r   r   c                     | \  }}}t          ||d          }|                    |d          }|                    |d          }t          |j        |j                   d S )Nr   Fr   Tr   )rX   r   r   r2   r   rn   r   res_params_onlys           r   test_params_onlyr     sc    GAq!
Q3

C
''U'
3
3CggVg>>OO*CJ77777r   c                    | \  }}}t          j        t          j        t          j        |                              sd S t	          ||d          }|                                }|j        |j        dk                                             dz   }t	          ||d|          }|                                }t          j        |j        |j        dk             |k              sJ d S )Nr   r   r   r   )	r   rk   rl   r`   r
   ry   r-   minr   )rX   r   r2   r5   rn   r   r   s          r   test_min_nobsr     s    GAq!6"(2:a==))** 
Q3

C
''))CxA&**,,q0H
Q3
2
2
2C
''))C6#(38q=)X56666666r   c           	      4   | \  }}}t          j        |          }t          ||ddd          }|                                }t          j        |j                  }t          j        t          j        |d d                             sJ t          j        t          j        t          j        t          j	        |          d                    dk              d         d         }t          j        t          j	        ||d                              sJ d S )	Nr   2   T)r   	expanding1   r   r   r   )
r   r`   r
   ry   rI   r   rl   wherecumsumr   )	rX   r   r2   r5   xarn   r   rI   firsts	            r   test_expandingr   (  s    GAq!	AB
Q3t
<
<
<C
''))CZ
##F6"(6#2#;''(((((HRYrvbk"ooA>>>??2EFFqI!LE6"+fUVVn--.......r   )Fr   F)4ior   	itertoolsr   r   numpyr   r/   r)   r   numpy.testingr   r   statsmodelsr   #statsmodels.regression.linear_modelr   statsmodels.regression.rollingr	   r
   r7   r-   r.   rK   r0   listrI   rO   basic_paramsweighted_paramsweighted_idsfixturerU   rX   rZ   r^   rc   rr   r   markparametrizer   r   r   r   r   
matplotlibr   r   r   r   r   r=   r   r   <module>r     sd                         = = = = = = = =       3 3 3 3 3 3 A A A A A A A A   4 
	ggdD"b'22	3	3	?	?V	?	?	?55f555EE6EEEMMfMMMGGGGG hv3777$ $ 87$ h|===$ $ >=$ hLIII$ $ JI$  ! ! !
. 
. 
.$
 $
 $
N k5%9::"5"5"566( ( 76 ;:(B* * * 	2 	2 	2, , ,$
 
 
 @ @ @B u665 5 765 #;#;#;<<8 8 =<8
7 
7 
7/ / / / /r   