
    M/Ph)              	       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                     g | ]}d | S )x ).0is     i/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/statsmodels/regression/tests/test_rolling.py
<listcomp>zgen_data.<locals>.<listcomp>   s    )))GGG)))    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   rsr   colsmaskr   widxs                r   gen_datar7      s   			y	)	)B
D$<((A))U4[[)))D  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   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 r@   rB   r=   s     r   r   r   3   s,    GGGeS%))GGGr   module)scoperH   idsc                     t          | j         S Nr7   r>   requests    r   datarT   6       W]##r   c                     t          | j         S rP   rQ   rR   s    r   
basic_datarW   ;   rU   r   c                     t          | j         S rP   rQ   rR   s    r   weighted_datarY   @   rU   r   c                 x    t          | t          j        t          j        f          r| j        |         S | |         S rP   )
isinstancer*   r-   r,   iloc)r   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 rP   )r[   r*   r-   r,   r\   r   asarray)r   r6   windowouts       r   get_subrb   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   r`   r   r   )dtyper   )r	   r   zerosr&   boolr#   rb   squeezeanyisnanr   _has_nan)	rT   r   r   r5   modhas_nanr   _y_xs	            r   test_has_nanrq   R   s    GAq!
Q#q
1
1
1Chqwqz...G3
Q'' 
 
Q3Q3F28B<<  8BF28B<<$8$8
 
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 )Nrd   )r   r`   T)use_tr   drop)r   r1   r   :0yE>atol)r	   fitr#   r&   rb   r   	ones_liker   r]   rH   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)rY   r   r   r5   rm   resr   ro   rp   _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HC0rs   )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 )Nrd   re   )rs   r   r   rt   )r1   r   ru   rv   ignore)invalid)r   r<   )r	   rx   conf_int
cov_paramsr#   r&   rb   r   r   r]   tvaluesbsepvaluesfvaluer   errstatef_pvaluer   rs   r[   r*   r,   r\   r_   reshapeT)rT   rs   r   r   r   r5   rm   r   cir   ro   rp   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 )Nrd   rt   )r`   r1   r   c   skip)r`   r1   )	r	   rx   r   r_   rH   allisfiniterj   rk   )rT   r   r   r5   rm   r   rH   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<   rd   )r`   r   )r7   pytestraises
ValueErrorr	   rx   )r   r   _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   r`   r   T)remove_data)r
   rx   r   saveseek	__class__loadtype)rT   r   r   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r0   y ~ 1 + x0 + x1 + x2r   axisrd   r`   rT   r   r   )r`   rT   )	r7   r*   concatr	   from_formularx   r   rH   r
   )
r   r   r5   fmlarT   rm   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   rd   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   rx   plot_recursive_coefficientr[   Figurer   r   r   warningscatch_warningssimplefilter)
pltr   r   r5   r   rT   rm   r   r   ra   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
   rx   r   rH   )	rW   r   r   r   r   rm   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   )rW   r   r   r   r   rm   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   rj   rk   r_   r
   rx   r.   minr   )rW   r   r   r5   rm   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
   rx   rH   r   rk   wherecumsumr   )	rW   r   r   r5   xarm   r   rH   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   r0   r*   r   numpy.testingr   r   statsmodelsr   #statsmodels.regression.linear_modelr   statsmodels.regression.rollingr	   r
   r7   r.   r/   rJ   r1   listrH   rN   basic_paramsweighted_paramsweighted_idsfixturerT   rW   rY   r]   rb   rq   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   