
    _MhG                     h    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	          ZdS )
    N)assert_equalassert_allclose   )nchypergeom_fisher	hypergeom)
odds_ratio   )datac            	          e Zd Zej                            de          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             Zej                            dg d	g d
g          d             Z	ej        j
        ej                            dg d          d                         Zej                            dddg          ej                            dddg dg          d                         Zd Zd Zd Zd Zej                            dddg          d             ZdS ) TestOddsRatiozparameters, rresultc                    |j                             dd          }t          |j                  }|j        dk     rd}d}nd}d}t          |j        |j        |           |                    |j        |          }t          |j	        |j
        f|j        |           |j        }t          j        |j                  }	|	                                }
|	d	                                         }|	d d d	f                                         }|d	k    rt          j        |
||          d	         }nD|t          j        k    rt          j        |
||          d
         }nt%          j        |
|||          }t          ||	d         d           d
|j        z
  }|dk    r|j	        d	k    r;t%          j        |	d         d
z
  |
|||j	                  }t          ||dz  d           t          j        |j
                  r:t%          j        |	d         |
|||j
                  }t          ||dz  d           d S d S |dk    rRt          j        |j
                  r7t%          j        |	d         |
|||j
                  }t          ||d           d S d S |j	        d	k    r:t%          j        |	d         d
z
  |
|||j	                  }t          ||d           d S d S )N.-i  gMb@?g{Gz?g?g?rtolr   r	   )r   r   gvIh%<=	two-sidedr   gdy=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&   s                    a/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/scipy/stats/tests/test_odds_ratio.pytest_results_from_rz!TestOddsRatio.test_results_from_r   s    ,44S#>>J,--c!!GGGGG(6W	F 	F 	F 	F''
(C(35 5)7+L$	& 	& 	& 	& )**		a1+//## !88!)%@@CIIBF]]!)%@@CII*/ugsKKI	5;U;;;; J//+%%vzz'*5;?+0%"&J JE!G%8888{27## :(,U4[-2E7BGM MU1W5999999: : F""{27## 8(,U4[-2E7BGM MU7777778 8 vzz'*5;?+0%"&J JE666666 z    r   r      
   c                     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-   s       r4   test_row_or_col_zeroz"TestOddsRatio.test_row_or_col_zeroJ   s\     E""V%rv...''))bfbg&BF44444r6   case)gffffff?r   g?;?gI@)g?r   g'*?gUN{Ji@c                     |\  }}}}ddgddgg}t          |d          }t          |j        dd	           |                    ||          }t          |j        |j        g||gd	           d S )
Nr8      )   ]   samplekindg;:Fv%?gư>r   )r   r   r   r   r   r   )	r'   r<   r   r   ref_lowref_highr   r*   r-   s	            r4   test_sample_odds_ratio_ciz'TestOddsRatio.test_sample_odds_ratio_ciV   s     <@8+wbB8$E111((>>>>''(8+FF)GX+>TJJJJJJr6   r   )r   greaterr   c                    ddgddgg}t          |d          }t          |d          }t          |j        |j        d	           t          |                    |
          |                    |
          d	           d S )Ni  i  i  iT$  rA   rB   conditionalgh㈵>)atolr   gMb`?)r   r   r   r   )r'   r   r   resrefs        r4   #test_sample_odds_ratio_one_sided_ciz1TestOddsRatio.test_sample_odds_ratio_one_sided_cil   s    
 d|,X...]333s}4@@@@//K/HH//K/HH!	# 	# 	# 	# 	# 	#r6   rC   rA   rI   	bad_table{   foo)r8         c                     t          j        t          d          5  t          ||           d d d            d S # 1 swxY w Y   d S )NzInvalid shapematchrB   pytestraises
ValueErrorr   )r'   rC   rO   s      r4   test_invalid_table_shapez&TestOddsRatio.test_invalid_table_shapey   s     ]:_=== 	- 	-yt,,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-s   ;??c                     t          j        t          d          5  t          ddgddgg           d d d            d S # 1 swxY w Y   d S )Nzmust be an array of integersrU   g      ?g333333@g      @g#@rW   r'   s    r4   test_invalid_table_typez%TestOddsRatio.test_invalid_table_type   s    ]:-KLLL 	1 	1c
S#J/000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1   ?AAc                     t          j        t          d          5  t          ddgddgg           d d d            d S # 1 swxY w Y   d S )Nzmust be nonnegativerU   r	   r      rW   r]   s    r4   test_negative_table_valuesz(TestOddsRatio.test_negative_table_values   s    ]:-BCCC 	* 	*AB()))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*r_   c                     t          j        t          d          5  t          ddgddggd           d d d            d S # 1 swxY w Y   d S )	Nz`kind` must berU   r8   r>         magnetoreluctancerB   rW   r]   s    r4   test_invalid_kindzTestOddsRatio.test_invalid_kind   s    ]:-=>>> 	G 	GR2r(+2EFFFF	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	Gs   AAAc                     t          ddgddgg          }t          j        t          d          5  |                    d           d d d            d S # 1 swxY w Y   d S )	Nr7   r8   r       z`alternative` must berU   deplenerationrK   r   rX   rY   rZ   r   )r'   r*   s     r4   test_invalid_alternativez&TestOddsRatio.test_invalid_alternative   s    aWq"g.//]:-DEEE 	D 	D&&?&CCC	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D   AAAlevelg      g      ?c                     t          ddgddgg          }t          j        t          d          5  |                    |           d d d            d S # 1 swxY w Y   d S )Nr7   r8   r   rj   zmust be between 0 and 1rU   )r   rl   )r'   ro   r*   s      r4   test_invalid_confidence_levelz+TestOddsRatio.test_invalid_confidence_level   s    aWq"g.//]:-FGGG 	? 	?&&&>>>	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	?rn   N)__name__
__module____qualname__rX   markparametrizer
   r5   r;   rF   slowrN   r[   r^   rc   rh   rm   rq    r6   r4   r   r   	   s!       [2D99<7 <7 :9<7| [W
Q!R
R1a&
Q!R
Q"a	'  5 5 5 [VFFFFFFHI IK KI IK& [[],L,L,LMM	# 	# NM 	# [Vh%>??[[3|||*DEE- - FE @?-1 1 1* * *G G GD D D
 [WtSk22? ? 32? ? ?r6   r   )rX   numpyr   numpy.testingr   r   _discrete_distnsr   r   scipy.stats._odds_ratior    data.fisher_exact_results_from_rr
   r   rx   r6   r4   <module>r~      s         7 7 7 7 7 7 7 7 < < < < < < < < . . . . . . 2 2 2 2 2 2K? K? K? K? K? K? K? K? K? K?r6   