
    M/PhNO                        d Z ddlZddlZddlZddlmc mZ ddl	Z
ddlmZmZ ddlmZ ej                            ej                            e                    ZdZej                            ede          Z e
j        e          Zg dZ ej        ddgd	d
gg          ed<    ej        g dg dg dg dg          ed<    ej        g dg dg dg          ed<   d Zd Zd Zd Z d Z!d Z"d Z#d Z$d Z%d Z&d Z'd Z(d  Z)d! Z*d" Z+ G d# d$          Z, G d% d&e,          Z- G d' d(e,          Z. G d) d*e,          Z/ G d+ d,          Z0 G d- d.e0          Z1dS )/z'
Tests for contingency table analyses.
    N)assert_allcloseassert_equalzcontingency_table_r_results.csvresults)NNN            )   !   T   ~   )            )r   r         )r   r         r   )   
   r   )      r   )r   r   (   r   c            	         t          t                    D ]\  } }t          j                            |d          }|                                }t          |j        t          j	        | df                    t          |j
        t          j	        | df                    |                    d          }t          |j        |j        d|j        |                                z  z
  z             d S )NFshift_zeros
homog_stathomog_dfbhapkar)methodr   )	enumeratetablessmstatsSquareTablehomogeneityr   	statistic	r_resultslocdfsum)ktablesthmhmbs        o/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/statsmodels/stats/tests/test_contingency_tables.pytest_homogeneityr3   "   s    V$$ X X%X!!%U!;;^^imA|O&DEEEy}Q
];<<< nnIn..r|q2<%))++;U7U'VWWWWX X    c                     t           j                            d           t          j        t          d          ddg          } t           j                            ddd          | d<   t           j                            ddd          | d<   t          j        | d         | d                   }t          j	        |          }t          j	        
                    |           }t          j	        t          j        |                    }t          |                                                                |                                                                           t          |                                                                |                                                                           t          |          }t          |                    d          d	           t          |j        d
         d           d S )Ni  d   v1v2indexcolumnsr   r   z$A 5x5 contingency table with counts:Tr   r   g       @)nprandomseedpd	DataFramerangerandintcrosstabctabr&   	from_dataasarrayr   summaryas_textstr
startswithr.   )r+   r.   rslt1rslt2rslt3ss         r2   test_SquareTable_from_datarP   /   s   INN3	E#JJt	=	=	=By  As++BtHy  As++BtHK4"T(++EU##E&&r**ERZ..//E((**((**, , , ((**((**, , , 	E

ADEEtLLLT"B'''''r4   c                      g dg dg dg} t          j        | g dg d          }t          j        |d          }t	          j        g d	g d
g dg dgt          j                  }t          ||j                   d S )N)r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   r9   Fr   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   dtype)	r@   rA   rE   r&   r=   rG   float64r   r.   )tabr+   df2es       r2   test_SquareTable_nonsquarerX   F   s    99iii
+C	cIII	>	>	>B

25
1
1
1C

LLL,,,lllK	% 	% 	%A CIr4   c                  l   g dg dg dg} t          j        |           } t          j        |           }|j        }t          |d         dt          d          z             t          |d         dt          d	          z  d
d
           t          t          j        |          |j        d
d
           d S )Nr   r   r   r   r   r         	   r<      7   r   r   -   H   h㈵>atolrtol)	r=   rG   rE   Tablecumulative_oddsratiosr   floatlogcumulative_log_oddsratios)r.   tbl_objcum_oddss      r2   test_cumulative_oddsrp   S   s    YY			999-EJuEjG,HHTNBv$6777HTNVuV}}$<4   BF8$$g&GD* * * * * *r4   c                  L   g dg dg dg} t          j        |           } t          j        |           }|j        }t          |d         d           t          |d         dt          d          z  d	d	
           t          t          j        |          |j        d	d	
           d S )NrZ   r[   r\   r<   g      ?rb      r   re   rf   )	r=   rG   rE   ri   local_oddsratiosr   rk   rl   local_log_oddsratios)r.   rn   loc_oddss      r2   test_local_oddsrv   a   s    YY			999-EJuEjG'HHTNF+++HTNBrN   BF8$$g&BD* * * * * *r4   c                  X   t          j        dt           j                  } t          j        dd          }t	          t          j        | d          j        |            t	          t          j        | d          j        |           t          j        g dg dg d	gt           j                  } t          j        g d
g dg dgt           j                  }t	          t          j        |           j        |           t	          t          j        | d          j        |           d S )N)r   r   rR         ?Fr   T)r   r   r   )r   r   r   )r   r   r   )rx   r   r   )r   rx   r   )r   r   rx   )	r=   zerosrT   fullr   rE   ri   r.   rG   )tresultrs      r2   test_shiftingr~   o   s   
rz***AWVS!!FA51117;;;A40006???

IIIIIII&(j	2 	2 	2A 	
KKKKKKK!(*
	4 	4 	4A A$a(((A40006:::::r4   c                     ddgddggddgddggddgddggg} t          j        |           j        }t          j        |           }t          j        |          }t          |j        |j                   t          |j        |j                   d S )Nr^   r_   r   r]   r   r      )r=   rG   TrE   StratifiedTabler   oddsratio_pooledlogodds_pooled)tab1tab2ct1ct2s       r2   test_stratified_table_cuber      s     VaV1v1v.!Q!R0ABD:dD

t
$
$C

t
$
$CC(#*>???C&(:;;;;;r4   c                     g dg dg} g dg dg}g dg dg}t          j        g dg dg          }t          j        g d	g d
g          }t          j        |           }t	          |j        |dd           t	          |j        |dd           t	          |j        |dd           t	          |j        |dd           d S )N)rr   r^   r	   )   )i3     i     )gh|?6@gh|?1@gS㥛D@@g?5^I3@)gQr@g=
ףpm@g(\W{@g33333p@)g|a2U0j@g1Z@g(\?gNbX96@)g'?gw/?g_vOv?gh o?)g|ns;*g=yHg u5;ѿg}6`F@)g8~?g]:?gW̲?g6)gU朎hg-ջ.gW!<7ֿg0L@)gU朎h@g-ջ.@gW!<7?g0L-C6?rf   )	r=   arrayrE   ri   r   fittedvalueschi2_contribsresid_pearsonstandardized_resids)r.   fitc2prsrrU   s         r2   test_residsr      s$    __2223E ,++***,C
)
)
)
*
*
*
,B 
GGGGGGI 
J 
JB	GGGGGGI 
J 
JB *U

CC$c4@@@@C%r4@@@@C%r4@@@@C+RdFFFFFFr4   c                     t          t                    D ]<\  } }dt          j        |j        d                   z   }dt          j        |j        d                   z   }t          j        |d                              ||          }t          |j	        t          j        | df                    t          |j        t          j        | df                    t          |j        dz  t          j        | df                    t          |j        dz  t          j        | d	f         d
d
           t          |j        t          j        | df         d
d
           t          j        |d                              ||dz            }t          |j	        t          j        | df                    t          |j        t          j        | df                    t          |j        dz  t          j        | df                    t          |j        dz  t          j        | df                    t          |j        t          j        | df         d
d
           >d S )Nr   r   Fr   lbl_stat
lbl_expvalr   lbl_varlbl_chi2re   rh   rg   
lbl_pvalue	lbl2_statlbl2_expvallbl2_var	lbl2_chi2lbl2_pvalue)r"   r#   r=   arangeshaperE   ri   test_ordinal_associationr   r(   r)   r*   	null_meannull_sdzscorepvalue)r-   r.   
row_scores
col_scoresrslts        r2   r   r      s   V$$ \ \%5;q>222
5;q>222
 z%U333LLZYcdd	am(DEEE	ao(FGGGaq)|)DEEEQ	am(D4VZ[[[[Y]1l?%C$UYZZZZ z%U333LLZYcefYfgg	an(EFFF	a6F(GHHHaq*})EFFFQ	an(EFFFY]1m3C%D4VZ[[[[['\ \r4   c                  b   t           j                            d           t           j                            ddd          } ddlm}  ||           }t          j        |                                           }t          |j
        |d                    t          |j        |d                    d S )	Ni'"  r   r   )r   r   )sizer   )chi2_contingencyr   )r=   r>   r?   rC   scipy.statsr   rE   ri   test_nominal_associationr   r(   r   )r.   r   
rslt_scipybs       r2   test_chi2_associationr      s    INN4Ib"622E,,,,,,!!%((J
52244AAKA///AHjm,,,,,r4   c                     t          t                    D ]\  } }t          j                            |d          }|                                }t          |j        t          j	        | df                    t          |j        t          j	        | df                    t          |j        t          j	        | df                    d S )NFr   bowker_stat	bowker_dfbowker_pvalue)r"   r#   r$   r%   r&   symmetryr   r(   r)   r*   r   r+   r   )r-   r.   r/   r   s       r2   test_symmetryr      s    V$$ E E%X!!%U!;;KKMMY]1m3C%DEEEQT9=K8999)-?0B"CDDDDE Er4   c                  >   t          j        t          d         dd          } t          j                            t          d                   }|                                }t          | j        |j                   t          |j
        d           t          j        t          d         dd          }t          |j        t          j        d                    t          j        t          d         d          }t          |j        t          j        d                    d S )	Nr   Fexact
correctionr   T)r   homog_cont_p)r   )r   homog_binom_p)rE   mcnemarr#   r$   r%   r&   r'   r   r(   r   r+   r   r)   r*   )b1r/   b2b3b4s        r2   test_mcnemarr      s     
fQiu	?	?	?B			fQi	(	(B			BBL",/// 
fQiu	>	>	>BBIy}->?@@@ 
fQit	,	,	,BBIy}-?@AAAAAr4   c                     t          j        g dg dg dg          j        } t          j        ddgddggddgddggg          }t
          j                            ddd|           }t          |j	        |           t
          j                            dddt          j        |                     }t          |j	        |           d S )Nr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   )
r@   rA   r   r=   rG   rE   r   rF   r   r.   r+   rW   r   s      r2   test_from_data_stratifiedr      s    	///1I1I1I///1 
2 
223 

aVaV$1v1v&6788A ))!Q266DQ ))!Q2:b>>BBDQr4   c                  t   t          j        g dg dg          j        } t          j        ddgddgg          }t
          j                            | d          }t          |j	        |           t
          j                            t          j        |           d          }t          |j	        |           d S )Nr   r   r   r   r   Fr   )
r@   rA   r   r=   rG   rE   Table2x2rF   r   r.   r   s      r2   test_from_data_2x2r      s    	///1I1I1IJ	K	K	MB

QFQF#$$A =""25"99DQ =""2:b>>u"EEDQr4   c            
      j   g dg dg dg dg dg dg dg dg dg	} t          j        |           } t          j        | d          \  }}}t	          |d	           t	          |d
           g dg dg dg dg dg dg dg dg dg	} t          j        |           } t          j        | d          \  }}}t	          |dd           t	          |d           | d d ddf         }t          j        t          j        |d d df         |d d df                             }t          j        |d          }t          j        |dd          }t	          |j        |j                   t	          |j	        |j	                   t          t          |                              d          d           d S )N)r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   F)return_objectg@r   )r   r   r   r   r   )r   r   r   r   r   )r   r   r   r   r   )r   r   r   r   r   )r   r   r   r   r   )r   r   r   r   r   )r   r   r   r   r   )r   r   r   r   r   g
h"lxz?r   )rh   r   r   r   r   Tr   zdf          1
pvalue      0.65)r=   rG   rE   
cochrans_qr   r@   rD   r   r(   r   r   rJ   rK   )r.   statr   r+   dataxtabr   r   s           r2   test_cochranqr     s   . \\\\\\\\\\\\\\\\\\E JuEuEBBBD&"D#B__________________E JuEuEBBBD&"D&t,,,,B AaC=D:bk$qqq!t*d111a4j99::D	T	2	2	2B	d%E	:	:	:BBL",///BIry))) R##$EFFMMMMMr4   c                   V    e Zd Zedd            Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 ZdS )CheckStratifiedMixinFc                     |s|nt          j        |          }t          j        |          | _        t          j        |d          | _        d |D             }t          j        |          | _        d S )NTr   c                 6    g | ]}t          j        |          S  )r@   rA   ).0xs     r2   
<listcomp>z3CheckStratifiedMixin.initialize.<locals>.<listcomp>M  s     999Qa999r4   )r=   dstackrE   r   r   rslt_0rslt_pandas)clsr#   use_arrtables1tables_pandass        r2   
initializezCheckStratifiedMixin.initializeH  sl     '>&&RYv->->'00)&dCCC
99&999.}==r4   c                 J    t          | j        j        | j        dd           d S Nr   r   )r   r   r   selfs    r2   test_oddsratio_pooledz*CheckStratifiedMixin.test_oddsratio_pooledQ  s4    	2D4I!	. 	. 	. 	. 	. 	.r4   c                 J    t          | j        j        | j        dd           d S r   )r   r   r   r   s    r2   test_logodds_pooledz(CheckStratifiedMixin.test_logodds_pooledV  s4    	0$2E!	. 	. 	. 	. 	. 	.r4   c                     | j                             d          }t          |j        | j        dd           t          |j        | j        dd           d S )NT)r   r   re   r   )r   test_null_oddsr   r(   mh_statr   	mh_pvaluer   r   s     r2   r   z#CheckStratifiedMixin.test_null_odds[  sV    y''4'884dKKKKT^$TJJJJJJr4   c                     | j                                         \  }}t          || j        dd           t          || j        dd           d S r   )r   oddsratio_pooled_confintr   or_lcbor_ucbr   lcbucbs      r2   test_oddsratio_pooled_confintz2CheckStratifiedMixin.test_oddsratio_pooled_confinta  sQ    95577ST[t$????T[t$??????r4   c                     | j                                         \  }}t          |t          j        | j                  dd           t          |t          j        | j                  dd           d S r   )r   logodds_pooled_confintr   r=   rl   r   r   r   s      r2   test_logodds_pooled_confintz0CheckStratifiedMixin.test_logodds_pooled_confintg  s{    93355SRVDK00t!	# 	# 	# 	#RVDK00t!	# 	# 	# 	# 	# 	#r4   c                 ~   t          | d          sd S | j                            d          }t          |j        | j        dd           t          |j        | j        dd           | j                            d          }t          |j        | j        dd           t          |j        | j	        dd           d S )Nor_homogF)adjustr   r   T)
hasattrr   test_equal_oddsr   r(   r   r   
or_homog_por_homog_adjor_homog_adj_pr   s     r2   r  z$CheckStratifiedMixin.test_equal_oddso  s    tZ(( 	Fy(((66DtLLLLT_4dKKKKy(((55(94PPPPT%8t$OOOOOOr4   c                 V   t          j                    5  t          j        dt                     t	          | j                                                                        | j                                                                                   d d d            d S # 1 swxY w Y   d S )Nignore)	warningscatch_warningssimplefilterRuntimeWarningr   r   rH   rI   r   r   s    r2   test_pandasz CheckStratifiedMixin.test_pandas}  s    $&& 	? 	?!(N;;;**,,4466)1133;;==? ? ?	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	?s   A=BB"%B"c           	         t           j                            d           t          j        t          d          d          }t           j                            ddd          |d<   t           j                            ddd          |d<   t          j        t          j        d	          t          j	        d	                    |d
<   g }t          d	          D ]b}t          j        d	|z  d	|dz   z            }|
                    t          j        |j        |df         |j        |df                              ct          j        |          }t          j                            ddd
|          }t!          |                                                                |                                                                           d S )N   r6   )r7   r8   stratr9   r   r   r7   r8   r   r  r   )r=   r>   r?   r@   rA   rB   rC   kronr   onesappendrD   r*   rE   r   rF   r   rH   rI   )r   r+   r#   r-   iirL   rM   s          r2   test_from_dataz#CheckStratifiedMixin.test_from_data  sj   
	s\c

4IJJJ9$$Q3//49$$Q3//4gbimmRWR[[997r 	K 	KA2a4QqS**BMM"+bfRX&6r4x8HIIJJJJ$V,,$..tT7BGGU]]__,,..0G0G0I0IJJJJJr4   N)F)__name__
__module____qualname__classmethodr   r   r   r   r   r   r  r  r  r   r4   r2   r   r   F  s        > > > [>. . .
. . .
K K K@ @ @# # #P P P? ? ?K K K K Kr4   r   c                   (    e Zd ZdZed             ZdS )TestStratified1z
    data = array(c(0, 0, 6, 5,
                   3, 0, 3, 6,
                   6, 2, 0, 4,
                   5, 6, 1, 0,
                   2, 5, 0, 0),
                   dim=c(2, 2, 5))
    rslt = mantelhaen.test(data)
    c                    d gdz  }t          j        ddgddgg          |d<   t          j        ddgddgg          |d<   t          j        ddgddgg          |d<   t          j        ddgddgg          |d<   t          j        ddgddgg          |d<   |                     |           d| _        t          j        d          | _        d	| _        d
| _        d| _        d| _	        d S )Nr   r   r   r   r   r   r   r]   gY8m@gM?g|Vjm?g |(G@)
r=   r   r   r   rl   r   r   r   r   r   r   r#   s     r2   setup_classzTestStratified1.setup_class  s    !Hq!fq!f-..q	Hq!fq!f-..q	Hq!fq!f-..q	Hq!fq!f-..q	Hq!fq!f-..q	v VAYY



r4   Nr  r  r  __doc__r  r  r   r4   r2   r  r    s9            [  r4   r  c                   (    e Zd ZdZed             ZdS )TestStratified2a_  
    library(DescTools)
    data = array(c(20, 14, 10, 24,
                   15, 12, 3, 15,
                   3, 2, 3, 2,
                   12, 3, 7, 5,
                   1, 0, 3, 2),
                   dim=c(2, 2, 5))
    rslt = mantelhaen.test(data)
    bd1 = BreslowDayTest(data, correct=FALSE)
    bd2 = BreslowDayTest(data, correct=TRUE)
    c                    d gdz  }t          j        ddgddgg          |d<   t          j        ddgd	dgg          |d
<   t          j        d	dgd	dgg          |d<   t          j        dd	gddgg          |d	<   t          j        d
dgd	dgg          |d<   |                     |d           d| _        t          j        d          | _        d| _        d| _        d| _        d| _	        d| _
        d| _        d| _        d| _        d S )Nr   r   r   r      r   r   rr   r   r   r   r]   r   T)r   g_)Ǻ@g48'@gq?FB?g,i?g}ZEh@g9m4?gX9v?gV}b?r=   r   r   r   rl   r   r   r   r   r   r   r  r  r  r  s     r2   r  zTestStratified2.setup_class  s!   !Hr2hR122q	Hr2hB011q	Hq!fq!f-..q	Hr1g1v.//q	Hq!fq!f-..q	 	vt,,,%VF^^!

  "#r4   Nr  r   r4   r2   r"  r"    s9          $ $ [$ $ $r4   r"  c                   (    e Zd ZdZed             ZdS )TestStratified3a  
    library(DescTools)
    data = array(c(313, 512, 19, 89,
                   207, 353, 8, 17,
                   205, 120, 391, 202,
                   278, 139, 244, 131,
                   138, 53, 299, 94,
                   351, 22, 317, 24),
                   dim=c(2, 2, 6))
    rslt = mantelhaen.test(data)
    bd1 = BreslowDayTest(data, correct=FALSE)
    bd2 = BreslowDayTest(data, correct=TRUE)
    c                 H   d gdz  }t          j        ddgddgg          |d<   t          j        ddgd	d
gg          |d<   t          j        ddgddgg          |d<   t          j        ddgddgg          |d<   t          j        ddgddgg          |d<   t          j        ddgddgg          |d<   |                     |           d | _        t          j        d           | _        d!| _        d"| _        d#| _        d$| _	        d%| _
        d&| _        d%| _        d&| _        d S )'Nr   i9  i   r   Y   r      ia  r^      r      x   i     r   i           r      5   i+  ^   r   i_     i=  r$  r   gcK?gOec?g6>W[?gZ ?gA%Pi?g=2@g+`?r%  r  s     r2   r  zTestStratified3.setup_class  s=   !HsCj2r(344q	HsCj1b'233q	HsCj3*566q	HsCj3*566q	HsBi#r344q	HsBi#r344q	v'VH--

  $ $(r4   Nr  r   r4   r2   r'  r'    s9          ) ) [) ) )r4   r'  c                   r    e Zd Zed             Zd Zd Zd Zd Zd Z	d Z
d Zd	 Zd
 Zd Zd Zd Zd ZdS )Check2x2Mixinc                     t          j        | j                  | _        t           j                            | j                  | _        d S N)rE   r   r.   rn   rF   r   tbl_data_obj)r   s    r2   r   zCheck2x2Mixin.initialize  s5    mCI..=2238<<r4   c                 D    t          | j        j        | j                   d S r9  )r   rn   	oddsratior   s    r2   test_oddsratiozCheck2x2Mixin.test_oddsratio      .?????r4   c                 D    t          | j        j        | j                   d S r9  )r   rn   log_oddsratior   s    r2   test_log_oddsratioz Check2x2Mixin.test_log_oddsratio       2D4FGGGGGr4   c                 D    t          | j        j        | j                   d S r9  )r   rn   log_oddsratio_ser   s    r2   test_log_oddsratio_sez#Check2x2Mixin.test_log_oddsratio_se       5t7LMMMMMr4   c                 ^    t          | j                                        | j                   d S r9  )r   rn   oddsratio_pvaluer   s    r2   test_oddsratio_pvaluez#Check2x2Mixin.test_oddsratio_pvalue   )    55779NOOOOOr4   c                     | j                             d          \  }}| j        \  }}t          ||           t          ||           d S Ng?)rn   oddsratio_confintr   r   lcb1ucb1lcb2ucb2s        r2   test_oddsratio_confintz$Check2x2Mixin.test_oddsratio_confint$  M    \33D99
d+
dd###d#####r4   c                 D    t          | j        j        | j                   d S r9  )r   rn   	riskratior   s    r2   test_riskratiozCheck2x2Mixin.test_riskratio+  r>  r4   c                 D    t          | j        j        | j                   d S r9  )r   rn   log_riskratior   s    r2   test_log_riskratioz Check2x2Mixin.test_log_riskratio/  rB  r4   c                 D    t          | j        j        | j                   d S r9  )r   rn   log_riskratio_ser   s    r2   test_log_riskratio_sez#Check2x2Mixin.test_log_riskratio_se3  rF  r4   c                 ^    t          | j                                        | j                   d S r9  )r   rn   riskratio_pvaluer   s    r2   test_riskratio_pvaluez#Check2x2Mixin.test_riskratio_pvalue7  rJ  r4   c                     | j                             d          \  }}| j        \  }}t          ||           t          ||           d S rL  )rn   riskratio_confintr   rN  s        r2   test_riskratio_confintz$Check2x2Mixin.test_riskratio_confint;  rT  r4   c                     | j                             d          \  }}| j        \  }}t          ||           t          ||           d S rL  )rn   log_riskratio_confintr   rN  s        r2   test_log_riskratio_confintz(Check2x2Mixin.test_log_riskratio_confintB  sM    \77==
d/
dd###d#####r4   c                     t          | j                                                                        | j                                                                                   d S r9  )r   rn   rH   rI   r:  r   s    r2   r  zCheck2x2Mixin.test_from_dataI  sX    T\))++3355&..0088::	< 	< 	< 	< 	<r4   c                     t          | j                                                                        | j                   d S r9  )r   rn   rH   rI   summary_stringr   s    r2   test_summaryzCheck2x2Mixin.test_summaryM  s@    T\))++3355(	* 	* 	* 	* 	*r4   N)r  r  r  r  r   r=  rA  rE  rI  rS  rW  rZ  r]  r`  rc  rf  r  rj  r   r4   r2   r7  r7    s       = = [=@ @ @H H HN N NP P P$ $ $@ @ @H H HN N NP P P$ $ $$ $ $< < <* * * * *r4   r7  c                   $    e Zd Zed             ZdS )	Test2x2_1c                 "   t          j        d          }g d|d d df<   g d|d d df<   t          j        |          | _        t          j        ddgddgg          | _        d| _        d| _        t          j        d          | _        d	d
g| _	        d| _
        d| _        d| _        dt          j        d          z  | _        d| _        ddg| _        ddg| _        g d}d                    |          | _        |                                  d S )N)r^   r   )r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   g      ?g        gU3?g~3/@gvc?gL%@g,},g,},?)z3               Estimate   SE   LCB    UCB   p-value3---------------------------------------------------z3Odds ratio        1.000        0.063 15.988   1.000z3Log odds ratio    0.000 1.414 -2.772  2.772   1.000z3Risk ratio        1.000        0.250  3.998   1.000z3Log risk ratio    0.000 0.707 -1.386  1.386   1.000rn  
)r=   ry   rG   r   r.   r<  r@  sqrtrD  rM  rH  rV  rY  r\  r_  rb  re  joinri  r   )r   r   sss      r2   r  zTest2x2_1.setup_classU  s,   x---QQQT
---QQQT
:d##JAA/00	!wqzz!57I J! 271::~!!4"4!6%8&8%:!G G G "YYr]]r4   N)r  r  r  r  r  r   r4   r2   rl  rl  S  s-          [  r4   rl  )2r   osr	  numpyr=   $statsmodels.stats.contingency_tablesr%   contingency_tablesrE   pandasr@   numpy.testingr   r   statsmodels.apiapir$   pathdirnameabspath__file__cur_dirfnamerq  fpathread_csvr)   r#   rG   r3   rP   rX   rp   rv   r~   r   r   r   r   r   r   r   r   r   r   r  r"  r'  r7  rl  r   r4   r2   <module>r     s~    
			      3 3 3 3 3 3 3 3 3     7 7 7 7 7 7 7 7      
'//"'//(33
4
4)
Wi//BK	 
		BJR2r(+,,q	BJ***&%$& ' 'q	
 BJ#"

$ % %q	

X 
X 
X( ( (.
 
 
* * ** * *; ; ;"< < <G G G0\ \ \0- - -E E EB B B$          >N >N >NBOK OK OK OK OK OK OK OKd    *   <)$ )$ )$ )$ )$* )$ )$ )$X*) *) *) *) *)* *) *) *)XB* B* B* B* B* B* B* B*J         r4   