U
    Kvf`                     @   sx  d Z ddlZddlZddlmZmZmZmZm	Z	 ddl
ZddlZddlm  mZ ddlmZmZmZmZmZmZ ddlmZ ddlmZ ddlmZmZ dd	d
dddZej deej dedd Z!ej dedd Z"dd Z#dd Z$dd Z%dd Z&dd Z'G dd dZ(G d d! d!e(Z)d"d# Z*d$d% Z+d&d' Z,d(d) Z-d*d+ Z.d,d- Z/d.d/ Z0d0d1 Z1d2d3 Z2d4d5 Z3d6d7 Z4d8d9 Z5d:d; Z6d<d= Z7d>d? Z8ej d@e9dAdBdCej de:e; dDg ej dEdFdGgdHdI Z<ej dJdKdLgej d@e9dMej dEdFdGgdNdO Z=dPdQ Z>ej d@e9dAdBdCej de:e; dDg dRdS Z?dS )Tz>

Created on Fri Mar 01 14:56:56 2013

Author: Josef Perktold
    N)assert_allcloseassert_almost_equalassert_array_lessassert_equalassert_raises)confint_proportions_2indepmultinomial_proportions_confintpower_proportions_2indepproportion_confint%samplesize_proportions_2indep_onetailscore_test_proportions_2indep)HypothesisTestWarning)Holder)	res_binomres_binom_methodszagresti-coullZ
asymptoticexactwilsonZbayes)Zagresti_coullnormalbetar   jeffreyscasemethodc                 C   s   |\}}t t|  }t| j| }t| j| }t|sFt|rPt	d |dks`||krr| dkrrt	d | dkr|dkrt	d t
||d| d}t|d}t|d	}t|||gd
t||  d d S )NzSkipping due to NaN valuer   r   z%Skipping nobs 0 or count and jeffreys   z<Skipping nobs is 30 and jeffreys due to extreme case problem皙?alphar         decimalerr_msg)r   indexprobci_methodsr   ci_lowci_uppnpisnanpytestskipr
   maxminr   repr)r   r   countnobsidxZres_lowZres_uppci r0   K/tmp/pip-unpacked-wheel-2v6byqio/statsmodels/stats/tests/test_proportion.pytest_confint_proportion)   s     





r2   c                 C   s  t ddd}dt d }t|}t|}t||d| d}t||d| d}t||d j|d	 jfd
d t|d |d d| d}t|d jd |d	 jd f|d
d t|d d |d	 d f|d
d t|	 |	 d| d}t||d |d	 fd
d t|j
d |j
d d| d}	t|	d j|	d	 jf|d jd |d	 jd fd
d t||d d| d}
t|
d d |d	 d f|d
d t|d |d d| d}
t|
d d |d	 d f|dd d S )Nr         
   )r3   r4   r   r   r   r   vIh%<=Zrtol)r   r3   -C6?)r%   arangereshapeonespdZ	DataFramer
   r   valuestolistZiloc)r   r,   r-   Zcount_pdZnobs_pdZci_arrZci_pdZci12Zci_liZci_pdsZci_arr2r0   r0   r1   test_confint_proportion_ndim@   sH    

"  "r?   c                  C   sH   d} t jd| ddd}t d|  |d |d  d	 }t|| d
d d S )N      r   r   r   g      (@r   r   r3      r   )smpropr
   Zsamplesize_confint_proportionr   )r-   r/   resr0   r0   r1   'test_samplesize_confidenceinterval_propl   s     rF   c                  C   s   t dd} t| ddd d S )N      ?皙?gAJ?rB   rC   )rD   Zproportion_effectsizer   )esr0   r0   r1   test_proportion_effect_sizes   s    rJ   c                  C   sR   ddl m}  |  D ]8\\}}}t|jd|d}t|j||jd||f d qd S )Nr   )res_multinomialr   r   z"%s" method, %sr   )Z'results.results_multinomial_proportionsrK   itemsr   Zproportionsr   cisZ	precision)rK   r   descriptionr=   rN   r0   r0   r1   $test_confint_multinomial_proportionsx   s      
rP   c                  C   sZ   dD ]} t ttdgd | d qt tttdd  dD ]}t ttdgd |d q:d S )N)皙r   r   g?   2   r   r   )Zunknown_methodZsisok_methodzunknown-glazrL   )r   
ValueErrorr   r%   r9   NotImplementedErrorr   r0   r0   r1   #test_multinomial_proportions_errors   s      rW   c                  C   s   t ddddddddd	d
ddddgdd} t ddddddddddddddgdd}t ddg}d d!d"d#d$d%d&g}tj|d'd(d)}d d*d"d#d$d%d&g}tj|d'd(d)}t|| d+d, t|t || d*d+d, t||d-d, d S ).NgnvB?gTw?L?        g&Od¨?gsʊ~?g"?gc@?gVE?g/E~ܻ?gW$U>?g\P?gG\+?gYfE?g a?r3   g/x$?g"1?gh?g:]?gu"?gx?g@?g6?gaS ?gy\?gDU?g|E?g]F?g<d?gQgښd?8   皙?I   ;   >   W   :   r   Z
sison_glazrL   r   h㈵>ZatolMb@?)r%   arrayr:   rD   r   r   maximum)ci01Zci0Z	ci0_shiftpZci_01Zci_0r0   r0   r1   *test_confint_multinomial_proportions_zeros   sd            	        rh   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )CheckProportionMixinc                 C   s   t j| j| jd d}t|d | jjdd t|d | jjdd t j| j| j| jj	d d}t|d | jjdd t|d | jjdd t j| jd | jd | j
j	d}t|d | j
jdd t|d | j
jdd d S )Nvaluer   rB   rC   r   )rD   proportions_chisquare	n_successr-   r   res_prop_test	statisticp_valueres_prop_test_val
null_valueres_prop_test_1)selfptr0   r0   r1   test_proptest   s    
z"CheckProportionMixin.test_proptestc                 C   s   t j| j| jd d}t|j| j t j| j| jdd}t| | j t j	| j| jdd}t|j|jd t
| jd  dd d S )NZmultitest_methodhZhommelr   rB   rC   )rD   proportions_chisquare_allpairsrm   r-   r   	pvals_rawres_ppt_pvals_rawZpval_correctedres_ppt_pvals_holmZ"proportions_chisquare_pairscontrollen)rt   pptZpptdr0   r0   r1   test_pairwiseproptest   s     z*CheckProportionMixin.test_pairwiseproptestc                 C   sT   t j| jd d | jd d d d}tt|jd dddg}t|j| j|  d S )Nr4   rw   r   r   )	rD   ry   rm   r-   r   r}   rz   r   r{   )rt   r~   r.   r0   r0   r1   test_number_pairs_1493   s    
z+CheckProportionMixin.test_number_pairs_1493N)__name__
__module____qualname__rv   r   r   r0   r0   r0   r1   ri      s   ri   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )TestProportionc                 C   s  t ddddg| _t ddddg| _t d	d
ddddg| _t dd
ddddg| _t }d|_d|_d|_	t ddddgj
dddd|_d|_d|_d|_d|_d |_|| _t }t d!gj
dddd|_t dgj
dddd|_d"|_	t ddddgj
dddd|_t d#d#d#d#gj
dddd|_d|_d|_d$|_d%|_|| _t }d&|_d|_d'|_	d|_d#|_t d(d)g|_d|_d*|_d+|_|| _d S ),Nr\   Z   r   K   V   ]      R   gDu?gn?gC?ggn`?g۾?gws?gwGT?gws?g)?g3O b =&@r4   guJ?gΚ)?g{?g?gEJԮD?   r   F)orderZNULL	two.sidedzG4-sample test for equality of proportions without continuity correctionzsmokers2 out of patientsg~g*@gv R%??zA4-sample test for given proportions without continuity correctionz;smokers2 out of patients, null probabilities rep(c(0.9), 4)g_@gv´?g]'$OD?g
8s?z71-sample proportions test without continuity correctionz4smokers2[1] out of patients[1], null probability 0.9)r%   rd   rm   r-   r{   r|   r   ro   	parameterrp   r:   estimaterr   conf_intalternativer   	data_namern   rq   rs   )rt   rn   rq   rs   r0   r0   r1   setup_method   s                             zTestProportion.setup_methodc                 C   sH   t ddg}t ddg}tj||d d\}}t|d t|d d S )NrR   rA   S   c   rj   gyt/yg;u`?)r%   rd   rD   proportions_ztestr   )rt   r,   r-   statpvalr0   r0   r1   test_default_values%  s
    
z"TestProportion.test_default_valuesc                 C   sL   d}d}d}t j|||d\}}t|d t|d ttt j||d d d S )NrR   r   r   rj   gu?g}r'=?)rD   r   r   r   rU   )rt   r,   r-   rk   r   r   r0   r0   r1   test_scalar-  s    

zTestProportion.test_scalarN)r   r   r   r   r   r   r0   r0   r0   r1   r      s   Dr   c            
      C   sj  t  } d| _d| _d| _ddg| _d| _d| _d| _d	| _d
| _	t  }d|_d|_d|_ddg|_d|_d|_d|_d	|_d
|_	t  }d|_d|_d|_ddg|_d|_d|_d|_d	|_d
|_	d|fd| fd|fg}|D ]*\}}t
jddd|d}t||jdd qt
jddddd}t
jddddd\}}	t||jdd t|	| jd dd t||jd dd d S )N3      g-$Ǻl?r   g&dB?g	jZ?gUUUUUU?ZlesszExact binomial testz
51 and 235gs0,j.?g.6?r   ZgreatergJfJ"f?gK-A?g+H3?r   largersmaller	two-sidedpropr   rB   rC   r   r   r   r[   )r   ro   r   rp   r   r   rr   r   r   r   rD   
binom_testr   r
   )
Zbinom_test_lessZbinom_test_greaterZbinom_test_2sidedZalltestsZaltZres0rE   Zci_2sr#   r$   r0   r0   r1   test_binom_test8  sX    




r   c                  C   sb  d} d}d}d}t j||| |d\}}t|| t j||||d}t||  t j|d |||d}t| | d}t j||| |d\}}t|d	 t j||||d}t||  t j|d |||d}t| | d
}t j||| |d\}}t j||||d}t||  t j|d |||d}t| | t j||||d}t||  t j|d |||d}t| | d S )Nr      333333?r   )r   r   r   r   r   r   r   )rD   Zbinom_test_reject_intervalr   r   r   )r   r-   r   r   r#   r$   r   r0   r0   r1   test_binom_rejection_intervals  sb    


















r   c                  C   s   t jddddd} t jd|  }t|dgd dd	 t jd
dddd} t jd|  }t|dgd dd	 t jtdddddd} t tddd| d | d }t|}t|dt|j dd	 d S )Nr5   r@   r   r[   )r   r   r   r4   rA   rC   rR   r   r   皙?)r5   r@   )rR   r@   )	rD   r
   Z
binom_tostr   r%   r9   asarrayr;   shape)r/   Zbtr0   r0   r1   test_binom_tost  s     
r   c                  C   s   dt ddd } tjddd| dd	}t d
dddddddddg
}t||dd tddd}d}t|| t ddd}tjdd|ddd	}t ddddddddd d!g
}tt 	|d|dd d S )"Nr   r   g
ףp=
?r5   rG   gffffff?i  r   )p_altr   gS?g+?g rh?g&W?g%u?gNё\C?g?W[?g??g%u?g(?r   rC   )i  iL  r@      rH   rX   RI&¶?Gx$(?n4@?JY?6>W[?z6>W[?7d?)
r%   ZlinspacerD   Zpower_binom_tostrd   r   Zbinom_tost_reject_intervalr   r9   re   )r   power	res_powerZrej_intZres_rej_intr-   r0   r0   r1   test_power_binom_tost  s(       
  r   c                  C   sh  t jddddddddd	 } t| d
dd t * tdt t jddtddddddddd	 } t	ddddddddddg
}tt
| d	|dd t jddtdddddddd ddd
d	 } t	ddddddddd dg
}tt
| d	|dd t jddtdddddddddd!	d	 } t	ddddddddd d"g
}tt
| d	|dd W 5 Q R X d S )#Nr[   r   r5   r   r   TZbinom)r   r   discretedistr   gm4@?r   rC   ignorerH   r@   r   rG   FrX   r   r   gI+?gV-?r   g rh?r   r3   r   r   r   r   r   variance_propZ
continuitycritval_continuityr   r   r   )r   r   r   r   r   r   gRI&?)rD   power_ztost_propr   warningscatch_warningssimplefilterr   r%   r9   rd   re   r   r   r0   r0   r1   test_power_ztost_prop  sp                    r   c                  C   s   t ddgddg} ddlm}m} || ddd}t|dd	gd
 || dddd}t|d d dd
 t|d d dd
 t|d d d S )Nr   r      i  )zconfintztostr[   )r   ddofgAf?gL7A`?r   g
ףp=
?gRQ?)r   g"@r3   g~zr8   )r%   repeatZstatsmodels.stats.weightstatsr   r   r   r   )Zxfairr   r   rf   rE   r0   r0   r1   
test_ztost  s    r   c                  C   sR  t t2 tjddtddddddddd	d	d

d	 } W 5 Q R X tddddddddddg
}tt	| d	|dd t t2 tjddtdddddddddd	d

d	 } W 5 Q R X tddddddddddg
}tt	| d	|dd t t2 tjddtdddddddddd	d

d	 } W 5 Q R X tddddd d!d"d#d$d%g
}tt	| d	|dd t t2 tjddtddddddddddd

d	 } W 5 Q R X tddddd d!d&d#d$d'g
}tt	| d	|dd t t2 tjddtdddddddd d	d	d

d	 } W 5 Q R X tddddd(d)d*d+d,d-g
}tt	| d	|dd d S ).NrH   r   r@   r   rG   r   FZnormr   r   rX   gݼiO?gk?g?g-9?gmb?gn?gFm?r   rC   r   g= P?gs=?gd-v?gvȋT1x?g,Ѝ?gxhG?gv10?g@ I?Tgʶ?ga\q/?gʔ?g[7?gSX#?gF=D[?gN8P?gSii?gs?gY'WF]J?g Y?g6?g 7D?g =J?go0J?)
r'   Zwarnsr   rD   r   r%   r9   rd   r   re   r   r0   r0   r1   test_power_ztost_prop_norm  s                                       r   c                  C   s  t jddddd} t jdddd}t| d |d dd t jtdd	gtdd
gdd d} t tdd	gtdd
g}t| d |d dd t jtdd	gtd
dgdd d} t tdd	gtd
dg}t| d |d dd td|d d  d S )N   g      4@rG   )rk   Zprop_varrj   r   rB   rC   r5   r@   r   iP  rY   )rD   r   rl   r   r%   r   r   )res1Zres2r0   r0   r1   test_proportion_ztestsB  s,      r   c               	   C   s  d\} }d\}}t | |||dddd}t|ddgd	d
 t | |||dddd}t|ddgd	d
 t | |||dddd}t|ddgd	d
 t | |||dddd}t|ddgdd t | |||ddd}t|ddgdd t | |||ddd}t|dd gdd t | |||ddd!d}t|d"d#gdd t | |||d$d%d}t|d&d'gdd t | |||d$d(d}t|d)d*gdd t | |||d$d+d}t|d&d,gdd t | |||d-ddd}t|d.d/gdd d S )0N   "   r   r   Znewcombdiffr   )r   comparer   g~jt?g(\?g{Gzt?rb   waldgV-?g#~j?agresti-caffog~jt?gS㥛?scoreTr   r   
correctiongy&1?gʡE?gQ?r7   ratiologr   r   gQ?6   g{Gz?log-adjustedgq=
ףp?   Fg\(\?+   orlogitgGz?J   logit-adjustedg\(\?&   logit-smoothed<   
odds-ratiog)?g+O ;L@r   r   )count1nobs1count2nobs2r/   r0   r0   r1   test_confint_2indep]  s~    
 
 
 
 


 



 r   c               	   C   s   d\} }d\}}d}t | |||dddd}t||dd	 d
}t | |||ddd}t||dd	 d}t | |||dddd}t||dd	 d}t | |||dddd}t||dd d}t | |||dddd}t||dd	 d S )Nr   r   )g˰?g.B@?r   r   Tr   gMb`?rb   )g.7Ǉ?gfYr?r   r   gv!>)g`ţޝ?g`$0?r   F)g^?g`9>L@r   rc   r7   )gh'?g۞ IE@r   r   )r   r   r   r   r/   Zci1r0   r0   r1   test_confint_2indep_propcis  sH    
 

 
 
 r   c               
   C   s   d\} }d\}}dD ]}t | ||||d}t|j|jdd |dkrHdnd	}t | |||||d
dd d \}}t | |||||d d
dd d \}	}
t||	dd t||
dd t | |||||d d
dd d \}	}
t||	dd t||
dd qd S )Nr   r   )r   r   r   )r   绽|=r7   r   r         ?F)r   rk   return_resultsr3   :0yE>)r   r   Z
prop1_nullZ
prop2_null)r   r   r   r   corE   vals0Zpv0s1Zpv1r0   r0   r1   test_score_test_2indep  sB    

 

 

 
r   c                  C   sd  d} d\}}d\}}dddddd	d
dddg
}|D ]\}}t ||||||| dd\}}	tj|||||||dd}
t|
j| dd tj|||||	||dd}
t|
j| dd tj|||||	||dddd
\}}t|| d dd tj|||||||dddd
\}}t|| d dd q0d	\}}t ||||||| dd\}}	tj|||||||dd}
t|
j| dd d S )Nr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Fr   r   r   r   )rk   r   r   r   r   rb   r   )rk   r   r   r   r   r   r3   r   T)r   rD   Ztest_proportions_2indepr   pvalue)r   r   r   r   r   methods_bothr   r   lowupprE   _pvr0   r0   r1   test_test_2indep  s    
  
                   
       

  
      r  c                  C   s   d} d\}}d\}}ddgd }}ddgd }}ddd	d
ddddddg
}	|	D ]\}
}t |||||
|d|  dd\}}tj||||||d |
|dd	}t|j| dd tj|||||d ||
|dd	}t|j| dd |dkr d S |}tj|||||d ||
|dd	}t|jd | dd qLd S )Nr   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r3   Fr  g?r   r   rb   gffffff?r   r   )r   rD   Ztost_proportions_2indepr   r  )r   r   r   r   r   Zcount1vZnobs1vZcount2vZnobs2vr  r   r   r  r  rE   r   r0   r0   r1   test_equivalence_2indep3  s|    
 
                     r  c            	      C   s   d\} }d\}}t  }dddg|_ddg|_tj||| |dd	}t|j|jd
d t|j|jdd ddddg}tj|dd	}ddg}t|j|dd d S )N)   P   )$   (   g6[?gsA?ga4?gQ@gS㥛@r   rT   r   rb   r4   C   	   r   r  g6^?gLMw?)	r   Zp0_rootsr   rD   Z_confint_riskratio_koopmanr   Z_p_rootsZconfintZ_confint_riskratio_paired_nam)	Zx0Zn0x1Zn1Zresults_namrE   tablerespZci_oldr0   r0   r1   test_score_confint_koopman_namf  s    
r  c               	   C   s  t ddd} t| jddd tdddddd	d
d}t|ddd t ddddd t| jddd t ddddd} t| jd t dddddd} t| ddd t ddddd} t| ddd tdddddd	d
d}t|ddd d	dlm} t ddddd}t|jdd d |ddd!|j|jd"}t|ddd tdddddd	d
d}t||d#d$ d%}d&}t d'd(|d)d}t|j|d d td'd(|d*d}t||d+d$ d S ),Ng      пg      ?g8b->-S@r   r   rb   r   r   r   r   )r   r   rk   r   ra   g*O@r   )r   g      ?rG   r   F)r   r   g333333ÿg?g#T@)r   )normal_sample_size_one_tailgy&1gQ?i&  r   )r   gB	ܺ?gHz>r   )std_nullZstd_alternativer6   r7   g,KE?   rQ   g?g       @r3   r8   )	r	   r   r   r   r   Zstatsmodels.stats.powerr  r  Zstd_alt)Zpow_nr  rE   Zn2Zpwr_str0   r0   r1   test_power_2indep  sZ    
 

   r  r,   r5   r   rR   r   
array_likeFTc              	   C   s^   |r| gd n| }d}t | ||d}t ||  ||d}tt|dt|d d d   d S )Nr4   d   rL   r   rY   r
   r   r%   rd   )r,   r   r  _countr  abr0   r0   r1   test_ci_symmetry  s
    r"  r-   /   rS   0   c              	   C   sp   |r|gd n|}|r$| | gd n| | }t || dd}t || dd}tt|dt|d d d   d S )Nr4   r   rL   r   rY   r  )r-   r,   r  r  Znobs_m_countr   r!  r0   r0   r1   test_ci_symmetry_binom_test  s
    r%  c               	   C   s   t t tdddd W 5 Q R X t t tdddd W 5 Q R X t t ttdgddd W 5 Q R X tdd	dd} td
d	dd}td
ddd}t| | t| | d S )Ng      %@r@   r   rL   r5   g     4@g$@g      5@r#     g     G@)r'   ZraisesrU   r
   r%   rd   r   )r   r!  cr0   r0   r1   test_int_check  s     
r(  c              	   C   sX   d}t | | g||d}t ||  ||  g||d}tt|dt|d d d   d S )Nr  rL   r   rY   r  )r,   r   r  r   r!  r0   r0   r1   test_ci_symmetry_array  s    r)  )@__doc__r   Znumpyr%   Znumpy.testingr   r   r   r   r   Zpandasr<   r'   Zstatsmodels.stats.proportionstatsZ
proportionrD   r   r   r	   r
   r   r   Zstatsmodels.tools.sm_exceptionsr   Zstatsmodels.tools.testingr   Z2statsmodels.stats.tests.results.results_proportionr   r   r"   markZparametrizer2   r?   rF   rJ   rP   rW   rh   ri   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r9   listkeysr"  r%  r(  r)  r0   r0   r0   r1   <module>   sz    
+
&+X;/&@V)<35  