
    'YHh)              	       \   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 d.d	Zd
ZdZdZdZ e eeeeee            ZeD  cg c]  } | d   | d   z   d kD  s|  c} ZeD  cg c]  } dj7                   ee|              c} ZeD  cg c]  } ed   s	ed   s|  c} ZeD  cg c]  } dD ]  }| |fz   
  c}} Z e D  cg c]  } dj7                   ee|              c} Z! e	jD                  dee      d        Z# e	jD                  dee      d        Z$ e	jD                  de e!      d        Z%d Z&d Z'd Z(d Z)e	jT                  jW                  dddg      e	jT                  jW                  dg d      d                Z,d! Z-d" Z.d# Z/d$ Z0e	jT                  jb                  d%        Z2e	jT                  jW                  d&d'dg      d(        Z3e	jT                  jW                  d)g d*      d+        Z4d, Z5d- Z6yc c} w c c} w c c} w c c}} w c c} w )/    )BytesIO)productN)assert_allcloseassert_array_equal)tools)WLS)
RollingWLS
RollingOLSFc                 (   t         j                  j                  d      }|j                  | |f      }t	        |      D cg c]  }d| 	 }	}|rt        j                  |      }dg|	z   }	|dkD  r1|j                  |j                        |k  }
t         j                  ||
<   |j                  d   dkD  r-|d d d df   j                  d      |j                  |       z   }n#|j                  d      |j                  |       z   }|j                  d|j                  d         dz  }|r_t        j                  d	| 
      }t        j                  |||	      }t        j                  ||d      }t        j                  ||d      }|sd }|||fS c c}w )Ni&:xconst              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   icolsmaskr   widxs                 b/var/www/html/planif/env/lib/python3.12/site-packages/statsmodels/regression/tests/test_rolling.pygen_datar2      sg   			y	)B
D$<(A"4[)asG)D)q!y4}(72&&$wwqzA~a"fIMM!r11$77EE!Hr))$//
Q
#a'AmmL$7LL#t4IIas-IIas3a7N) *s    F)   )   r   )TF)r   g?r      -   module)scopeparamsidsc                 &    t        | j                   S Nr2   paramrequests    r1   datarB   6       W]]##    c                 &    t        | j                   S r=   r>   r@   s    r1   
basic_datarF   ;   rC   rD   c                 &    t        | j                   S r=   r>   r@   s    r1   weighted_datarH   @   rC   rD   c                 ~    t        | t        j                  t        j                  f      r| j                  |   S | |   S r=   )
isinstancer#   r&   r%   iloc)r   r0   s     r1   
get_singlerL   E   s0    !bii./vvc{S6MrD   c                     t        | t        j                  t        j                  f      r'| j                  ||z
  | }t        j                  |      S | ||z
  | S r=   )rJ   r#   r&   r%   rK   r   asarray)r   r0   windowouts       r1   get_subrQ   K   sL    !bii./ffS6\C(zz#S6\C  rD   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                  |            xs( t        j                  t        j                  |                  ||dz
  <    t        |j                  |       y )Nd   rO   r   r   )dtyper   )r	   r   zerosr   boolr   rQ   squeezeanyisnanr   _has_nan)	rB   r   r   r/   modhas_nanr,   _y_xs	            r1   test_has_nanr`   R   s    GAq!
Q#q
1Chhqwwqz.G3
Q' 
Q3Q3FF288B< 8BFF288B<$8
A
 s||W-rD   c                 $   | \  }}}t        |||d      }|j                  d      }t        d|j                  d         D ]L  }t	        ||d      }t	        ||d      }|t	        ||d      }	nt        j                  |      }	t        |||	d      j                         }
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        |j0                  |dz
        |
j0                  d	
       t        t        |j2                  |dz
        |
j2                  d	
       t        t        |j4                  |dz
        |
j4                         O y )NrS   )r   rO   T)use_tr   drop)r   r*   r   :0yE>atol)r	   fitr   r   rQ   r   	ones_liker   rL   r:   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)rH   r   r   r/   r\   resr,   r^   r_   _wwlsrolling_paramsrolling_nobss                r1   test_weighted_against_wlsr}   _   s   GAq!
Q1S
1C
'''
C3
#  
Q3Q3=As#Bb!B"b"f599;#CJJA6!#((AE2

3chh/
377AE2CGG<
377AE2CGG<
377AE2CGG<
377AE2CGG<
3#3#3QU;S=M=MNcll3
3<<Q7F
377AE2CGG$G7
3==!a%8#--H
3==!a%8#--H
3==!a%8#--Hs||QU+S\\	
 	s''Q/1A1A	
 	s))1q5133E3E	
= 
rD   cov_type	nonrobustHC0rb   )NTFc           	         | \  }}}t        ||d|      }|j                  ||      }|j                         }|j                          t	        d|j
                  d         D ]  }	t        ||	d      }
t        ||	d      }t        |
|d      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                         t        j                  d
      5  t        t        |j                   |	dz
        |j                   d	       d d d        |j"                  |j"                  k(  sJ |j$                  |j$                  k(  sJ |j                         }t'        |t(        j*                        r7|j,                  |	dz
     }t        j.                  |      j1                  d      }n||	dz
     j2                  }t        ||        y # 1 sw Y   xY w)NrS   rT   )rb   r~   r   rc   )r*   r   rd   re   ignore)invalid)r   r5   )r	   rg   conf_int
cov_paramsr   r   rQ   r   r   rL   tvaluesbsepvaluesfvaluer   errstatef_pvaluer~   rb   rJ   r#   r%   rK   rN   reshapeT)rB   rb   r~   r   r   r/   r\   rx   cir,   r^   r_   rz   wls_cici_vals                  r1   test_against_wls_inferencer      s    GAq!
Q#q
1C
'''
1C	B NN 3
# (Q3Q3"b&)--EH-M
3;;A6D
377AE2CGG<
3;;A6$O
3::q1u5szzB[[* 	3<<Q/D	 ||s||+++yyCII%%%b",,'WWQU^FZZ'//8FAY[[F')(	 	s   +0II%	c                    | \  }}}t        ||dd|      }|j                         }t        j                  |j                        }t        j
                  t        j                  |dd              sJ t        j                  t        j                  |            sy t        ||dd      }|j                         }t        j                  |j                        }t        j                  t        j                  |dd              sJ y )NrS   rc   )rO   r*   r   c   skip)rO   r*   )	r	   rg   r   rN   r:   allisfiniterY   rZ   )rB   r   r   r/   r\   rx   r:   s          r1   
test_raiser      s    GAq!
Q#vq
AC
'')CZZ

#F66"++fRSk*+++66"((1+
Q#v
6C
'')CZZ

#F66"((6#$<()))rD   c                  L   t        ddd      \  } }}t        j                  t        d      5  t	        | |      j                  d       d d d        t        j                  t              5  t	        | |      j                  d	       d d d        t        j                  t        d
      5  t	        | |d       d d d        t        j                  t        d
      5  t	        | |dd       d d d        y # 1 sw Y   xY w# 1 sw Y   {xY w# 1 sw Y   UxY w# 1 sw Y   y xY w)Nr3   r5   Tz reset must be a positive integermatchr   )resetunknown)methodzmin_nobs must be largerr   min_nobs<   rS   )rO   r   )r2   pytestraises
ValueErrorr	   rg   )r   r   _s      r1   
test_errorr      s    sAt$GAq!	z)K	L (1aB'(	z	" /1aI./	z)B	C %1a!$%	z)B	C 21aS12 2( (/ /% %2 2s/   C6+D+DD6C?DDD#c                    | \  }}}t        ||d      j                         }t               }|j                  |       |j	                  dd       |j
                  j                  |      }t        |      t        |      u sJ t               }|j                  |d       |j	                  dd       |j
                  j                  |      }t        |      t        |      u sJ y )Nr   rO   r   T)remove_data)r
   rg   r   saveseek	__class__loadtype)rB   r   r   r/   rx   fhres_unpickleds          r1   test_save_loadr      s    GAq!
Q"
%
)
)
+C	BHHRLGGAqMMM&&r*M$s)+++	BHHRTH"GGAqMMM&&r*M$s)+++rD   c                  ~   t        dddd      \  } }}d}t        j                  | |gd      }t        j                  |d||	      }|j                         }t        | |d
      }|j                         }t        |j                  |j                         t        j                  |d|      }	|	j                          y )Nr3   r4   Tr)   y ~ 1 + x0 + x1 + x2r   axisrS   rO   rB   r   r   )rO   rB   )	r2   r#   concatr	   from_formularg   r   r:   r
   )
r   r   r/   fmlarB   r\   rx   altalt_resols_mods
             r1   test_formular      s    sAtD1GAq!!D99aV!$D

!
!$sq
IC
'')C
Q#
&CggiGCJJ/%%d3TBGKKMrD   c                  V   dd l m}  t        dddd      \  }}}d}t        j                  ||gd      }t        j                  |d	||
      }|j                         }|j                         }t        || j                        sJ |j                  dd d       |j                  dd d       |j                  ddgd d       |j                  dgd d       |j                  g dd d       t        j                  t        d      5  |j                  d       d d d        | j                         }t        j                         5  t        j                   d       |j                  |      }	d d d        	|u sJ |j                  d d       y # 1 sw Y   wxY w# 1 sw Y   /xY w)Nr   r3   r4   Tr   r   r   r   rS   r   r5   )      )	variablesalphafigsizex0)r   x1x2zvariable x4 is not an integerr   x4)r   r   )fig)r   r   )matplotlib.pyplotpyplotr2   r#   r   r	   r   rg   plot_recursive_coefficientrJ   Figurer   r   r   warningscatch_warningssimplefilter)
pltr   r   r/   r   rB   r\   rx   r   rP   s
             r1   	test_plotr      s   #sAtD1GAq!!D99aV!$D

!
!$sq
IC
'')C

(
(
*Cc3::&&&""QdG"L""Tw"O""a&g #  ""&g #  ""$D' #  
z)H	I 7&&&67 **,C		 	 	" 6h',,,56 #::""w"?7 7
6 6s   
F	(FFF(params_onlyTc                    | \  }}}t        ||d      }|j                  d|      }|j                  d|      }|j                  d|      }t        |j                  |j                         t        |j                  |j                         y )N   invr   r   lstsqpinvr
   rg   r   r:   )	rF   r   r   r   r   r\   res_inv	res_lstsqres_pinvs	            r1   test_methodsr     sw    GAq!
Q3
CggUg<GwK@Iwwf+w>HGNNI$4$45GNNHOO4rD   r   )r   r   r   c                     | \  }}}t        ||d      }|j                  |d      }|j                  |d      }t        |j                  |j                         y )Nr   Fr   Tr   )rF   r   r   r   r   r\   rx   res_params_onlys           r1   test_params_onlyr     sS    GAq!
Q3
C
''U'
3CggVg>OO**CJJ7rD   c                    | \  }}}t        j                  t        j                  t        j                  |                  sy t	        ||d      }|j                         }|j                  |j                  dk7     j                         dz   }t	        ||d|      }|j                         }t        j                  |j                  |j                  dk7     |k\        sJ y )Nr   r   r   r   )	r   rY   rZ   rN   r
   rg   r'   minr   )rF   r   r   r/   r\   rx   r   s          r1   test_min_nobsr     s    GAq!66"((2::a=)*
Q3
C
'')CxxA&**,q0H
Q3
2C
'')C66#((388q=)X5666rD   c           	         | \  }}}t        j                  |      }t        ||ddd      }|j                         }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 y )	Nr   2   T)r   	expanding1   r   r   r   )
r   rN   r
   rg   r:   r   rZ   wherecumsumr   )	rF   r   r   r/   xar\   rx   r:   firsts	            r1   test_expandingr   (  s    GAq!	AB
Q3t
<C
'')CZZ

#F66"((6#2;'(((HHRYYrvvbkk"oA>?2EFqI!LE66"++fUVn-...rD   )Fr   F)7ior   	itertoolsr   r   numpyr   r)   r#   r   numpy.testingr   r   statsmodelsr   #statsmodels.regression.linear_modelr   statsmodels.regression.rollingr	   r
   r2   r'   r(   tfr*   listr:   joinmapstrr;   basic_paramsweighted_paramsweighted_idsfixturerB   rF   rH   rL   rQ   r`   r}   markparametrizer   r   r   r   r   
matplotlibr   r   r   r   r   )r?   r   s   00r1   <module>r      sZ         =  3 A4 
	gdD"b'2	3#	?EuQx%(':Q'>%	?.45UsxxC 5#)E%VAY6!9E.4MU}M5B5=M=M7FGeS%)G hv37$ 8$ h|=$ >$ hLI$ J$!
.$
N k5%9:"56( 7 ;(B* 	2,$
 @ @B u65 75 #;<8 =8
7/u 
@5EMGs0   H/H:H 
H+H1H=H#H)