
    e!h*                         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j0                  j3                  dg d      d        Zy)    N)assert_equalassert_array_equalassert_array_almost_equalassert_approx_equalassert_allclose)raises)stats)xlogy)marginsexpected_freqchi2_contingencyassociationc                     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      j                  dd      } t        |       \  }}t        j                  dgdgg      }t        j                  g dg      }t        ||       t        ||       t        j                  d	      j                  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        ||       y )N   r               3   )r      
   r                  B      <   \   |   )r   r   H   N   )nparrayr   r   lenr   arangereshape)amm0m1	expected0	expected1m2	expected2s           j/var/www/html/diagnosisapp-backend/venv/lib/python3.12/site-packages/scipy/stats/tests/test_contingency.pytest_marginsr2      s   
!A
AQ	
1Br288QC=)
1#AQZFB1#I1#Ir9%r9%
		"a#AQZFB2$&I01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        ||       y )	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)288SE?;xx1a&1a&)QFQF+;q!fq!f=MNOHhAq",,x01xx|45HhAhh9:Ga)r3   c                   R   e Zd Zd Zd Zd Zd Zd Zej                  j                  dddg      d	        Zej                  j                  d
        Zej                  j                  ej                  j                  dej                  ej                   f      d               Zd Zy)TestChi2Contingencyc                 p   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	        ||       y )	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     hhAA'(!1#%!HahT3QS!3) hhy!!1#%!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       y )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   s   < hh 	 "2#!6ahD&a8Aya8S"L hhBxBxBxBx BxBxBxBx	 "2#!6ahD%Q7Av15S"r3   c           	         t        j                  ddgddgg      }t        |dd      \  }}}}t        |dt	        |||z        j                         z         t        |dd      \  }}}}|t        j                  d	d
gd
d	gg      z   }t        |dt	        |||z        j                         z         t        j                  g dg dg      }t        |d      \  }}}}t        |dt	        |||z        j                         z         y )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   s    HHr2hR)*'3C38:1c11U1ac]..001'3C3791c1RXXc{S$K8991U66!8488::;HHlL12'3CD1c11U1ac]..001r3   c                    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        |       y )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   ss     hhR1a&)*j"2C8 hhAA'(j"2C8 hhvj"2C8r3   c                 r    t        j                  ddgddgg      }t        |      d   }t        |dd       y )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   s:     88dAYA/0X&q)15)r3   rB   FTc                     t        j                  ddgddgg      }t        ||      }t        |j                  |j
                  |j                  |j                  f|       y )Nr   r   rA   )r$   r%   r   r   	statisticpvaluerH   r   )rD   rB   rE   ress       r1   test_resultzTestChi2Contingency.test_result   sN    hhAA'(sz:cmmSZZ#:K:KLcRr3   c                 ^   t        j                  d      j                  dd      }t        |d      j                  }t        j                  |      j                  }t        j                  d      }t        |d|      }t        |j                  |       t        |j                  |d	       y )
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KK''.55
((U;uvFS]]M2

JU;r3   ry   c                    t         j                  j                  d      }g d}g d}t        j                  |||      j                         }t        |d ||            }t        |d      }t        |j                  |j                         t        |j                  |j                  d	
       t        |j                  t         j                         t        |j                  |j                         y )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     ii##J/#""4C8<<>uv#Ou7S]]CMM2

CJJT:SWWbff%S&&(9(9:r3   c                    t        j                  d      j                  ddd      }t        j                         }d}t        j                  t        |      5  t        |d|       d d d        t        j                  d      j                  dd      }t        j                         }d}t        j                  t        |      5  t        ||	       d d d        t        j                         }d
}t        j                  t        |      5  t        |dd|       d d d        d}d}t        j                  t        |      5  t        |d|       d d d        t        j                  t        j                  j                        }d}t        j                  t        |      5  t        |d|       d d d        y # 1 sw Y   XxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)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   s   		!$$Q1-((*K]]:W5 	EUuVD	E 		!$$Q*((*?]]:W5 	3U62	3 '')9]]:W5 	PUuaO	P O]]:W5 	EUuVD	E ''EJJNN;H]]:W5 	EUuVD	E 	E-	E 	E	3 	3
	P 	P
	E 	E
	E 	Es<   F=G
GG"%G.=G
GG"G+.G7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9 * [[\E4=9S :S
 [[< < [[[[X(?(?(-(>(>(@ A;A ;Er3   r?   c            	         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       y )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*kaVH1vh+?J*kRHq!f+=xH*k((QFT1I.f=xIr3   zstat, expected))r   g?)	tschuprowg:ǰ`ڳ?)pearsong!2q܍?c                 r    t        j                  g dg dg dg      }t        ||       }t        ||       y )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     s8     88))(* +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      sv    , ,  *  D D&>
*TE TEn	I )<=!	=!r3   