U
    Kvf                     @   sh   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d Zdd Zdd	 Zd
d Zdd ZdS )    N)BayesGaussMIMI)assert_allcloseassert_equalc               	   C   sv   t dt jdgt jdt jgdt jdgt jdt jgdddgg} t| }t|jd t jd  t|jd t jd  d S )N         r   )r   r   )r   r   )npasarraynanr   r   patternsr_)xbm r   N/tmp/pip-unpacked-wheel-2v6byqio/statsmodels/imputation/tests/test_bayes_mi.pytest_pat   s    $ r   c            	      C   s  t jd t jjdd} d}|| d d df  t d|d  | d d df   | d d df< | d d df  d9  < | d d df  d9  < | d d df  d7  < | d d df  d8  < t jj| jd d}t j| |dkdf< t jj| jd d}t j| |dkdf< t| }td	D ]}|	  qd}d}d}d}td	D ]D}|	  ||j
7 }||j7 }||j
d7 }|t |jj7 }qD|d	 }|d	 }|d	 }|d	 }t|t jd
 d t|t jd
 d t|t dd| gd| dggd t|t dd| gd| dggd d S )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$   ZdmeanZdcovr   r   r   test_2x2   sB    B

&r*   c                  C   s  t jd t jjdd} t j| dddgdf< t j| dddgdf< t j| d	d
dgd	f< t j| d
ddgdf< dd }dD ]}t jd t|  }t|tj	|dd}|
 }|  t|jt jd dd t dddgdddgdddgg}t| |dd t| } qvd S )N     r   r   r   r   r   r   r   r            c   c                 S   sb   t | tjkr2| 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 d S Nr   r   )typer	   ZndarrayZilocvaluesr   r   r   r   model_args_fnH   s    $ztest_MI.<locals>.model_args_fn)r   r   &	  )burng"؟agO+cdg0@˹?      ?,Hz!q?Z~3?ftY6-xp?ō)?pt?333333?)r	   r   r   r   r   r   copyr   smOLSfitsummaryr   paramsr   r
   
cov_paramspd	DataFrame)r   r6   jimpmir'   cr   r   r   test_MI?   s2    
 rO   c            
      C   sf  t jd t jjdd} | d d df  d| d d df  7  < dt d dt d g}ddg}td	D ]\}}|  }||d d df  t d|d
  |d d d
f   |d d d
f< t j|dddf< dd }t jd t| }t	|t
j|ddd}| }t |jd ||  ||  }	|	dk s<tt |jd ||  }	|	dk sntqnd S )Nr+   )r   r   r   r   r   r   r   r   )r   gH.?r   c                 S   s    | d d df | d d df fS r2   r   r5   r   r   r   
model_argsz   s    z test_MI_stat.<locals>.model_argsr7   d   
   )ZnrepskipgQ?g?)r	   r   r   r   r   	enumeraterB   r   r   r   rC   rD   rE   absZbseAssertionErrorfmi)
zexprW   rK   r'   r   rP   rL   rM   dr   r   r   test_MI_statd   s$    	(B r[   c            	      C   s`  t jd t jjdd} t j| dddgdf< t j| dddgdf< t j| d	d
dgd	f< t j| d
ddgdf< t| d d df | d d df | d d d	f | d d df d}d}dd }t jd t| }t	|t
j|d|d}dd }|j|d}|  t|jt jd dd t dddgdddgdddgg}t| |dd tt|jd  d S )!Nr+   r,   r   r   r   r   r   r   r   r.   r/   r0   r1   )yx1Zx2Zx3zy ~ 0 + x1 + x2 + x3c                 S   s   d| iS )Nr%   r   r5   r   r   r   model_kwds_fn   s    z&test_mi_formula.<locals>.model_kwds_fnr7   )Zformular8   r^   c                 S   s   | S )Nr   r5   r   r   r   <lambda>       z!test_mi_formula.<locals>.<lambda>)
results_cbr9   r:   r;   r<   r=   r>   r?   r@   rA      )r	   r   r   r   r   rI   rJ   r   rB   r   rC   rD   rE   rF   r   rG   r   r
   rH   r   lenresults)	r   ZdfZfmlr^   rL   rM   ra   r'   rN   r   r   r   test_mi_formula   s@      
 re   )Znumpyr	   ZpandasrI   Zstatsmodels.apiapirC   Zstatsmodels.imputation.bayes_mir   r   Znumpy.testingr   r   r   r*   rO   r[   re   r   r   r   r   <module>   s   	.%)