
p7]c           @   s  d  Z  d d l Z d d l 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 m Z m Z d d l j j Z d d l m Z d d l m Z i d d 6d	 d
 6d d 6d d 6d d 6Z d   Z e j j d e  d    Z d   Z d   Z d   Z d   Z d   Z  d e! f d     YZ" d e" f d     YZ# d   Z$ d   Z% d   Z& d   Z' d    Z( d!   Z) d"   Z* d#   Z+ d S($   s>   

Created on Fri Mar 01 14:56:56 2013

Author: Josef Perktold
iN(   t   assert_almost_equalt   assert_equalt   assert_array_lesst   assert_raisest   assert_allclose(   t   proportion_confintt   multinomial_proportions_confint(   t   HypothesisTestWarning(   t   Holders   agresti-coullt   agresti_coullt
   asymptotict   normalt   exactt   betat   wilsont   bayest   jeffreysc    
   
   C   sK  d d l  m }  m } x.|  D]&} | \ } } xt D]	} | j t |  } |  | j | } |  | j | } t j |  s6 t j |  r q6 n  | d k s | | k r | d k r q6 n  | d k r | d k r q6 n  t	 | | d d d | }	 t
 | d  } t | d  } t |	 | | g d	 d
 d t |  | q6 Wq Wd  S(   Ni   (   t	   res_binomt   res_binom_methodsi    R   i   t   alphag?t   methodt   decimali   t   err_msg(   t   results.results_proportionR   R   t   probci_methodst   indext   ci_lowt   ci_uppt   npt   isnanR   t   maxt   minR    t   repr(
   R   R   t   caset   countt   nobsR   t   idxt   res_lowt   res_uppt   ci(    (    sF   lib/python2.7/site-packages/statsmodels/stats/tests/test_proportion.pyt   test_confint_proportion   s$    $R   c         C   s$  t  j d  j d d  } d t  j d  } t j |  } t j |  } t | | d d d |  } t | | d d d |  } t | | d j | d	 j f d
 d t | d | d d d d |  } t | d j d | d	 j d f | d
 d t | d d | d	 d f | d
 d t | j	   | j	   d d d |  } t | | d | d	 f d
 d t | j
 d | j
 d d d d |  }	 t |	 d j |	 d	 j f | d j d | d	 j d f d
 d t | | d d d d |  }
 t |
 d d | d	 d f | d
 d d  S(   Ni   i   i   i
   R   g?R   i    i   t   rtolgvIh%<=(   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   R   t   aranget   reshapet   onest   pdt	   DataFrameR   R   t   valuest   tolistt   iloc(   R   R"   R#   t   count_pdt   nobs_pdt   ci_arrt   ci_pdt   ci12t   ci_lit   ci_pdst   ci_arr2(    (    sF   lib/python2.7/site-packages/statsmodels/stats/tests/test_proportion.pyt   test_confint_proportion_ndim9   s.    	'	()	!)	c          C   sa   d }  t  j d |  d d d d } t  j d |  | d | d	 d
  } t | |  d d d  S(   Ni   i   R   g?R   R   g      (@i   i    i   R   i   (   t   smpropR   t   samplesize_confint_proportionR    (   R#   R'   t   res(    (    sF   lib/python2.7/site-packages/statsmodels/stats/tests/test_proportion.pyt'   test_samplesize_confidenceinterval_prop_   s    &c          C   s)   t  j d d  }  t |  d d d d  S(   Ng      ?g?gAJ?R   i   (   R;   t   proportion_effectsizeR    (   t   es(    (    sF   lib/python2.7/site-packages/statsmodels/stats/tests/test_proportion.pyt   test_proportion_effect_sizef   s    c       
   C   sx   d d l  m }  xa |  j   D]S \ \ } } } t | j d d | } t | j | d | j d d | | f q Wd  S(   Ni   (   t   res_multinomialg?R   R   R   s   "%s" method, %s(   t'   results.results_multinomial_proportionsRB   t   itemsR   t   proportionsR    t   cist	   precision(   RB   R   t   descriptionR/   RF   (    (    sF   lib/python2.7/site-packages/statsmodels/stats/tests/test_proportion.pyt$   test_confint_multinomial_proportionsk   s    	c          C   s   x7 d d d d g D]# }  t  t t d g d d |  q Wt  t t t j d  d  x4 d d	 d
 g D]# } t  t t d g d d | qg Wd  S(   Ngi    i   g?i   i2   R   t   unknown_methodt   sisok_methods   unknown-glazR   (   R   t
   ValueErrorR   R   R*   t   NotImplementedError(   R   R   (    (    sF   lib/python2.7/site-packages/statsmodels/stats/tests/test_proportion.pyt#   test_multinomial_proportions_errorsu   s    			c          C   sR  t  j d d d d d d d d d	 d
 d d d d g  j d d  }  t  j d d d d d d d d d d d d d d g  j d d  } t  j 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  j | | d*  d+ d, t | | d+ d- d  S(.   NgnvB?gTw?L?g        g&Od¨?gsʊ~?g"?gc@?gVE?g/E~ܻ?gW$U>?g\P?gG\+?gYfE?g a?ii   g/x$?g"1?gh?g:]?gu"?gx?g@?g6?gaS ?gy\?gDU?g|E?g]F?g<d?gQgښd?i8   g?iI   i;   i>   iW   i:   g?R   t
   sison_glazi    t   atolgh㈵>gMb@?(   R   t   arrayR+   R;   R   R   t   maximum(   t   ci01t   ci0t	   ci0_shiftt   pt   ci_01t   ci_0(    (    sF   lib/python2.7/site-packages/statsmodels/stats/tests/test_proportion.pyt*   test_confint_multinomial_proportions_zeros   s4    		#t   CheckProportionMixinc           B   s#   e  Z d    Z d   Z d   Z RS(   c         C   s$  t  j |  j |  j d d  } t | d |  j j d d t | d |  j j d d t  j |  j |  j d |  j	 j
 d } t | d |  j	 j d d t | d |  j	 j d d t  j |  j d |  j d d |  j j
 } t | d |  j j d d t | d |  j j d d d  S(   Nt   valuei    R   i   i   (   R;   t   proportions_chisquaret	   n_successR#   t   NoneR    t   res_prop_testt	   statistict   p_valuet   res_prop_test_valt
   null_valuet   res_prop_test_1(   t   selft   pt(    (    sF   lib/python2.7/site-packages/statsmodels/stats/tests/test_proportion.pyt   test_proptest   s    c         C   s   t  j |  j |  j d d  } t | j |  j  t  j |  j |  j d d } t | j   |  j	  t  j
 |  j |  j d d } t | j | j t |  j  d  d d d  S(   Nt   multitest_methodt   ht   hommeli   R   i   (   R;   t   proportions_chisquare_allpairsR]   R#   R^   R    t	   pvals_rawt   res_ppt_pvals_rawt   pval_correctedt   res_ppt_pvals_holmt"   proportions_chisquare_pairscontrolt   len(   Re   t   pptt   pptd(    (    sF   lib/python2.7/site-packages/statsmodels/stats/tests/test_proportion.pyt   test_pairwiseproptest   s    		#c         C   sf   t  j |  j d  |  j d  d d  } t t | j  d  d d d g } t | j |  j	 |  d  S(   Ni   Rh   i    i   (
   R;   Rk   R]   R#   R^   R   Rq   Rl   R    Rm   (   Re   Rr   R$   (    (    sF   lib/python2.7/site-packages/statsmodels/stats/tests/test_proportion.pyt   test_number_pairs_1493   s    	(   t   __name__t
   __module__Rg   Rt   Ru   (    (    (    sF   lib/python2.7/site-packages/statsmodels/stats/tests/test_proportion.pyRZ      s   		t   TestProportionc           B   s#   e  Z d    Z d   Z d   Z RS(   c         C   su  t  j d d d d g  |  _ t  j d d d d g  |  _ t  j d	 d
 d d d d g  |  _ t  j d d
 d d d d g  |  _ t   } d | _ d | _ d | _	 t  j d d d d g  j
 d d d d | _ d | _ d | _ d | _ d d  | _ d! | _ | |  _ t   } t  j d" g  j
 d d d d | _ t  j d g  j
 d d d d | _ d# | _	 t  j d d d d g  j
 d d d d | _ t  j d$ d$ d$ d$ g  j
 d d d d | _ d | _ d | _ d% | _ d& | _ | |  _ t   } d' | _ d | _ d( | _	 d | _ d$ | _ t  j d) d* g  | _ d | _ d+ | _ d, | _ | |  _ d  S(-   NiI   iZ   ir   iK   iV   i]   i   iR   gDu?gn?gC?ggn`?g۾?gws?gwGT?gws?g)?g3O b =&@i   guJ?gΚ)?g{?g?gEJԮD?i   i   t   ordert   Ft   NULLs	   two.sideds*   4-sample test for equality of proportions s   without continuity corrections   smokers2 out of patientsg~g*@gv R%?g?sA   4-sample test for given proportions without continuity corrections;   smokers2 out of patients, null probabilities rep(c(0.9), 4)g_@gv´?g]'$OD?g
8s?s7   1-sample proportions test without continuity corrections4   smokers2[1] out of patients[1], null probability 0.9(   R   RQ   R]   R#   Rm   Ro   R   R`   t	   parameterRa   R+   t   estimateRc   t   conf_intt   alternativeR   t	   data_nameR_   Rb   Rd   (   Re   R_   Rb   Rd   (    (    sF   lib/python2.7/site-packages/statsmodels/stats/tests/test_proportion.pyt   setup   sn    										
																				c         C   sf   t  j d d g  } t  j d d g  } t j | | d d  \ } } t | d  t | d  d  S(   Ni   i   iS   ic   R[   gyt/yg;u`?(   R   RQ   R;   t   proportions_ztestR^   R    (   Re   R"   R#   t   statt   pval(    (    sF   lib/python2.7/site-packages/statsmodels/stats/tests/test_proportion.pyt   test_default_values  s
    c         C   sj   d } d } d } t  j | | d | \ } } t | d  t | d  t t t  j | | d d  d  S(   Ni   iS   g?R[   gu?g}r'=?(   R;   R   R    R   RL   R^   (   Re   R"   R#   R[   R   R   (    (    sF   lib/python2.7/site-packages/statsmodels/stats/tests/test_proportion.pyt   test_scalar   s    (   Rv   Rw   R   R   R   (    (    (    sF   lib/python2.7/site-packages/statsmodels/stats/tests/test_proportion.pyRx      s   	D	c    
      C   s,  t    }  d |  _ d |  _ d |  _ d d g |  _ d |  _ d d |  _ d	 |  _ d
 |  _ d |  _	 t    } d | _ d | _ d | _ d d g | _ d | _ d d | _ d | _ d
 | _ d | _	 t    } d | _ d | _ d | _ d d g | _ d | _ d d | _ d | _ d
 | _ d | _	 d | f d |  f d | f g } xL | D]D \ } } t
 j d d d d d d | } t | | j d d qTWt
 j d d d d d d } t
 j d d d d d d \ } }	 t | | j d d t |	 |  j d d d t | | j d d d d  S(    Ni3   i   g-$Ǻl?i    g&dB?g	jZ?g      ?i   t   lesss   Exact binomial tests
   51 and 235gs0,j.?g.6?i   t   greatergJfJ"f?gK-A?g+H3?s	   two.sidedt   largert   smallers	   two-sidedt   propR   R   i   R   g?R   R   g?(   R   R`   R|   Ra   R~   R}   Rc   R   R   R   R;   t
   binom_testR    R   (
   t   binom_test_lesst   binom_test_greatert   binom_test_2sidedt   alltestst   altt   res0R=   t   ci_2sR   R   (    (    sF   lib/python2.7/site-packages/statsmodels/stats/tests/test_proportion.pyt   test_binom_test+  sT    																										"c          C   s  d }  d } d d } d } t  j | | d |  d | \ } } t | |  t  j | | d | d | } t | |   t  j | d	 | d | d | } t |  |  d
 } t  j | | d |  d | \ } } t | d  t  j | | d | d | } t | |   t  j | d	 | d | d | } t |  |  d } t  j | | d |  d | \ } } t  j | | d | d | } t | |   t  j | d	 | d | d | } t |  |  t  j | | d | d | } t | |   t  j | d	 | d | d | } t |  |  d  S(   Ng?i   g      (@i   R   R   R   R   i   R   i    s	   two-sided(   R;   t   binom_test_reject_intervalR   R   R   (   R   R#   R   R   R   R   R   (    (    sF   lib/python2.7/site-packages/statsmodels/stats/tests/test_proportion.pyt   test_binom_rejection_intervalf  sL    
								c          C   s  t  j d d d d d d }  t  j d d |   } t | d g d d	 d
 t  j d d d d d d }  t  j d d |   } t | d g d d	 d
 t  j t j d d  d d d d d }  t  j t j d d  d |   } t j |  } t | d t j | j  d	 d
 d  S(   Ni
   i   R   R   R   g?g?i   R   i   i   i   g?(	   R;   R   t
   binom_tostR    R   R*   t   asarrayR,   t   shape(   R'   t   bt(    (    sF   lib/python2.7/site-packages/statsmodels/stats/tests/test_proportion.pyt   test_binom_tost  s    !	!c          C   s(  d t  j d d d  }  t j d d d d |  d	 d
 } t  j d d d d d d d d d d g
  } t | | d d t j d d d  } d$ } t | |  t  j d d d  } t j d d | d d d	 d
 } t  j d d d d d d d  d! d" d# g
  } t t  j	 | d  | d d d  S(%   Ng333333?i    g
ףp=
?i
   g      ?gffffff?i  t   p_altR   g?gS?g+?g rh?g&W?g%u?gNё\C?g?W[?g??g%u?g(?R   i   i  iL  i   i   g?g        gRI&¶?gGx$(?gn4@?gJY?g6>W[?gz6>W[?g7d?(   i  iL  (
   R   t   linspaceR;   t   power_binom_tostRQ   R    t   binom_tost_reject_intervalR   R*   RR   (   R   t   powert	   res_powert   rej_intt   res_rej_intR#   (    (    sF   lib/python2.7/site-packages/statsmodels/stats/tests/test_proportion.pyt   test_power_binom_tost  s    !!c          C   s-  t  j d d d d d d d d t d	 d
 d }  t |  d d d t j   t j d t  t  j d d t j	 d d d  d d d d d t
 d	 d
 d }  t j d d d d d d d d d d g
  } t t j |  d  | d d t  j d d t j	 d d d  d d d d d t
 d	 d
 d d  d d d d  d }  t j d d d d d d! d" d d# d g
  } t t j |  d  | d d t  j d d t j	 d d d  d d d d d t
 d	 d
 d d d d  d }  t j d d d d d d! d" d d# d$ g
  } t t j |  d  | d d Wd  QXd  S(%   Ng?g?i
   R   g333333?R   g?t   discretet   distt   binomi    gm4@?R   i   t   ignoreg?i   i   g      ?g        gRI&¶?gGx$(?gI+?gV-?g6>W[?g rh?g7d?t   variance_propt
   continuityi   t   critval_continuityi   gn4@?gJY?gz6>W[?gRI&?(   R;   t   power_ztost_propt   TrueR    t   warningst   catch_warningst   simplefilterR   R   R*   t   FalseRQ   RR   R^   (   R   R   (    (    sF   lib/python2.7/site-packages/statsmodels/stats/tests/test_proportion.pyt   test_power_ztost_prop  s2    !!!c          C   s   t  j d d g d d g  }  d d l m } m } | |  d 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(   Ni   i    i   i  i(   t   zconfintt   ztostR   g?t   ddofgAf?gL7A`?i   g
ףp=
?gRQ?g"@i   g~zg-C6?i  (   R   t   repeatt   statsmodels.stats.weightstatsR   R   R    R   (   t   xfairR   R   RS   R=   (    (    sF   lib/python2.7/site-packages/statsmodels/stats/tests/test_proportion.pyt
   test_ztost  s    c          C   s  t  j t  W t j d d t j d d d  d d d d d	 t d
 d d d d d d d d }  Wd  QXt j d d d d d d d d d d g
  } t	 t j
 |  d  | d d t  j t  W t j d d t j d d d  d d d d d	 t d
 d d d d d d d d }  Wd  QXt j d d d d d d d d  d! d" g
  } t	 t j
 |  d  | d d t  j t  W t j d d t j d d d  d d d d d	 t d
 d d d d d d d d }  Wd  QXt j d d d d# d$ d% d& d' d( d) g
  } t	 t j
 |  d  | d d t  j t  W t j d d t j d d d  d d d d d	 t d
 d d d d d d d d }  Wd  QXt j d d d d# d$ d% d* d' d( d+ g
  } t	 t j
 |  d  | d d t  j t  W t j d d t j d d d  d d d d d	 t d
 d d d  d d d d d }  Wd  QXt j d d d d d, d- d. d/ d0 d1 g
  } t	 t j
 |  d  | d d d  S(2   Ng?g333333?i   i   R   g      ?R   g?R   R   t   normR   R   i    R   g        gݼiO?gk?g?g-9?gmb?gn?gFm?R   i   i   g= P?gs=?gd-v?gvȋT1x?g,Ѝ?gxhG?gv10?g@ I?gʶ?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?(   t   pytestt   warnsR   R;   R   R   R*   R   RQ   R    RR   R   R^   (   R   R   (    (    sF   lib/python2.7/site-packages/statsmodels/stats/tests/test_proportion.pyt   test_power_ztost_prop_norm  sR    !!!!!c          C   s   t  j d d d d d d }  t  j d d d d } t |  d | d d d t  j t j d d	 g  t j d d
 g  d d d d  }  t  j t j d d	 g  t j d d
 g   } t |  d | d d d d  S(   Ni   g      4@R[   g      ?t   prop_vari   R   i   i
   i   i    (   R;   R   R\   R    R   R   R^   (   t   res1t   res2(    (    sF   lib/python2.7/site-packages/statsmodels/stats/tests/test_proportion.pyt   test_proportion_ztests4  s    -0(,   t   __doc__R   R   t   numpyR   t   pandasR-   t   numpy.testingR    R   R   R   R   t   statsmodels.stats.proportionR   R   t   statst
   proportionR;   t   statsmodels.tools.sm_exceptionsR   t   statsmodels.tools.testingR   R   R(   t   markt   parametrizeR:   R>   RA   RI   RN   RY   t   objectRZ   Rx   R   R   R   R   R   R   R   R   (    (    (    sF   lib/python2.7/site-packages/statsmodels/stats/tests/test_proportion.pyt   <module>   s>   (

	&			
		&+X	;	/			%		@