o
    Ö­jG  ã                   @   sZ   d dl Z d dlZd dlmZmZ ddlmZmZ d dl	m
Z
 ddlmZ G dd	„ d	ƒZdS )
é    N)Úassert_equalÚassert_allcloseé   )Únchypergeom_fisherÚ	hypergeom)Ú
odds_ratioé   )Údatac                	   @   s   e Zd Zej de¡dd„ ƒZej dddgddggddgddggddgddggddgddggg¡dd	„ ƒZej d
g d¢g d¢g¡dd„ ƒZ	ejj
ej dg d¢¡dd„ ƒƒZej dddg¡ej dddg d¢g¡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)S )*ÚTestOddsRatiozparameters, rresultc                 C   s
  |j  dd¡}t|jƒ}|jdk rd}d}nd}d}t|j|j|d� | |j|¡}t|j	|j
f|j|d� |j}t |j¡}	|	 ¡ }
|	d	  ¡ }|	d d …d	f  ¡ }|d	krat |
||¡d	 }n|tjkrpt |
||¡d
 }nt |
|||¡}t||	d dd� d
|j }|dkrÅ|j	d	kr¦t |	d d
 |
|||j	¡}t||d dd� t |j
¡rÃt |	d |
|||j
¡}t||d dd� d S d S |dkræt |j
¡rät |	d |
|||j
¡}t||dd� d S d S |j	d	k�rt |	d d
 |
|||j	¡}t||dd� d S d S )NÚ.ú-i�  gü©ñÒMb@?g{®Gáz”?gš™™™™™©?gš™™™™™¹?©Úrtolr   r   )r   r   g‚vIhÂ%<=ú	two-sidedr   g•dyáý¥=Úless)ÚalternativeÚreplacer   ÚtableÚ	statisticr   Úconditional_odds_ratioÚconfidence_intervalÚconfidence_levelÚlowÚhighÚconditional_odds_ratio_ciÚnpÚarrayÚsumr   ÚsupportÚinfr   ÚmeanÚsfÚisfiniteÚcdf)ÚselfÚ
parametersÚrresultr   ÚresultÚor_rtolÚci_rtolÚciÚcorr   ÚtotalÚngoodÚnsampleÚ	nchg_meanÚalphar!   r#   © r1   ú^/var/www/html/CropPilot/venv/lib/python3.10/site-packages/scipy/stats/tests/test_odds_ratio.pyÚtest_results_from_r   sj   

ÿÿÿ	



ÿ

ÿý

ÿý
ÿýz!TestOddsRatio.test_results_from_rr   r   é   é
   c                 C   s:   t |ƒ}t|jtjƒ | ¡ }t|j|jfdtjfƒ d S )Nr   )	r   r   r   r   Únanr   r   r   r   )r$   r   r'   r*   r1   r1   r2   Útest_row_or_col_zeroJ   s   z"TestOddsRatio.test_row_or_col_zeroÚcase)gffffffî?r   g°áŽÜ?;ß?g±¨ˆÓI@)gÍÌÌÌÌÌì?r   g'*Àâá?gUN{JÎi@c           	      C   sb   |\}}}}ddgddgg}t |dd�}t|jddd	� | ||¡}t|j|jg||gdd	� d S )
Nr5   é   é)   é]   Úsample©Úkindg;:®Fv%ò?g�íµ ÷Æ°>r   )r   r   r   r   r   r   )	r$   r8   r   r   Úref_lowÚref_highr   r'   r*   r1   r1   r2   Útest_sample_odds_ratio_ciV   s   z'TestOddsRatio.test_sample_odds_ratio_cir   )r   Úgreaterr   c                 C   s\   ddgddgg}t |dd�}t |dd�}t|j|jdd	� t|j|d
�|j|d
�dd	� d S )Niè  iÐ  i  iT$  r<   r=   Úconditionalgñhãˆµøä>)Úatol©r   gü©ñÒMb`?)r   r   r   r   )r$   r   r   ÚresÚrefr1   r1   r2   Ú#test_sample_odds_ratio_one_sided_cil   s   

þz1TestOddsRatio.test_sample_odds_ratio_one_sided_cir>   r<   rC   Ú	bad_tableé{   Úfoo)r5   é   é   c                 C   s@   t jtdd�� t||d� W d   ƒ d S 1 sw   Y  d S )NzInvalid shape©Úmatchr=   ©ÚpytestÚraisesÚ
ValueErrorr   )r$   r>   rI   r1   r1   r2   Útest_invalid_table_shapey   s   "ÿz&TestOddsRatio.test_invalid_table_shapec                 C   óH   t jtdd�� tddgddggƒ W d   ƒ d S 1 sw   Y  d S )Nzmust be an array of integersrN   g      ð?g333333@g      @gÍÌÌÌÌÌ#@rP   ©r$   r1   r1   r2   Útest_invalid_table_type   ó   "ÿz%TestOddsRatio.test_invalid_table_typec                 C   rU   )Nzmust be nonnegativerN   r   r   é   éüÿÿÿrP   rV   r1   r1   r2   Útest_negative_table_valuesƒ   rX   z(TestOddsRatio.test_negative_table_valuesc                 C   sL   t jtdd�� tddgddggdd� W d   ƒ d S 1 sw   Y  d S )	Nz`kind` must berN   r5   r9   é   é   Úmagnetoreluctancer=   rP   rV   r1   r1   r2   Útest_invalid_kind‡   s   "ÿzTestOddsRatio.test_invalid_kindc                 C   sT   t ddgddggƒ}tjtdd�� |jdd� W d   ƒ d S 1 s#w   Y  d S )	Nr4   r5   r   é    z`alternative` must berN   ÚdeplenerationrE   ©r   rQ   rR   rS   r   )r$   r'   r1   r1   r2   Útest_invalid_alternative‹   s   "ÿz&TestOddsRatio.test_invalid_alternativeÚlevelg      à¿g      ø?c                 C   sT   t ddgddggƒ}tjtdd�� |j|d� W d   ƒ d S 1 s#w   Y  d S )Nr4   r5   r   r`   zmust be between 0 and 1rN   )r   rb   )r$   rd   r'   r1   r1   r2   Útest_invalid_confidence_level�   s   "ÿz+TestOddsRatio.test_invalid_confidence_levelN)Ú__name__Ú
__module__Ú__qualname__rQ   ÚmarkÚparametrizer	   r3   r7   rA   ÚslowrH   rT   rW   r[   r_   rc   re   r1   r1   r1   r2   r
   	   s8    
>ü
ÿÿ
r
   )rQ   Únumpyr   Únumpy.testingr   r   Ú_discrete_distnsr   r   Úscipy.stats._odds_ratior   Ú data.fisher_exact_results_from_rr	   r
   r1   r1   r1   r2   Ú<module>   s    