
    'YHhl                        d dl mZmZ d dlmZ d dlmZ d dlZd dl	m
Z d dlZd dl	mZ d dlZd dlZd dlmZ d Zd Zd	 Zd
 Z G d d      Z G d d      Z G d d      Zd Z G d d      Zd Zd Zd Zd Z G d d      Z G d de      Z G d de      Z  G d de      Z! G d  d!e      Z" G d" d#e      Z# G d$ d%e      Z$ G d& d'e      Z% G d( d)e      Z& G d* d+e"      Z'y),    )assert_series_equalassert_frame_equal)StringIO)dedentN)assert_equal)rosc                      t        d      } t        j                  |       }|d   |j                  d d df<   |d   dk(  |j                  d d df<   |S )Na  res,qual
2.00,=
4.20,=
4.62,=
5.00,ND
5.00,ND
5.50,ND
5.57,=
5.66,=
5.75,ND
5.86,=
6.65,=
6.78,=
6.79,=
7.50,=
7.50,=
7.50,=
8.63,=
8.71,=
8.99,=
9.50,ND
9.50,ND
9.85,=
10.82,=
11.00,ND
11.25,=
11.25,=
12.20,=
14.92,=
16.77,=
17.81,=
19.16,=
19.19,=
19.64,=
20.18,=
22.97,=
resconcqualNDcensored)r   pandasread_csvloc)raw_csvdfs     ^/var/www/html/planif/env/lib/python3.12/site-packages/statsmodels/imputation/tests/test_ros.pyload_basic_datar      sX    	AG 
	!B5	BFF1f9vJ$.BFF1j=I    c                     t        j                  g dddddddddddddddddddddd	d
dddd	d
ddddddddddddddddddddddddddddddddddddddddddddddddddd
dddddddddddddddddddddddddddddd ddd!d
dddd"d
dddd#ddddd#ddddd$ddddd%dd
ddd&ddddd'ddddd(ddddd)ddddd*ddddd+dd ddd,dd-d      } | S ).NT      @   )r   r   det_limit_indexrank         @      @         #@         &@   F       @r   @{Gz@HzG@p=
ף@q=
ףp@皙@Q@)\(@      @      (\B!@   Qk!@	   {G!@
   33333#@p=
ף%@     &@ffffff(@ףp=
-@Q0@(\1@)\(3@q=
ף03@p=
ף3@Gz.4@Q6@   r   	DataFramer   s    r   load_intermediate_datarF       s   			 $31aH$31aH$ 31aH$ 4AqI	$
 31aH$ 31aH$ 4AqI$ CAqI$ CAqI$ DQJ$ DQJ$ DQJ$ DQJ$ DQJ$ DQJ$  DQJ!$" CAqI#$$ CAqI%$& CAqI'$( DQJ)$* DQJ+$, DQK-$. DQJ/$0 EaK1$2 EaK3$4 EaK5$6 DQJ7$8 EaK9$: EaK;$< EaK=$> EaK?$@ EaKA$B EaKC$D EaLE$F EaLG$ $
BL Ir   c            
         t        j                  g ddddddddddddd	dd
ddd	ddddddddddddddddddddddd	dddddddddddddddddd ddd	dd!dd"dd#ddd$dd%d	d&ddd'dd(d	d)d	dd*dd+dd,ddd-dd.dd/d	dd0dd1dd2ddd3dd4dd5ddd6dd7dd8ddd9dd7dd:d;dd<dd7dd=d>dd?dd@ddAdBddCddDddEdFddGddHddIdJddKddLddMdddNddOddPd	ddQddRddSdddTddRddUd	ddVddWddXdddYddZdd[ddd\dd]dd^ddd_dd`ddad;ddbddcdddd>ddeddfddgdBddhddiddjdFddkddlddmdJddnddoddpdqd      } | S )rNgCB!Tr   r   g$F?)Zprelimr   r   r   plot_posr   gXHg6iqx?r   gJ@r   g$F?gI@r   r   g$F?gXr    r!   gs?gW'>ٿg__?gz0zʿr"   r#   s?g{Fr$   r   g6iqx?r%   g?r&   g)YUZ?gL{br'   <8 E?gMQnr(   g!Rkf?g#ܿr)   gGGt)?g!6|Rf׿r*   g j`?g@>(xҿr+   gL_?g?	$R˿r,   gr8-?g@Dr-   g+$?g?V$kmg{?r.   g.+NƷ?gϋ~K3?r/   gȎE?r0   g+(?r1   g[ T?r2   gj?r3   go4%?r4   g?r5   g?r6   gU	?g?糼k?r7   gyڽN?g?r8   g~?g&.Ef?gyy?gXu?r9   gPuPu?gU?r:   gKK?gK4?r;   g""""""?g?r<   g?gM?r=   g<<?g۸?r>   g]ʥ\ʥ?g%͢?r?   gW|W|?g1_B?r@   g.R.R?gj2
?rA   gr)r)?rB   rC   rE   s    r   load_advanced_datarL   J   s<   			 G'T3*=q	JG (T3*=q	JG
 'D#*=q	JG (T4*<a	IG (T3*=q	JG (T3*=q	JG )dD*=q	JG (UC*>	KG" (UC*=q	J#G& (UD*=q	J'G* (UD*=q	J+G. (UD*=q	J/G2 )eT*<a	I3G6 )eT*=q	J7G: )eT*=q	J;G> )eT*<a	I?GB (UC*<a	ICGF )eS*<a	IGGJ )eS*<a	IKGN (UD*<a	IOGR (UD*<a	ISGV (UD*;R	IWGZ 'E4*<a	I[G^ 'E5*<a	I_Gb 'E5*<a	IcGf 'E5*<a	IgGj 'E4*<a	IkGn 'E5*<a	IoGr 'E5*<a	IsGv 'E5*<a	IwGz 'E5*<a	I{G~ 'E5*<a	IGB &5%*<a	ICGF &5%*<b	JGGJ 'E5*<b	JKG G
BR Ir   c                  H   t        j                  ddddddddddddddddd	ddd
dd
ddddddddddddddddddt        j                  dt        j                  t        j                  t        j                  t        j                  dt        j                  dg      } | S )Nr$                 @      ?r   lower_dl
ncen_equal
nobs_belownuncen_aboveprob_exceedanceupper_dlK?r         @r         "@      $@܄?r          5@]R0?r"         8@AA?)r   rD   numpyinfnan)cohns    r   load_basic_cohnre      s    3#	G31DRU	W31DRV	XC2DRU	W41DRV	XD2ESXS\S\	^YYeiiuyys			S D  Kr   c                       e Zd Zd Zd Zd Zy)Test__ros_sortc                    t               | _        t        j                  g ddddddddddddddddddddddd	ddd
ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd ddd!d      d"d#g   | _        | j                  j
                  d d$ | _        y )%NTr   )r   r   r   r   r    r"   Fr$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r0   r2   r4   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   r   r   )r   r   r   rD   expected_baselineilocexpected_with_warningselfs    r   setup_methodzTest__ros_sort.setup_method   sd   !#!'!1!1 3
,3
=AC0P3
,3
=AD0Q3
 ,3
 >BC0P3
 -	3
 >CC0P	3

 ,3

 >CD0Q3
 -3
 >CD0Q3
 -3
 >CD0Q3
 -3
 >CD0Q3
 ,3
 >CC0P3
 ,3
 >CD0Q3
 -3
 >CD0Q3
 -3
 >CE0R3
 .3
 >CE0R3
 -3
 >CE0R3
 .3
 >CE0R3
  .!3
  >CE0R!3
" .#3
" >CE0R#3
$ .%3
 "& J'"!* &*%;%;%@%@"%E"r   c                 r    t        j                  | j                  dd      }t        || j                         y )Nr   r   )r   	_ros_sortr   r   rj   rn   results     r   test_baselinezTest__ros_sort.test_baseline   s(    tww
;64#9#9:r   c                     | j                   j                         }|d   j                         }d|j                  |df<   t	        j
                  |dd      }t        || j                         y )Nr   Tr   )r   copyidxmaxr   r   rq   r   rl   )rn   r   max_rowrs   s       r   test_censored_greater_than_maxz-Test__ros_sort.test_censored_greater_than_max   sX    WW\\^V*##%&*w
"#r6:664#=#=>r   N)__name__
__module____qualname__ro   rt   ry    r   r   rg   rg      s    F4;?r   rg   c                       e Zd Zd Zd Zd Zy)Test_cohn_numbersc                    t               | _        g d| _        t        j                  ddddddddddddd	dd	dd
dddddddddddddddddddddddt
        j                  dt
        j                  t
        j                  t
        j                  t
        j                  dt
        j                  dg      | j                     | _        y )N)rR   rW   rU   rT   rS   rV   r$   rN   rO   rP   r   rQ   rX   r   rY   r   rZ   r[   r\   r    r]   r^   r"   r_   r`   )	r   r   
final_colsr   rD   ra   rb   rc   rj   rm   s    r   ro   zTest_cohn_numbers.setup_method   s    !#< "(!1!1Cs ScKCs 5HVY[Cs 5HVZ\S!6HVY[Ct 5HVZ\S!6IW\W`W`b%))599"YY3EIIW3
 " ??"r   c                 t    t        j                  | j                  dd      }t        || j                         y )Nr   r   observations
censorship)r   cohn_numbersr   r   rj   rr   s     r   rt   zTest_cohn_numbers.test_baseline   s*    !!$'':V64#9#9:r   c                     | j                   j                         }d|d<   t        j                  |dd      }|j                  dk(  sJ y )NFr   r   r   )r   r.   )r   rv   r   r   shape)rn   _dfrs   s      r   test_no_NDszTest_cohn_numbers.test_no_NDs   s@    ggllnF!!#FvN||v%%%r   N)rz   r{   r|   ro   rt   r   r}   r   r   r   r      s    .;&r   r   c                   $    e Zd Zd Zd Zd Zd Zy)Test__detection_limit_indexc                 |    t               | _        t        j                  t	        j
                  d            | _        y )N)r   r/   )re   rd   r   rD   ra   empty
empty_cohnrm   s    r   ro   z(Test__detection_limit_index.setup_method   s'    #%	 **5;;v+>?r   c                 X    t        t        j                  d | j                        d       y Nr   )r   r   _detection_limit_indexr   rm   s    r   
test_emptyz&Test__detection_limit_index.test_empty   s    S//dooFJr   c                     t        t        j                  d| j                        d       t        t        j                  d| j                        d       t        t        j                  d| j                        d       y )N      @r   rY   r         (@r#   )r   r   r   rd   rm   s    r   test_populatedz*Test__detection_limit_index.test_populated   sS    S//TYY?CS//TYY?CS//dii@!Dr   c                     t        j                  t              5  t        j                  d| j
                         d d d        y # 1 sw Y   y xY wr   )pytestraises
IndexErrorr   r   rd   rm   s    r   test_out_of_boundsz.Test__detection_limit_index.test_out_of_bounds  s7    ]]:& 	5&&q$))4	5 	5 	5s   !AAN)rz   r{   r|   ro   r   r   r   r}   r   r   r   r      s    @KE
5r   r   c            	      P   t        j                  dgdz  t        d      t        d      z   t        t        d            d      } t	        j
                  | dd      }t        j                  g dd	
      }t        |j                  t              |j                  t                     y )Nr      AABCCCDEDCBA)dl_idxparamsvaluesr   r   )r   r   r   r   r   r   r   r   r   r!   r   r   r   )name)
r   rD   listranger   _ros_group_rankSeriesr   astypeint)r   rs   expecteds      r   test__ros_group_rankr     s    			#(z"T&\1uRy/ 
B   Xx8F}}AOHc*HOOC,@Ar   c                   *    e Zd Zd Zd Zd Zd Zd Zy)Test__ros_plot_posc                 "    t               | _        y )N)re   rd   rm   s    r   ro   zTest__ros_plot_pos.setup_method  s    #%	r   c                 j    dddd}t        j                  |d| j                        }t        |d       y )NFr   r   r   r   r   r   rK   r   _ros_plot_posrd   r   rn   rowrs   s      r   test_uncensored_1z$Test__ros_plot_pos.test_uncensored_1  s1     QB""3
DII>V01r   c                 j    dddd}t        j                  |d| j                        }t        |d       y )NFr   r   r   r   g}?r   r   s      r   test_uncensored_2z$Test__ros_plot_pos.test_uncensored_2  s1     QC""3
DII>V01r   c                 j    dddd}t        j                  |d| j                        }t        |d       y )NTr#   r!   r   r   g__?r   r   s      r   test_censored_1z"Test__ros_plot_pos.test_censored_1!  s1    AqA""3
DII>V/0r   c                 j    dddd}t        j                  |d| j                        }t        |d       y )NTr!   r   r   r   rJ   r   r   s      r   test_censored_2z"Test__ros_plot_pos.test_censored_2&  s1    AqA""3
DII>V01r   N)rz   r{   r|   ro   r   r   r   r   r}   r   r   r   r     s    &2
2
1
2r   r   c                      t        j                  g d      } t        j                  g d      }t	        j
                  | |       y )N)r   r   r   r!   )gT]?g`>?gO:`?gyj?)r   _norm_plot_posra   arraynptassert_array_almost_equal)rs   r   s     r   test__norm_plot_posr   ,  s1    -F{{GHH!!&(3r   c                      t               } t               }t        j                  | d|      }t	        j
                  g d      }t        j                  ||       y )Nr   )#g@,U?眤Uqx?^c@?r   g?g_?g?gaˀqx?r   gBUZ?geL$E?gKnf?g*?gh	?gޮ_?gqo-?g> ?g{X={?gK3?g m(?g(?g1^?g?g}N?g"}?gCy?g&(Nu?gC"
K?g`C#""?g p?g!R<?gB4_ʥ?gb W|?g!/R?gr)?)rF   re   r   plotting_positionsra   r   r   r   )r   rd   resultsr   s       r   test_plotting_positionsr   2  sK    		!BD$$RT:G{{  H !!'84r   c                      t        j                  g d      } t               }t        j                  |ddt         j
                  t         j                        }|d   j                  }t        j                  ||        y N)#gC@gَ@7!/@r   g@gKڿx@gQP@r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r-   r-   r0   r2   r4   r6   r7   r8   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   r   r   final)
ra   r   rL   r   _imputelogexpr   r   r   r   r   rs   s      r   test__imputer   C  s\    {{ 
 
H 
	B	RUYY			BB[F!!&(3r   c                      t        j                  g d      } t               }t        j                  |ddt         j
                  t         j                        }|d   j                  }t        j                  ||        y r   )
ra   r   r   r   _do_rosr   r   r   r   r   r   s      r   test__do_rosr   U  s\    {{ 
 
H 
	B	RUYY			BB[F!!&(3r   c                       e Zd Zd Zd Zd Zy)CheckROSMixinc                     t        j                  | j                  | j                  | j                        }t        j                  t        |      t        | j                        | j                         y NrE   )decimal)
r   
impute_rosrescolcencolr   r   r   sortedexpected_finalr   rr   s     r   test_ros_dfzCheckROSMixin.test_ros_dfi  sJ    T[[TWWE%%6N4&&'LL	
r   c                    t        j                  | j                  | j                     | j                  | j                     d       }t        j                  t        |      t        | j                        | j                         y r   )
r   r   r   r   r   r   r   r   r   r   rr   s     r   test_ros_arrayszCheckROSMixin.test_ros_arraysq  sX     4dggdkk6JtT%%6N4&&'LL	
r   c                     g d}t        j                  | j                  | j                  | j                        }t        t        j                  ||   d      t        j                  | j                  |   d             y )NrU   rT   rS   rV   r   )	r   r   r   r   r   r   nproundexpected_cohn)rn   colsrd   s      r   	test_cohnzCheckROSMixin.test_cohny  s^    
 dkkBHHT$Z#HHT''-q1	
r   N)rz   r{   r|   r   r   r   r}   r   r   r   r   h  s    



r   r   c            	          e Zd ZdZdZ ej                  g d      Z ej                  g d      ZdZ	dZ
 ej                  e	ee
ei      Z ej                  g d      Z ej                   ej                  dd	ej                  g       ej                  d	d
ej                  g       ej                  d	dej                  g       ej                  g d      d      Zy)Test_ROS_HelselAppendixBz
    Appendix B dataset from "Estimation of Descriptive Statists for
    Multiply Censored Water Quality Data", Water Resources Research,
    Vol 24, No 12, pp 1997 - 2004. December 1988.
    r   rP   rP   rP   rP   rP   rP   r[   r[   r[   rO         @rZ   r         .@      4@      ;@     @@      I@)TTTTTTTTTFFFFFFFFFobscen)gGz?g333333?g(\?gRQ?g)\(?gQ@g      @rO   g=
ףp=@g333333@r   rZ   r   r   r   r   r   r   rO   rY   r   )g%?g1ZGU?rN   r   Nrz   r{   r|   __doc__r   ra   r   r
   r   r   r   r   rD   r   r   rc   r   r}   r   r   r   r     s    
 G
%++  C %++  C
 FF			634	5B U[[ " N
 %F$$#S#uyy$9:!ekk3eii"89!ekk3UYY"78&5;;'>?	& Mr   r   c                      e Zd ZdZdZ ej                  g d      Z ej                  g d      ZdZ	dZ
 ej                  e	ee
ei      Z ej                  g d      Z ej                   ej                  dd	d
d
ej                  g       ej                  ddddej                  g       ej                  dd	ddej                  g       ej                  g d      d      Zy)Test_ROS_HelselArsenica!  
    Oahu arsenic data from Nondetects and Data Analysis by
    Dennis R. Helsel (John Wiley, 2005)

    Plotting positions are fudged since relative to source data since
    modeled data is what matters and (source data plot positions are
    not uniformly spaced, which seems weird)
    r   )皙	@ffffff@r$   r$   r$   r$   r$   r$   r$   r$   333333?      ?rP   rP   rP   rP   ?r   ffffff?r   333333?      ?r   r   )FFTTTTTTTTFFTTTTFTFFFFFFr   r   )r   r   gQ?g=
ףp=?gffffff?Q?g(\?g=
ףp=?gq=
ףp?gffffff?r   r   g\(\?gRQ?g(\?g=
ףp=?r   gQ?r   r   r   r   r   r   rY   rP   r$   rN   r   r   g      6@      @       @)rP   g      ?g=m?g&S?rN   r   Nr   r}   r   r   r   r     s     G
%++  C %++  C FF			634	5B U[[ " N %F$$#S#sC$CD!ekk3T4"CD!ekk3S#uyy"AB&5;;'JK	& Mr   r   c            
          e Zd ZdZ e ed            ZdZdZ e	j                  ed      Z ej                  g d      Z e	j                   ej                  dd	d
ej                   g       ej                  dddej                   g       ej                  dddej                   g       ej                  g d      d      Zy)Test_ROS_RNADAdatar   a          res cen
        0.090  True
        0.090  True
        0.090  True
        0.101 False
        0.136 False
        0.340 False
        0.457 False
        0.514 False
        0.629 False
        0.638 False
        0.774 False
        0.788 False
        0.900  True
        0.900  True
        0.900  True
        1.000  True
        1.000  True
        1.000  True
        1.000  True
        1.000  True
        1.000 False
        1.000  True
        1.000  True
        1.000  True
        1.000  True
        1.000  True
        1.000  True
        1.000  True
        1.000  True
        1.000  True
        1.000  True
        1.000  True
        1.000  True
        1.100 False
        2.000 False
        2.000 False
        2.404 False
        2.860 False
        3.000 False
        3.000 False
        3.705 False
        4.000 False
        5.000 False
        5.960 False
        6.000 False
        7.214 False
       16.000 False
       17.716 False
       25.000 False
       51.000 Falser
   r   z\s+)sep)2g6j?g}%?gM"?gB`"۹?g rh?g(\?gsh|??g r?gT㥛 ?g"~j?gS㥛?gK7?gJ	c?πz3*?gN?g&V?g7F?gV?gqC/7?gɹEGϹ?rP   gzc?gfD̙+?gcT?r  g-?g",(?gG4L?gL6S?g?ΰ(W~?gR*?gZKfd?gJE?g?r$   r$   gZd;@gzG@rO   rO   gp=
ף@r  r   gףp=
@rY   gB`"@g      0@gK1@g      9@g     I@rZ   rN   g      2@rO   r   g      @@      1@)gzG?
ףp=
?r  r   r   N)rz   r{   r|   r   r   r   
datastringr   r   r   r   r   ra   r   r   rD   rc   r   r}   r   r   r  r    s    G& 3" 3 3Jh FF		0B U[[ " N %F$$#Rc599$=>!ekk2sC";<!ekk2r3		":;&5;;'<=	& Mr   r  c                      e Zd ZdZej
                  j                  d       dZej
                  j                  e      Z	dgez  Z
dZdZ ej                  ee	ee
i      Z ej                   g d      Z ej                   ej                   g        ej                   g        ej                   g        ej                   g       d	      Zy
)Test_NoOp_ZeroNDr   r      )sizeFr   r   )RQ?Q?r   Q?r   Gz?ffffff?Q?ffffff?ףp=
?)\(?(\?Q@Q@HzG@Q@ףp=
@\(\@zG@"@r   N)rz   r{   r|   r   ra   randomseedN	lognormalr
   r   r   r   r   rD   r   r   r   r   r}   r   r   r  r    s    G	LLa
A
,,
 
 a
 
(C'A+CFF			634	5B U[[ " N %F$$#B!ekk"o!ekk"o&5;;r?	& Mr   r  c            	          e Zd ZdZ ej
                  g d      Z ej
                  g d      ZdZdZ	 e
j                  eee	ei      Z ej
                  g d      Z e
j                   ej
                  dej                  g       ej
                  dej                  g       ej
                  dej                  g       ej
                  d	d
g      d      Zy)Test_ROS_OneNDr   r   )TFFFFFFFFFFFFFFFFFr   r   )gQ?rP   rP   rP   rP   rP   r[   r[   r[   rO   r   rZ   r   r   r   r   r   r   r  rP   g~!<8?rN   r   Nrz   r{   r|   r   ra   r   r
   r   r   r   r   rD   r   r   rc   r   r}   r   r   r%  r%  2  s    G
%++  C %++  C
 FF			634	5B U[[ " N
 %F$$#T599$56!ekk3		"23!ekk3		"23&5;;~6	& Mr   r%  c                      e Zd ZdZ ej
                  g d      Z ej
                  g d      ZdZdZ	 e
j                  eee	ei      Z ej
                  g d      Z e
j                   ej
                  ddddddddej                  g	       ej
                  d	d
ddddddej                  g	       ej
                  d	dddddddej                  g	       ej
                  dgdz  dgz         d      Zy)Test_HalfDLs_80pctNDsr   r   )TTTTTTTTTTTTTTTFFFvaluer   )r   r   r   r   r   r   r   r   r   r   r   g      @rY   r-   r[   r   r   r   rN   rO   rY   r   r  rZ   r   g      *@g      ,@r   rP   gKqU?r1   r   Nr&  r}   r   r   r(  r(  M  s   G
%++  C %++  C
 FF			634	5B U[[ " N
 %F$$#RRRRUYY$OP!ekk2r2r3S#uyy"QR!ekk2r2r2r2r599"MN&5;;y1}t';<	& Mr   r(  c            	          e Zd ZdZ ej
                  g d      Z ej
                  g d      ZdZdZ	 e
j                  eee	ei      Z ej
                  g d      Z e
j                   ej
                  ddej                  g       ej
                  d	d
ej                  g       ej
                  d	dej                  g       ej
                  g d      d      Zy)Test_HaflDLs_OneUncensoredr   )rP   rP   r   r   )TTTFr)  r   )r   r   rY   r   rN   rP   r$   rO   )      ?r,  rN   r   Nr&  r}   r   r   r+  r+  h  s    G
%++,
-C
%++0
1CFF			634	5B U[[!:;N$F$$#RUYY$78!ekk2r599"56!ekk2r599"56&5;;'78	& Mr   r+  c                   \    e Zd Z ej                  g d      Z ej                  g d      Zy)Test_ROS_MaxCen_GT_MaxUncen)rP   rP   rP   rP   rP   rP   r[   r[   r[   rO   r   rZ   r   r   r   r   r   r   <   F   )TTTTTTTTTFFFFFFFFFTTN)rz   r{   r|   ra   r   r
   r   r}   r   r   r.  r.  y  s.    
%++  C
 %++  Cr   r.  c                   d    e Zd Zej                  j                  d       dZg dZdgez  ddgz   Zy)Test_ROS_OnlyDL_GT_MaxUncenr   r  )r  r  r   r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r[   r[   FTN)	rz   r{   r|   ra   r   r!  r"  r
   r   r}   r   r   r2  r2    s6    	LLa
AC
 7Q;4,
&Cr   r2  )(statsmodels.compat.pandasr   r   ior   textwrapr   ra   r   numpy.testingtestingr   r   r   r   statsmodels.imputationr   r   rF   rL   re   rg   r   r   r   r   r   r   r   r   r   r   r   r  r  r%  r(  r+  r.  r2  r}   r   r   <module>r9     s    M      &   &'TJZ($? $?N &  &F5 5$	B2 2245"4$4&
 
<} @$] $NK K\} .] 6M 6 "
": 
'"2 'r   