
    _Mh*                         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 d dlmZmZmZmZ d Zd Z G d	 d
          Zd Zej                            dg d          d             ZdS )    N)assert_equalassert_array_equalassert_array_almost_equalassert_approx_equalassert_allclose)raises)stats)xlogy)marginsexpected_freqchi2_contingencyassociationc                  J   t          j        dg          } t          |           }t          t	          |          d           |d         }t          |t          j        dg                     t          j        dgg          } t          |           \  }}t          j        dgg          }t          j        dgg          }t          ||           t          ||           t          j        d                              dd          } t          |           \  }}t          j        dgdgg          }t          j        g dg          }t          ||           t          ||           t          j        d	                              dd
d          } t          |           \  }}}t          j        dggdggg          }t          j        dgdgdggg          }t          j        g dgg          }t          ||           t          ||           t          ||           d S )N   r               3   )r      
   r                  B      <   \   |   )r   r   H   N   )nparrayr   r   lenr   arangereshape)amm0m1	expected0	expected1m2	expected2s           b/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/scipy/stats/tests/test_contingency.pytest_marginsr2      s   
!A

AQ	
1Br28QC==)))
1#AQZZFB1#I1#Ir9%%%r9%%%
	"a##AQZZFB2$&&I000122Ir9%%%r9%%%
	"aA&&AJBBB4&C5'*++IB4"u-.//I+++,-..Ir9%%%r9%%%r9%%%%%    c                     t          t          dg          t          j        dg                     t          j        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          j        |                      t          j        g dg dg          } t          |           }t          j        g dg dg          }t          ||           d S )	Nr         ?r   r   )r   r      )r6   r6   r6   )      (@r7   g      0@)      2@r8   g      8@)r   r   r$   r%   	ones_liker   )observedecorrects      r1   test_expected_freqr=   ,   s    }aS))28SE??;;;x1a&1a&)QFQF+;q!fq!f=MNOOHhAq",x00111x|||455HhAh9::Ga)))))r3   c                   ,   e Zd Zd Zd Zd Zd Zd Zej	        
                    dddg          d	             Zej	        j        d
             Zej	        j        ej	        
                    dej        ej        f          d                         Zd ZdS )TestChi2Contingencyc                    t          j        ddgddgg          }t          |d          \  }}}}t          |d           t          |d           t          |d           t	          ||           t          j        g d          }t          |d          \  }}}}t          |d           t          |d           t          |d           t	          ||           d S )	Nr   r   F
correctiong        r5   )r   r   r   r   )r$   r%   r   r   r   selfobschi2pdofexpecteds         r1   test_chi2_contingency_trivialz1TestChi2Contingency.test_chi2_contingency_trivial:   s     hAA'((!1#%!H!H!HahT3QS!3))) hyyy!!!1#%!H!H!HahT3QS!3)))))r3   c                    t          j        g dg dg dg dgg dg dg dg dgg          }t          |          \  }}}}t          |d	d
           t          |dd           t	          |d           t          j        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           t          |dd           t	          |d           d S )N)r   "      )#         )r       	   )r   r   r   )r   /   rP   )rL   r      )rT         )rR   !      g{GY@   )significantg"j,5#=r      r   rP   r   r   rM         r   gjt!@gQI?)r$   r%   r   r   r   rC   s         r1   test_chi2_contingency_Rz+TestChi2Contingency.test_chi2_contingency_RM   sy   < hllllkkll kkllllkk	  "2#!6!6ahD&a8888Aya8888S"L hBxBxBxBx BxBxBxBx	  "2#!6!6ahD%Q7777Av15555S"r3   c           	      t   t          j        ddgddgg          }t          |dd          \  }}}}t          |dt	          |||z                                            z             t          |dd          \  }}}}|t          j        d	d
gd
d	gg          z   }t          |dt	          |||z                                            z             t          j        g dg dg          }t          |d          \  }}}}t          |dt	          |||z                                            z             d S )Nr   r   Z   zlog-likelihoodF)lambda_rB   r   Tg      g      ?)r   r   r   )r   r   r   )ra   )r$   r%   r   r   r
   sum)rD   cgrG   rH   r;   c_corrs          r1   test_chi2_contingency_gz+TestChi2Contingency.test_chi2_contingency_g   sM   Hr2hR)**'3C38: : :1c11U1ac]]..000111'3C379 9 91c1RXc{S$K89991U66!84488:::;;;HlllLLL122'3CDDD1c11U1ac]]..00011111r3   c                 8   t          j        ddgddgg          }t          t          t          |           t          j        ddgddgg          }t          t          t          |           t          j        d          }t          t          t          |           d S )Nr   r   r   r   )r   r   )r$   r%   assert_raises
ValueErrorr   empty)rD   rE   s     r1   test_chi2_contingency_bad_argsz2TestChi2Contingency.test_chi2_contingency_bad_args   s     hR1a&)**j"2C888 hAA'((j"2C888 hvj"2C88888r3   c                     t          j        ddgddgg          }t          |          d         }t          |dd           d S )Ni%  r   r   r   r   g-q=rtol)r$   r%   r   r   )rD   r:   rG   s      r1   #test_chi2_contingency_yates_gh13875z7TestChi2Contingency.test_chi2_contingency_yates_gh13875   sM     8dAYA/00X&&q)15))))))r3   rB   FTc                     t          j        ddgddgg          }t          ||          }t          |j        |j        |j        |j        f|           d S )Nr   r   rA   )r$   r%   r   r   	statisticpvaluerH   r   )rD   rB   rE   ress       r1   test_resultzTestChi2Contingency.test_result   sX    hAA'((sz:::cmSZ#:KLcRRRRRr3   c                 Z   t          j        d                              dd          }t          |d          j        }t          j        |          j        }t          j        d          }t          |d|          }t          |j        |           t          |j        |d	           d S )
Nr   r   FrA   iP  )n_resamplesrB   methodgV瞯<rn   )r$   r'   r(   r   rr   r	   fisher_exactrs   PermutationMethodr   r   )rD   tableref_statistic
ref_pvaluery   rt   s         r1   test_exact_permutationz*TestChi2Contingency.test_exact_permutation   s    	!$$Q**(5AAAK'..5
(U;;;uvFFFS]M222
JU;;;;;;r3   ry   c                    t           j                            d          }g d}g d}t          j        |||                                          }t          |d ||                    }t          |d          }t          |j        |j                   t          |j
        |j
        d	
           t          |j        t           j                   t          |j        |j                   d S )Nl   {5 )i,  i     )   i  r   i  )seedF)rngrx   rA   g{Gzt?)atol)r$   randomdefault_rngr	   random_tablervsr   r   rr   r   rs   rH   nanr   )rD   ry   r   rowscolsr|   rt   refs           r1   test_resampling_randomizedz.TestChi2Contingency.test_resampling_randomized   s     i##J//###"4C888<<>>uvv#OOOu777S]CM222
CJT::::SWbf%%%S&(9:::::r3   c                 .   t          j        d                              ddd          }t          j                    }d}t          j        t          |          5  t          |d|           d d d            n# 1 swxY w Y   t          j        d                              dd          }t          j                    }d}t          j        t          |          5  t          ||	           d d d            n# 1 swxY w Y   t          j	                    }d
}t          j        t          |          5  t          |dd|           d d d            n# 1 swxY w Y   d}d}t          j        t          |          5  t          |d|           d d d            n# 1 swxY w Y   t          j	        t          j
        j                  }d}t          j        t          |          5  t          |d|           d d d            d S # 1 swxY w Y   d S )Nr   r   z7Use of `method` is only compatible with two-way tables.)matchFrx   r   z+`correction=True` is not compatible with...)ry   z%`lambda_=2` is not compatible with...)rB   ra   ry   herringz;`method='herring'` not recognized; if provided, `method`...)r   z4If the `method` argument of `chi2_contingency` is...)r$   r'   r(   r	   r{   pytestr   rj   r   MonteCarloMethodnormr   )rD   r|   ry   messages       r1   test_resampling_invalid_argsz0TestChi2Contingency.test_resampling_invalid_args   sv   	!$$Q1--(**K]:W555 	E 	EUuVDDDD	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	!$$Q**(**?]:W555 	3 	3U62222	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 '))9]:W555 	P 	PUuaOOOO	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P O]:W555 	E 	EUuVDDDD	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 'EJN;;;H]:W555 	E 	EUuVDDDD	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	EsZ   A99A= A=C::C>C>5EEE?FF"%F"*H

HHN)__name__
__module____qualname__rJ   r^   rf   rl   rp   r   markparametrizeru   slowr   r	   r{   r   r   r    r3   r1   r?   r?   9   s$       * * *&\ \ \|2 2 29 9 9 * * * [\E4=99S S :9S
 [< < < [[X(?(-(>(@ A A; ;A A ;E E E E Er3   r?   c            	      L   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 S )Nr   r   r   r   Xcramerrh   r   dd)dtype)ri   rj   r   r$   r%   objectr   r3   r1   test_bad_association_argsr     s    *kQFQF+;SAAA*kaVH1vh+?JJJ*kRHq!f+=xHHH*k(QFT1I.f===xI I I I Ir3   zstat, expected))r   g?)	tschuprowg:ǰ`ڳ?)pearsong!2q܍?c                     t          j        g dg dg dg          }t          ||           }t          ||           d S )N)r   rU   r   r   r   )r[   r   rT   rV   rP   )rR   r   r   r   rP   )r:   ry   )r$   r%   r   r   )statrI   obs1r)   s       r1   
test_assocr     s_     8))))))(((* + +D 	T$///AAx     r3   )numpyr$   numpy.testingr   r   r   r   r   r   r   ri   scipyr	   scipy.specialr
   scipy.stats.contingencyr   r   r   r   r2   r=   r?   r   r   r   r   r   r3   r1   <module>r      s      , , , , , , , , , , , , , ,  * * * * * *            D D D D D D D D D D D D& & &>
* 
* 
*TE TE TE TE TE TE TE TEn	I 	I 	I )< < <= =! !	= =! ! !r3   