U
    Kvf                     @   s  d dl Z d dlZd dlZd dlmZ d dlmZmZ d dlm	Z	 d dl
m	  mZ d dl
mZmZmZmZmZmZmZmZmZmZmZmZmZ dddd	d
dddgZe jdedd Zdd Zddddddejfdfddddddejfdfddddddejfdfddddd d!ejfd"fddddd#d!ejfd"fgZ e jd$e d%d& Z!G d'd( d(Z"ddd	gZ#e jde#d)d* Z$d+d,gZ%e jde%d-d. Z&ddd/d0gZ'e jde'd1d2 Z(d3d4 Z)d5d6d7d8gZ*e jd$e*d9d: Z+d;d< Z,d=d> Z-d?d@ Z.dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVZ/e jd$e0e/1 dWdX Z2G dYdZ dZZ3d[d\ Z4d]d^ Z5d_d` Z6dadb Z7dcdd Z8dS )e    N)arange)assert_allcloseassert_equal)stats)confint_poissontolerance_int_poissonconfint_quantile_poissonetest_poisson_2indepconfint_poisson_2indepnonequivalence_poisson_2indeppower_poisson_ratio_2indep power_equivalence_poisson_2indeppower_poisson_diff_2indeppower_equivalence_neginb_2indeppower_negbin_ratio_2indepmethod_names_poisson_1sampmethod_names_poisson_2indepwaldscoreexact-cZwaldccvzsqrt-azsqrt-vmidp-csqrtmethodc                 C   s   d\}}t ||| d}tj|||d | dj}tj|||d | dj}d}| dkrVd}t|d	|d
 t|d	|d
 tj|||d | ddj}tj|||d | ddj}t|d|d
 t|d|d
 d S )N   i  r   r   valuer      绽|=)r   ư>皙?rtollarger)r   r   alternativesmaller皙?)r   smrtest_poissonpvaluer   )r   countnobscipv1pv2r#    r0   N/tmp/pip-unpacked-wheel-2v6byqio/statsmodels/stats/tests/test_rates_poisson.pytest_rate_poisson_consistency"   s"    r2   c                  C   s   d\} }d}d}t j| |ddd}t| |dd}t|j|dd	 t||dd	 d
}d}t j| |ddd}t| |dd}t|j|dd	 t||dd	 d}t| |dd}t||dd	 d}t| |dd}t||dd	 d}t| |dd}t|d |d dd	 d S )Nr   gVU?)g~ ~?gߪ?r!   r   r   r   -q=r"   g!s5?)gKE?gy]]?r   )gGs?g7Pޮ?jeff)gc?gx?r   )g_4y?gdk?r   r   gh㈵>)r(   r)   r   r   r*   )r+   r,   r/   Zci2rtr-   r0   r0   r1   test_rate_poisson_r;   s,    r6   r   r   )       r7   )r      )   #   r:   )r   !      d   )h      l   )r      )j      m   )r      )i   rD   casec              	   C   s`  d}d}| \}}}}}}}	t |||||ddd}
t|
| t |||||ddd}
t|
|	 t |||||ddd}
t|
| |dkrt |||||d	dd}
tj||| | }t|
| t|||||ddd}t|d
 |d
  t|||||ddd}t|d
 |	d
  d}t|||||ddd}t|d |d  t|||||ddd}t|d |d  d S )Ngffffff?g333333?r!   	two-sided)exposure_newr   alphar%   r$   r&   )r   gwJ?r   r'   r   )r   r   r   Zpoissonintervalr   )rH   ZprobZprob_onemethr+   exposurerJ   Zr2rsZrlZtir-   ZciqZprob_lowr0   r0   r1   test_tol_intv   s         
     
     
     
                    rP   c                   @   s@   e Zd Zejded dd Zejded dd ZdS )	TestMethodsCompar1samprM   testc                 C   s0   d\}}t j|||ddd}t|jddd d S )N<   33333@皙?rI   r   r   r%   g      ?r"   )r(   r)   r   r*   )selfrM   count1n1tstr0   r0   r1   	test_test   s
    z TestMethodsCompar1samp.test_testconfintc                 C   s.   d\}}t |||dd}t|ddgdd d S )NrS   r!   )r   rK   gbX9ȶ?gMbX9?rV   r"   )r   r   )rX   rM   rY   rZ   r-   r0   r0   r1   test_confint   s    z#TestMethodsCompar1samp.test_confintN)	__name__
__module____qualname__pytestmarkparametrizer   r\   r^   r0   r0   r0   r1   rQ      s   
rQ   c           	   
   C   s   d\}}}}t ||||| dd}tj|||||d | ddj}tj|||||d | ddj}d}| dkrld	}t|d
|d t|d
|d tj|||||d | dddj}tj|||||d | dddj}t|d|d t|d|d d S )N   g      D@   g      >@diffr   comparer   r   r   rj   r   r   )r   r    r!   r"   r$   r   r   rj   r%   r&   r'   r
   r(   test_poisson_2indepr*   r   )	r   rY   rZ   count2n2r-   r.   r/   r#   r0   r0   r1   "test_rate_poisson_diff_consistency   s:      rq   wald-log	score-logc           
   
   C   s   d}d\}}}}t ||||| |d}tj|||||d | |dj}tj|||||d | |dj}d}	| dkrpd	}	t|d
|	d t|d
|	d tj|||||d | |ddj}tj|||||d | |ddj}t|d|	d t|d|	d d S )Nratiore   ri   r   rk   r   r   )r   rs   r    r!   r"   r$   rl   r&   r'   rm   )
r   rj   rY   rZ   ro   rp   r-   r.   r/   r#   r0   r0   r1   #test_rate_poisson_ratio_consistency   s<      ru   etest
etest-waldc              	   C   s   d\}}}}t j||||| dd}t j||||| dd}t|j|jdd t j||||| ddd}t j||||| ddd}t|j|jdd t j||||| dd	d}t j||||| dd	d}t|j|jdd d S )
Nre   rt   ri   rh   vIh%<=r"   r$   )r   rj   r%   r&   )r(   rn   r   tuple)r   rY   rZ   ro   rp   t1t2r0   r0   r1   (test_rate_poisson_diff_ratio_consistency  s@          r|   c               	   C   sb  d\} }}}t j| |||dd\}}d}t||d ddd t|d	ddd
 t j| |||dd\}}d}	t||	d ddd t|dddd
 t j| |||dd\}}d}	t||	d ddd t|dddd
 t j| |||dd\}}d}	t||	d ddd t|dddd
 t j| |||dd\}}d}	t||	d ddd t|dddd
 d\} }}}t j| |||ddd\}}d}t||d ddd t|dddd
 t j| |||ddd\}}d}	t||	d ddd t|dddd
 t j| |||ddd\}}d }	t||	d ddd t|d!ddd
 tt  t j| |||ddd"\}}W 5 Q R X d#}	t||	d ddd t|d$ddd
 t j| |||ddd\}}d%}	t||	d dd&d t|d'ddd
 d\} }}}t j| |||dd(d)\}}d}t||ddd t j| |||dd(d)\}}d}	t||	ddd t j| |||dd(d)\}}d}	t||	ddd t j| |||d*d+d(d,\}}d-}	t||	ddd t j| |||d.d+d(d,\}}d/}	t||	ddd t| |||dd(d)\}
}d0}t||ddd t| |||dd(d)\}
}d0}t||ddd d\} }}}t j| |||ddd(d,\}}d}t||ddd t j| |||ddd(d,\}}d}	t||	ddd t j| |||ddd(d,\}}d%}	t||	ddd t j| |||d*dd(d,\}}d1}	t||	ddd t j| |||d.dd(d,\}}d2}	t||	ddd t| |||ddd(d,\}
}d3}t||ddd t| |||ddd(d,\}
}d3}t||ddd d S )4NrT       "@rf   ffff@r   r   gX|[T7?   r   h㈵>r#   atolg&qVDM@)r   r#   r   g:`4?gGV@rr   gyCn;?g-C
@rs   -C6*?g&S@-C6
?r   gvꭁ2?gUގpZ@)   jm  r   IJ        ?)r   r   g<R!?Mb@?g:%Ȉ?gW2ı?grj?g?߾?gׁsF?)r   
ratio_nullg
h"lxz?gV-?gx#?{Gzt?gdxg?r$   )r   r%   
exact-condr   rW   g() <?	cond-midpgMP4?gA3?gT?g\(\?gڊe?)r(   rn   r   rb   warnsFutureWarningr	   )rY   rZ   ro   rp   s1r.   Zpv1rs2r/   Zpv2r_Zpve1Zpve1rZpve2Zpve2rr0   r0   r1   test_twosample_poisson4  s(   



 
 



 
 




 
 
 
 
 

 

 
r   )r   )9@g?߾?):pΈ?g?W[?)r   )着& @g&?)(~k	?gaۢ?)rw   )r   gHPsג?)r   pUj?)zetest-score)r   gd`T?)r   r   c           
      C   s   | \}}}d\}}}}d}t j||||||ddd d	}	t|	j|	jf|dd d}t j||||||ddd d	}	t|	j|	jf|d	d d S )
Nr   r   rh   r$   )r   r   rj   r%   Z
etest_kwdsga2U0*C?r   r   gǺF?)r(   rn   r   	statisticr*   )
rH   rM   res1res2rY   	exposure1ro   	exposure2r   tr0   r0   r1   test_twosample_poisson_diff  s(    
    r   c            
   	   C   sf  ddl m} m} d\}}}}| }tj||||dd}t|j|jdd t|j|j	dd t
|j|j |}tj||||dd}t|j|jd	d
d t|j|j	dd t
|j|j d}tj||||dddd}	t|	j|dd d}tj||||dddd}	t|	j|dd d}tj||||dddd}	t|	j|dd d}tj||||dddd}	t|	j|dd d S )Nr   )res_pexact_condres_pexact_cond_midpr}   r   r   rx   r"   r   r   r   r   gC?333333?r&   rW   r3   g8t?r$   gݠ">{?gBbw?)Zresults.results_ratesr   r   r(   rn   r   r*   Zp_valuert   Zestimater   r   Z
null_value)
r   r   rY   rZ   ro   rp   r   r   r/   restr0   r0   r1   test_twosample_poisson_r  sH        r   c               
   C   s  d\} }}}t | |||ddddd}d}t||dd	 d
}t||dd t | |||ddddd}d}t||dd	 t | |||dddd}d}t||dd	 t | |||dddd}d}t||dd	 |d }|d }t | |||ddddd}d}t||dd	 t | |||dddd}d}t||dd	 t ||| |ddddd}d}t||dd	 d}t||dd	 t ||| |ddddd}d}t||dd	 d S )Nr}   Zmoverrt   rV   r4   )r   rj   rK   Zmethod_mover)gPkw?g?ܵ|@r!   r   )gw?g%xCx@gMbP?r"   r   )g8d`?gͪV@Zwaldccr   rj   rK   )g[<?g	@r   )gBY?g@-
@r     rh   )gc.?g8VQ?r   )ga9?g.u?)gbgp8hԿ)gClg8gDioԿ)gYڊgH}8gԿg~jtx?r
   r   )rY   r   ro   r   r-   Zci1r0   r0   r1   test_confint_poisson_2indep$  s    
  
  
  
  
  
  
  
  r   c            	   
   C   s   d\} }}}d\}}t j| |||||dd}t|jddd dd	d
ddg}|D ],}t j| ||||||d}t|jddd qNd S )Nr}   )gido?gh_@r   r   r'   r3   r"   r   r   r   r   g{Gz?r   )r(   tost_poisson_2indepr   r*   )	rY   rZ   ro   rp   lowuppresmethodsrM   r0   r0   r1   test_tost_poissont  s    r   g6D?gZ4?g-ф?g   ?g  p޷?g>+.?g妱?g6D?gZ4?g-ф?g??g_5c?g[S@f?g =f?g@Ʊ?gVާ?g"Mg?g  <*?g  	p?g@k?gu?))rI   r   )rI   r   )rI   r   )rI   r   )rI   r   )rI   rv   )rI   rw   )r$   r   )r$   r   )r$   r   )r$   r   )r$   r   )r$   rv   )r$   rw   )r&   r   )r&   r   )r&   r   )r&   r   )r&   r   )r&   rv   )r&   rw   c           	   	   C   sF   | \}}d\}}}}t j|||||d|d\}}t|t|  dd d S )N)   g     I@r   g      K@r   rW   rx   r"   )r(   rn   r   	cases_alt)	rH   altrM   rY   rZ   ro   rp   r   pvr0   r0   r1   test_alternative  s     
r   c                   @   s   e Zd Zejddd ed d D dd ed d D  dd	 Zejdd
d ed d D dd ed d D  dd Zejddd ed d D dd ed d D  dd Z	dS )TestMethodsCompare2indepzcompare, methc                 C   s   g | ]}d |fqS rt   r0   .0rM   r0   r0   r1   
<listcomp>  s     z#TestMethodsCompare2indep.<listcomp>rR   rt   c                 C   s   g | ]}d |fqS rh   r0   r   r0   r0   r1   r     s     rh   c                 C   s   d\}}}}t j||||||d dd}t|jddd |dkrRd}d	| | }	}
nd
}| | }	}
t|||||	|
||d}d|ksd|krd}nd}t|j|j|d tt  t j||d|||d dd}W 5 Q R X d S )NrT   rU   (   gV-@rI   r   rj   r   r%   gJ+?g?r"   rt         ?r           ri   condrv   rV   r3   r   )r(   rn   r   r*   r   rb   r   RuntimeWarning)rX   rM   rj   rY   rZ   ro   rp   r[   fr   r   vtst2r#   r0   r0   r1   r\     s4      z"TestMethodsCompare2indep.test_testc                 C   s   g | ]}d |fqS r   r0   r   r0   r0   r1   r     s     r]   c                 C   s   g | ]}d |fqS r   r0   r   r0   r0   r1   r     s     c           	   	   C   sN   d\}}}}|dkrddg}nddg}t ||||||dd}t||d	d
 d S )Nr   rt   gp=
ף?gQ@g+eXw?g#~j?r!   r   rV   r"   r   )	rX   rM   rj   rY   rZ   ro   rp   Zci_valr-   r0   r0   r1   r^     s    
 z%TestMethodsCompare2indep.test_confintc                 C   s   g | ]}d |fqS r   r0   r   r0   r0   r1   r     s     c                 C   s   g | ]}d |fqS r   r0   r   r0   r0   r1   r     s     c              
   C   s:  d|krt d d\}}}}t||g}t||g}d}	tj|||	 gtd}
t|||	 g}|||
|f\}}}}|dkrd}d| | }}nd}| | }}t||||||||d	}|jjd
kst|j	jd
kstd|ksd|kst
j||||||d dd}t|j	|j	dd |dkr<d}d| | }}nd}| | }}t
j|d |d |d |d ||||d	}t
j|d |d |d |d ||||d	}t
j||||||||d	}|jjd
kst|j	jd
kstt|jd |jdd t|j	d |j	dd t|jd |jdd t|j	d |j	dd d S )Nrv   z#nonequivalence etest not vectorizedr   r   )Zdtypert   r   r   ri   )r   r   rI   r   r3   r"   r         ?r   )rb   skipnparrayintr   r   shapeAssertionErrorr*   r(   rn   r   r   )rX   rM   rj   rY   rZ   ro   rp   Zcount1vZn1vZnfactZcount2vZn2vr   r   r   r   r   r[   Ztst0Ztst1r0   r0   r1   test_test_vectorized  sl    
 
  z-TestMethodsCompare2indep.test_test_vectorizedN)
r_   r`   ra   rb   rc   rd   r   r\   r^   r   r0   r0   r0   r1   r     sB   


 




r   c                  C   sz   t d} t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gd\}}t|ddd	 d S )Nr   rT   r~   rf   r   y_gridg2DYB?gV瞯<r   r   r   r   r   gv6]?r   ǵR?)r   r	   r   )r   r   r   r0   r0   r1   test_y_grid_regression/  s    r   c               	   C   s   t d t jdd} tdddddgd W 5 Q R X t| dksFtt| d jtsZtdt	| d j
kspttt}tdddddd W 5 Q R X d	t	|jkstd S )
NalwaysT)recordr   )ygridr   r   r   r   )warningssimplefiltercatch_warningsr	   lenr   
issubclasscategoryr   strmessagerb   Zraises
ValueErrorr   )wer0   r0   r1   test_invalid_y_grid<  s    
r   c                  C   s2  d\} }d\}}d}d}d\}}d}ddd	d
g}	|	D ]j}
|
\} }}}t | |||||| |||d	}t||dd t | |||||| ||d|d
}t||dd q4ddddg}	d}|	D ]h}
|
\} }}}t| |||| ||dddd	}t||dd t| |||| ||dddd	}t||dd qt| |||| || | dddd	}t|ddd ddddg}	d} d}|	D ]}
|
\}}}}t| |||| ||dddd	}t||dd t| |||| ||ddddd
}t||dd t| |||| ||dddd	}t||dd t| |||| ||ddddd
}t||dd qfd S )N)皙@r   )_   r   r'         @)g?g      ?r   )ffffff?  r   gv7Ou?)g       @   r   goG8-x?)r   r   r   grt?)r     r   gܵ|?)
nobs_ratiorN   rK   
dispersionr   r   r   )r   rN   rK   
method_varr   r   r"   )g?   r   g4c?)r   '   r   gRQ?)r   s   r   g=If?)g333333@  r   g/
?r   r&   )r   rN   r   rK   r   r%   r!   rI   r   g?r$   )r   rN   r   rK   r   r   r%   )r   r   r   )rate1rate2nobs1nobs2rK   rN   r   r   r   ZcasesrH   ppow_Zpow_2r0   r0   r1   test_poisson_power_2ratioK  s                                                      r   c                  C   s   d\} }||  }d\}}t ||| |dddddd	}t|jd	d
d t dddddddddd	}t|jdd
d t dddddddddd	}t|jdd
d d S )N)r      )r   
   r!   r   r   r$   T)r   rK   r   r   r%   return_resultsg3k?r   r   g333333?a   r   333333?r'   r&   r   )r   rK   r%   r   r   g5|ݮ?   gUUUUUU?gU+~?)r   r   power)r   r   r   r   r   r   r0   r0   r1   test_power_poisson_equal  sN                 r   c                  C   s|  d\} }d\}}d}d}d\}}d}d}	t | |||||| |||dd	
}
t|
|	d
d d\}}d}	t | |||||| |||dd	
}
t|
|	d
d d}	t | |||||| |||dd	
}
t|
|	d
d d\}}} }}d}	t|| ||| |d|ddddd}
t|
|	dd d}	|| }}t|| ||| |d|ddddd}
t|
|	dd d}	t|| ||| |d|ddddd}
t|
|	dd t|| ||| |d|ddddd}t||	dd t||
dd d}	t|| ||| |d|ddddd}
t|| ||| |d|ddddd}t||	dd t||
dd t| |||| |d|dd ddd}
t| |||| |d|dd ddd}t||	dd t||
dd d S )!N)r   r   )  r   r!   g?)g      ?g$I$I?gffffff?gXf,?r   )r   rN   rK   r   r   r   r   )  r   g o_?Zftotalgԕ?r   )r   2   r   r>   r   g/2$?r   r   rI   F)r   rN   r   rK   r   r%   r   r   g}w?g uAX2?r   Trx   r"   gvL]?r&   r$   )r   r   r   r   )r   r   r   r   rK   rN   r   r   r   Zpow1r   Zpow_pr0   r0   r1   test_power_negbin  sP                  	   

   	    	    	    	    	    	    	r  )9rb   r   Znumpyr   r   Znumpy.testingr   r   Zscipyr   Zstatsmodels.stats.ratesZratesr(   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   rc   rd   r2   r6   infZcases_tolintrP   rQ   Zmethods_diffrq   Zmethods_ratioru   Zmethods_diff_ratior|   r   Zcases_diff_ngr   r   r   r   r   listkeysr   r   r   r   r   r   r  r0   r0   r0   r1   <module>   s   <
3	
=


 
  	
2P
	 t.