
    5[gG                     `    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y)
    N)assert_equalassert_allclose   )nchypergeom_fisher	hypergeom)
odds_ratio   )datac            	          e Zd Zej                  j                  de      d        Zej                  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                  j                  dg d	g d
g      d        Z	ej                  j                  ej                  j                  dg d      d               Zej                  j                  dddg      ej                  j                  dddg dg      d               Zd Zd Zd Zd Zej                  j                  dddg      d        Zy) TestOddsRatiozparameters, rresultc                    |j                   j                  dd      }t        |j                        }|j                  dk  rd}d}nd}d}t        |j                  |j                  |       |j                  |j                  |      }t        |j                  |j                  f|j                  |       |j                  }t        j                  |j                        }	|	j                         }
|	d	   j                         }|	d d d	f   j                         }|d	k(  rt        j                   |
||      d	   }nF|t        j"                  k(  rt        j                   |
||      d
   }nt%        j&                  |
|||      }t        ||	d   d       d
|j                  z
  }|dk(  r|j                  d	kD  r:t%        j(                  |	d   d
z
  |
|||j                        }t        ||dz  d       t        j*                  |j                        r8t%        j,                  |	d   |
|||j                        }t        ||dz  d       y y |dk(  rUt        j*                  |j                        r5t%        j,                  |	d   |
|||j                        }t        ||d       y y |j                  d	kD  r8t%        j(                  |	d   d
z
  |
|||j                        }t        ||d       y y )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                    \/var/www/html/bid-api/venv/lib/python3.12/site-packages/scipy/stats/tests/test_odds_ratio.pytest_results_from_rz!TestOddsRatio.test_results_from_r   s    ,,44S#>J,,-c!GGGG((66W	F''
(C(C(35)7+L+L$	& ))*		a1+//# !8!))%@CIBFF]!))%@CI*//ugsKI	5;U; J///+%vvz'**5;?+0%"&&JE!G%8{{277#(,,U4[-2E7BGGMU1W59 $ F"{{277#(,,U4[-2E7BGGMU7 $ vvz'**5;?+0%"&&JE6     r   r      
   c                     t        |      }t        |j                  t        j                         |j                         }t        |j                  |j                  fdt        j                  f       y )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   sO     E"V%%rvv.'')bffbgg&BFF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	       |j                  ||      }t        |j                  |j
                  g||gd	       y )
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   su     <@8+wbB8$E1(((>''(8+F)GX+>TJr6   r   )r   greaterr   c                     ddgddgg}t        |d      }t        |d      }t        |j                  |j                  d	       t        |j                  |
      |j                  |
      d	       y )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   sn    
 d|,X.]3s}}4@//K/H//K/H!	#r6   rC   rA   rI   	bad_table{   foo)r8         c                 ~    t        j                  t        d      5  t        ||       d d d        y # 1 sw Y   y xY w)NzInvalid shapematchrB   pytestraises
ValueErrorr   )r'   rC   rO   s      r4   test_invalid_table_shapez&TestOddsRatio.test_invalid_table_shapey   s(     ]]:_=yt, >==s   3<c                     t        j                  t        d      5  t        ddgddgg       d d d        y # 1 sw Y   y xY w)Nzmust be an array of integersrU   g      ?g333333@g      @g#@rW   r'   s    r4   test_invalid_table_typez%TestOddsRatio.test_invalid_table_type   s3    ]]:-KLc
S#J/0 MLL	   7A c                     t        j                  t        d      5  t        ddgddgg       d d d        y # 1 sw Y   y xY w)Nzmust be nonnegativerU   r	   r      rW   r]   s    r4   test_negative_table_valuesz(TestOddsRatio.test_negative_table_values   s3    ]]:-BCAB() DCCr_   c                     t        j                  t        d      5  t        ddgddggd       d d d        y # 1 sw Y   y xY w)	Nz`kind` must berU   r8   r>         magnetoreluctancerB   rW   r]   s    r4   test_invalid_kindzTestOddsRatio.test_invalid_kind   s5    ]]:-=>R2r(+2EF ?>>s	   9Ac                     t        ddgddgg      }t        j                  t        d      5  |j	                  d       d d d        y # 1 sw Y   y xY w)	Nr7   r8   r       z`alternative` must berU   deplenerationrK   r   rX   rY   rZ   r   )r'   r*   s     r4   test_invalid_alternativez&TestOddsRatio.test_invalid_alternative   sF    aWq"g./]]:-DE&&?&C FEE   A		Alevelg      g      ?c                     t        ddgddgg      }t        j                  t        d      5  |j	                  |       d d d        y # 1 sw Y   y xY w)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   sF    aWq"g./]]:-FG&&&> HGGrn   N)__name__
__module____qualname__rX   markparametrizer
   r5   r;   rF   slowrN   r[   r^   rc   rh   rm   rq    r6   r4   r   r   	   s   [[2D9<7 :<7| [[W
Q!R
R1a&
Q!R
Q"a	' 55 [[VFFHIKIK& [[[[],LM	# N 	# [[Vh%>?[[[3|*DE- F @-1*GD
 [[WtSk2? 3?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 < . 2K? K?r6   