U
    ?h                     @   s   d dl Zd dlmZmZmZmZmZ d dlZd dlm	Z
 d dlmZ d dlmZmZmZmZ dd Zdd	 Zd
d Zdd Zdd Zdd Zdd Zejdddgdd Zdd Zejddddgdd  ZdS )!    N)assert_equalassert_array_equalassert_array_almost_equalassert_approx_equalassert_allclose)raises)xlogy)marginsexpected_freqchi2_contingencyassociationc                  C   sj  t dg} t| }tt|d |d }t|t dg t dgg} t| \}}t dgg}t dgg}t|| t|| t ddd} t| \}}t dgdgg}t ddd	dd
dgg}t|| t|| t dddd} t| \}}}t dggdggg}t dgdgdggg}t ddddggg}t|| t|| t|| d S )N   r               3      
                  B      <   \   |   H   N   )nparrayr	   r   lenr   ZarangeZreshape)amZm0m1Z	expected0Z	expected1m2Z	expected2 r(   T/var/www/html/venv/lib/python3.8/site-packages/scipy/stats/tests/test_contingency.pytest_margins   s2    





r*   c                  C   s   t tdgtdg tddgddggddgddggddgddggg} t| }t |t|  tdddgdddgg} t| }tdddgd	d	d
gg}t|| d S )Nr         ?r   r   r      g      (@g      0@g      2@g      8@)r   r
   r!   r"   Z	ones_liker   )observedeZcorrectr(   r(   r)   test_expected_freq+   s    4r/   c                  C   s   t ddgddgg} t| dd\}}}}t|d t|d t|d t| | t dddg} t| dd\}}}}t|d t|d t|d t| | d S )	Nr   r   F
correctiong        r+   r   r   )r!   r"   r   r   r   obsZchi2pdofexpectedr(   r(   r)   test_chi2_contingency_trivial8   s    






r7   c               	   C   s  t dddgdddgdddgddd	ggd
ddgdddgdddgdddggg} t| \}}}}t|ddd t|dd
d t|d t ddgddggddgddgggddgddggd	dgddgggg} t| \}}}}t|dd
d t|dd
d t|d d S )Nr   "      #             	   r   r   /   r            !      g{GY@   )Zsignificantg"j,5#=   r   r         gjt!@gQI?)r!   r"   r   r   r   r2   r(   r(   r)   test_chi2_contingency_RL   sL    	
&	rI   c                  C   s   t ddgddgg} t| ddd\}}}}t|dt| | |    t| ddd\}}}}| t d	d
gd
d	gg }t|dt|||    t dddgdddgg} t| dd\}}}}t|dt| | |    d S )Nr   r   Z   zlog-likelihoodF)lambda_r1   r   Tg      g      ?r   r   )rK   )r!   r"   r   r   r   sum)cgr4   r5   r.   Zc_corrr(   r(   r)   test_chi2_contingency_g   s    rO   c                  C   s^   t ddgddgg} ttt|  t ddgddgg} ttt|  t d} ttt|  d S )Nr   r   r   r   )r   r   )r!   r"   assert_raises
ValueErrorr   empty)r3   r(   r(   r)   test_chi2_contingency_bad_args   s    
rT   c                  C   s4   t ddgddgg} t| d }t|ddd d S )Ni%  r   r   r   r   g-q=)Zrtol)r!   r"   r   r   )r-   r4   r(   r(   r)   #test_chi2_contingency_yates_gh13875   s    rU   r1   FTc                 C   s@   t ddgddgg}t|| d}t|j|j|j|jf| d S )Nr   r   r0   )r!   r"   r   r   Z	statisticZpvaluer5   r
   )r1   r3   resr(   r(   r)   test_result   s    rW   c                   C   sz   t ttddgddggd t ttddggddgggd t ttddgddggd t tttjddgd	dggtd
d d S )Nr   r   r   r   XcramerrP   r   dd)Zdtype)rQ   rR   r   r!   r"   objectr(   r(   r(   r)   test_bad_association_args   s     r\   zstat, expected)rY   g?)Z	tschuprowg:ǰ`ڳ?)Zpearsong!2q܍?c              	   C   sH   t dddddgddddd	gd
dddd	gg}t|| d}t|| d S )Nr   rA   r   r   r   rF   r@   rB   r<   r>   )r-   method)r!   r"   r   r   )statr6   Zobs1r$   r(   r(   r)   
test_assoc   s    r_   )numpyr!   Znumpy.testingr   r   r   r   r   Zpytestr   rQ   Zscipy.specialr   Zscipy.stats.contingencyr	   r
   r   r   r*   r/   r7   rI   rO   rT   rU   markZparametrizerW   r\   r_   r(   r(   r(   r)   <module>   s,   _
