o
    Ö­j¹*  ã                   @   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 d dlmZmZmZmZ dd„ Zd	d
„ ZG dd„ dƒZdd„ Zej dg d¢¡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                  C   s^  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  g d¢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  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Ú	expected2© r/   ú_/var/www/html/CropPilot/venv/lib/python3.10/site-packages/scipy/stats/tests/test_contingency.pyÚtest_margins   s2   





r1   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 g d¢g d¢g¡} t| ƒ}t g d¢g d¢g¡}t||ƒ d S )	Nr   ç      ð?r   r   )r   r   é   )r3   r3   r3   )ç      (@r4   g      0@)ç      2@r5   g      8@)r   r   r"   r#   Ú	ones_liker   )ÚobservedÚeÚcorrectr/   r/   r0   Útest_expected_freq,   s   4r:   c                   @   sŒ   e Z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ej	jdd„ ƒZej	jej	 
dejejf¡dd„ ƒƒZdd„ ZdS )ÚTestChi2Contingencyc                 C   s    t  ddgddgg¡}t|dd�\}}}}t|dƒ t|dƒ t|dƒ t||ƒ t  g d¢¡}t|dd�\}}}}t|dƒ t|dƒ t|dƒ t||ƒ d S )	Nr   r   F©Ú
correctiong        r2   )r   r   r   r   )r"   r#   r   r   r   ©ÚselfÚobsÚchi2ÚpÚdofÚexpectedr/   r/   r0   Útest_chi2_contingency_trivial:   s   






z1TestChi2Contingency.test_chi2_contingency_trivialc                 C   sô   t  g d¢g d¢g d¢g d¢gg d¢g d¢g d¢g d¢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 )N)r   é"   é   )é#   é   é   )r   é    é	   )r   r   r   )r   é/   rJ   )rF   r   é   )rN   é   é   )rL   é!   é   g{®GáŠY@é   )Úsignificantg"„j,5È#=r   é   r   rJ   r   r   rG   é   é   r   gj¼t“„!@g“©‚QI�ä?)r"   r#   r   r   r   r>   r/   r/   r0   Útest_chi2_contingency_RM   sL   ýýüÿ	
&ÿÿþÿÿþüÿ	z+TestChi2Contingency.test_chi2_contingency_Rc                 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  g d¢g d¢g¡}t|dd�\}}}}t|dt||| ƒ ¡  ƒ d S )Nr   r   éZ   zlog-likelihoodF)Úlambda_r=   r   Tg      à¿g      à?)r   r   r   )r   r   r   )rZ   )r"   r#   r   r   r	   Úsum)r?   ÚcÚgrB   rC   r8   Úc_corrr/   r/   r0   Útest_chi2_contingency_g«   s   ÿÿ z+TestChi2Contingency.test_chi2_contingency_gc                 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 )Néÿÿÿÿr   r   r   r   )r   r   )r"   r#   Úassert_raisesÚ
ValueErrorr   Úempty)r?   r@   r/   r/   r0   Útest_chi2_contingency_bad_argsº   s   
z2TestChi2Contingency.test_chi2_contingency_bad_argsc                 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=©Úrtol)r"   r#   r   r   )r?   r7   rB   r/   r/   r0   Ú#test_chi2_contingency_yates_gh13875Ê   s   z7TestChi2Contingency.test_chi2_contingency_yates_gh13875r=   FTc                 C   s@   t  ddgddgg¡}t||d�}t|j|j|j|jf|ƒ d S )Nr   r   r<   )r"   r#   r   r   Ú	statisticÚpvaluerC   r   )r?   r=   r@   Úresr/   r/   r0   Útest_resultÑ   s   zTestChi2Contingency.test_resultc                 C   sf   t  d¡ dd¡}t|dd�j}t |¡j}tjdd�}t|d|d�}t	|j|ƒ t
|j|dd	� d S )
Nr   r   Fr<   iPÃ  )Ún_resamples©r=   ÚmethodgVçž¯Ò<re   )r"   r%   r&   r   rh   r   Úfisher_exactri   ÚPermutationMethodr   r   )r?   ÚtableÚref_statisticÚ
ref_pvaluern   rj   r/   r/   r0   Útest_exact_permutation×   s   z*TestChi2Contingency.test_exact_permutationrn   c                 C   s�   t j d¡}g d¢}g d¢}tj|||d� ¡ }t|d||d�d�}t|dd�}t|j|jƒ t	|j
|j
d	d
� t|jt jƒ t|j|jƒ d S )Nl   ½{5 )i,  iè  é   )éÈ   i�  ru   i¼  )ÚseedF)Úrngrm   r<   g{®Gázt?)Úatol)r"   ÚrandomÚdefault_rngr   Úrandom_tableÚrvsr   r   rh   r   ri   rC   Únanr   )r?   rn   rx   ÚrowsÚcolsrq   rj   Úrefr/   r/   r0   Útest_resampling_randomizedá   s   z.TestChi2Contingency.test_resampling_randomizedc                 C   s˜  t  d¡ ddd¡}t ¡ }d}tjt|d�� t|d|d� W d   ƒ n1 s)w   Y  t  d¡ dd¡}t ¡ }d}tjt|d�� t||d	� W d   ƒ n1 sUw   Y  t 	¡ }d
}tjt|d�� t|dd|d� W d   ƒ n1 szw   Y  d}d}tjt|d�� t|d|d� W d   ƒ n1 sœw   Y  tj	tj
jd�}d}tjt|d�� t|d|d� W d   ƒ d S 1 sÅw   Y  d S )Nr   r   z7Use of `method` is only compatible with two-way tables.)ÚmatchFrm   r   z+`correction=True` is not compatible with...)rn   z%`lambda_=2` is not compatible with...)r=   rZ   rn   Úherringz;`method='herring'` not recognized; if provided, `method`...)r}   z4If the `method` argument of `chi2_contingency` is...)r"   r%   r&   r   rp   Úpytestr   rb   r   ÚMonteCarloMethodÚnormr}   )r?   rq   rn   Úmessager/   r/   r0   Útest_resampling_invalid_argsñ   s6   ÿÿÿÿ"ÿz0TestChi2Contingency.test_resampling_invalid_argsN)Ú__name__Ú
__module__Ú__qualname__rE   rX   r_   rd   rg   r…   ÚmarkÚparametrizerk   Úslowrt   r   rp   r†   r‚   r‰   r/   r/   r/   r0   r;   9   s     ^

	ÿr;   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Úcramerr`   r   Údd)Údtype)ra   rb   r   r"   r#   Úobjectr/   r/   r/   r0   Útest_bad_association_args  s   ÿr•   zstat, expected))r‘   gÀŽ¾ûÿ›·?)Ú	tschuprowg:Ç°¼`Ú³?)Úpearsong!Ã2qÜ�À?c                 C   s6   t  g d¢g d¢g d¢g¡}t|| d�}t||ƒ d S )N)r   rO   r   r   r   )rU   r   rN   rP   rJ   )rL   r   r   r   rJ   )r7   rn   )r"   r#   r   r   )ÚstatrD   Úobs1r'   r/   r/   r0   Ú
test_assoc  s   
þrš   )Únumpyr"   Únumpy.testingr   r   r   r   r   r…   r   ra   Úscipyr   Úscipy.specialr	   Úscipy.stats.contingencyr
   r   r   r   r1   r:   r;   r•   r�   rŽ   rš   r/   r/   r/   r0   Ú<module>   s      Xÿ