
    'YHh                     ^    d dl Zd dlZd dlmZ d dlmZm	Z	 d dl
mZmZ d Zd Zd Zd Zd Zy)	    N)BayesGaussMIMI)assert_allcloseassert_equalc                     t        j                  dt         j                  dgt         j                  dt         j                  gdt         j                  dgt         j                  dt         j                  gg dg      } t        |       }t	        |j
                  d   t         j                  d          t	        |j
                  d   t         j                  d          y )N         r   )r	   r
   r   )r   r
   )r   r	   )npasarraynanr   r   patternsr_)xbms     c/var/www/html/planif/env/lib/python3.12/site-packages/statsmodels/imputation/tests/test_bayes_mi.pytest_patr      s    


QNRVVQ$7!RVVQVVQ'4 	5A	aBBKKNBEE$K0BKKNBEE$K0    c                  Z   t         j                  j                  d       t         j                  j                  d      } d}|| d d df   z  t        j                  d|dz  z
        | d d df   z  z   | d d df<   | d d dfxx   dz  cc<   | d d dfxx   dz  cc<   | d d dfxx   dz  cc<   | d d dfxx   dz  cc<   t         j                  j                  | j
                  d         }t         j                  | |dkD  df<   t         j                  j                  | j
                  d         }t         j                  | |dkD  df<   t        |       }t        d	      D ]  }|j                           d}d}d}d}t        d	      D ]z  }|j                          ||j                  z  }||j                  z  }||j                  j                  d      z  }|t        j                  |j                  j                        z  }| |d	z  }|d	z  }|d	z  }|d	z  }t        |t         j                  d
   d       t        |t         j                  d
   d       t        |t        j                   dd|z  gd|z  dgg      d       t        |t        j                   dd|z  gd|z  dgg      d       y )Nij  )  r
   size      ?r   r   r
   r	     )r   g?      	   )r   randomseednormalsqrtshaper   r   rangeupdatemeancovdataTr   r   r   )	r   rur   kr&   r'   dmeandcovs	            r   test_2x2r/      s_    IINN4
		i(AA!Q$i"''!AqD&/!AqD'11AadGadGqLGadGqLGadGqLGadGqLG 			aggaj)A&&Aa!eQhK
		aggaj)A&&Aa!eQhK	aB 3Z 
		 D
CED3Z "
		rvva rwwyy!!" 	CKD3JC	SLECKDD"%%,,E255<-Ca1X!Qx$893?D"**q!A#h1a%9:C@r   c                  (   t         j                  j                  d       t         j                  j                  d      } t         j                  | g ddf<   t         j                  | g ddf<   t         j                  | g dd	f<   t         j                  | g d
df<   d }dD ]  }t         j                  j                  d       t        | j                               }t        |t        j                  |d      }|j                         }|j                          t        |j                  t         j                  d   dd       t        j                  g dg dg dg      }t        |j!                         |dd       t#        j$                  |       }  y )N     r   r   r   r	   r   r   r   r   r	   r   r
         r
   r7      c   r	   c                     t        |       t        j                  u r| d d df   | d d dd f   fS | j                  d d df   j                  | j                  d d dd f   j                  fS Nr   r   )typer   ndarrayilocvaluesr   s    r   model_args_fnztest_MI.<locals>.model_args_fnH   sb     7bjj adGQq!"uX&&FF1a4L''12)=)=>>r   )r   r   &	  )burng"؟agO+cdg0@˹?      ?g,Hz!q?Z~3?ftY6rI   g-xp?ō)?rJ   rL   gpt?333333?)r   r   r    r!   r   r   copyr   smOLSfitsummaryr   paramsr   r   
cov_paramspd	DataFrame)r   rC   jimpmir*   cs          r   test_MIr\   ?   s4   IINN3
		h'AffAilOffAilOAk1nAlAo?  
		t1668$RVV]3FFH			 	"%%0#237	< JJ=<=? @ 	32 LLO#r   c                     t         j                  j                  d       t         j                  j                  d      } | d d dfxx   d| d d df   z  z  cc<   dt        j                  d      z  dt        j                  d      z  g}ddg}t        d	      D ]3  \  }}| j                         }||d d df   z  t        j                  d|d
z  z
        |d d d
f   z  z   |d d d
f<   t         j                  |dddf<   d }t         j                  j                  d       t        |j                               }t        |t        j                  |dd      }|j                         }t        j                  |j                  d   ||   z
        ||   z  }	|	dk  sJ t        j                  |j                  d   ||   z
        }	|	dk  r4J  y )Nr1   )r   r	   r   r   r   r   r   r   )r   gH.?r
   c                 &    | d d df   | d d df   fS r=    rB   s    r   
model_argsz test_MI_stat.<locals>.model_argsz   s     adGQq!tW%%r   rD   d   
   )nrepskipgQ?g?)r   r   r    r!   r"   	enumeraterO   r   r   r   rP   rQ   rR   absbsefmi)
zexprh   rX   r*   r   r`   rY   rZ   ds
             r   test_MI_statrl   d   s    IINN3
		i(AadGs1QT7{G RWWS\>1RWWT]?
+C(C+& 1FFHAadG)bgga!Q$h/!Q$77!Q$ff!C%(	&
 			t1668$RVVZc;FFH FF1558c!f$%A.4xx FF1558c!f$%4xx-r   c                     t         j                  j                  d       t         j                  j                  d      } t         j                  | g ddf<   t         j                  | g ddf<   t         j                  | g dd	f<   t         j                  | g d
df<   t        j                  | d d df   | d d df   | d d d	f   | d d df   d      }d}d }t         j                  j                  d       t        |j                               }t        |t        j                  |d|      }d }|j                  |      }|j                          t        |j                  t         j                   d   dd       t        j"                  g dg dg dg      }t        |j%                         |dd       t'        t)        |j*                        d       y )Nr1   r2   r   r4   r   r5   r   r6   r
   r9   r	   )yx1x2x3zy ~ 0 + x1 + x2 + x3c                 
    d| iS )Nr(   r_   rB   s    r   model_kwds_fnz&test_mi_formula.<locals>.model_kwds_fn   s    {r   rD   )formularE   rs   c                     | S )Nr_   rB   s    r   <lambda>z!test_mi_formula.<locals>.<lambda>   s    1 r   )
results_cbrF   rG   rH   rK   rM   rN      )r   r   r    r!   r   rV   rW   r   rO   r   rP   rQ   rR   rS   r   rT   r   r   rU   r   lenresults)	r   dffmlrs   rY   rZ   rw   r*   r[   s	            r   test_mi_formular}      sy   IINN3
		h'AffAilOffAilOAk1nAlAo	AadG1QT7q!tWAadG5 
6B
 C IINN4
rwwy
!C	C1'
)B J
*%AIIK AHHbee0237< 	

989; 	<A ALLNAsA.QYY$r   )numpyr   pandasrV   statsmodels.apiapirP   statsmodels.imputation.bayes_mir   r   numpy.testingr   r   r   r/   r\   rl   r}   r_   r   r   <module>r      s1       < 71+A\"J&R"%r   