o
    iG                     @   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rt|	d d
 |
|||j	}t||d dd t|j
rt|	d |
|||j
}t||d dd d S d S |dkrt|j
rt|	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  gMb@?g{Gz?g?g?Zrtolr   r   )r   r   gvIh%<=	two-sidedr   gdy=less)alternativereplacer   table	statisticr   Zconditional_odds_ratioconfidence_intervalconfidence_levellowhighZconditional_odds_ratio_cinparraysumr   Zsupportinfr   meansfisfinitecdf)self
parametersZrresultr   resultZor_rtolZci_rtolciZcorr   totalZngoodZnsampleZ	nchg_meanalphar   r    r&   [/home/kim/smarthome/.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#   r&   r&   r'   test_row_or_col_zeroJ   s   z"TestOddsRatio.test_row_or_col_zerocase)gffffff?r   g?;?gI@)g?r   g'*?gUN{Ji@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 )
Nr*      )   ]   samplekindg;:Fv%?gư>r   )r   r   r   r   r   r   )	r    r-   r   r   Zref_lowZref_highr   r"   r#   r&   r&   r'   test_sample_odds_ratio_ciV   s   z'TestOddsRatio.test_sample_odds_ratio_cir   )r   Z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$  r1   r2   conditionalgh㈵>)Zatolr   gMb`?)r   r   r   r   )r    r   r   resrefr&   r&   r'   #test_sample_odds_ratio_one_sided_cil   s   

z1TestOddsRatio.test_sample_odds_ratio_one_sided_cir3   r1   r5   	bad_table{   Zfoo)r*         c                 C   s@   t jtdd t||d W d    d S 1 sw   Y  d S )NzInvalid shapematchr2   pytestraises
ValueErrorr   )r    r3   r:   r&   r&   r'   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 integersr>   g      ?g333333@g      @g#@r@   r    r&   r&   r'   test_invalid_table_type      "z%TestOddsRatio.test_invalid_table_typec                 C   rE   )Nzmust be nonnegativer>   r   r      r@   rF   r&   r&   r'   test_negative_table_values   rH   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 ber>   r*   r.         Zmagnetoreluctancer2   r@   rF   r&   r&   r'   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 )	Nr)   r*   r       z`alternative` must ber>   Zdeplenerationr6   r   rA   rB   rC   r   )r    r"   r&   r&   r'   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 )Nr)   r*   r   rO   zmust be between 0 and 1r>   )r   rP   )r    rR   r"   r&   r&   r'   test_invalid_confidence_level   s   "z+TestOddsRatio.test_invalid_confidence_levelN)__name__
__module____qualname__rA   markZparametrizer	   r(   r,   r4   Zslowr9   rD   rG   rK   rN   rQ   rS   r&   r&   r&   r'   r
   	   s8    
>

r
   )rA   numpyr   Znumpy.testingr   r   Z_discrete_distnsr   r   Zscipy.stats._odds_ratior   Z data.fisher_exact_results_from_rr	   r
   r&   r&   r&   r'   <module>   s    