B
    0d(                 @   s  d dl mZ d dlZd dlZd dl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mZ d dlmZmZ ddddgd	d
ddgfZeejeddgg7 ZddhZdd Zejde dd Z ejdedd Z!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(d)d* Z)ejd+d,d-d.d/d0d1d2d3gejd4ed5d6 Z*ejd4ed7d8 Z+dS )9    N)stats   )check_normalizationcheck_momentcheck_mean_expectcheck_var_expectcheck_skew_expectcheck_kurt_expectcheck_entropycheck_private_entropycheck_edge_supportcheck_named_argscheck_random_state_propertycheck_picklingcheck_rvs_broadcastcheck_freezing)distdiscreteinvdistdiscrete         g?g?g333333?g?)values ZzipfianZ
nhypergeomc              c   sX   t  } xLtD ]D\}}|tkr6tj|||tjjdV  n|||| kfV  | | qW d S )N)Zmarks)setr   distslowpytestparammarkZslowadd)seendistnameargr   r   W/var/www/html/venv/lib/python3.7/site-packages/scipy/stats/tests/test_discrete_basic.pycases_test_discrete_basic   s    r#   zdistname,arg,first_casec             C   s^  yt t| }W n tk
r*   | }d} Y nX tjd |j|ddi}t|}|j| \}}t|||| d  t	|||  t
|||| d  t|| d}t||||| d  |rZd	}	|j|j|j|j|jg}
d
dddd}|| d}t||||	|
 | dkrt| t|| t|| t|| t|||  |jjtjjkrZt||tj d S )Nzsample distributioniP sizei  z cdf_ppfz othg{Gz?z
 chisquare)r      r   r      )randintZ	hypergeomZ	bernoullinchypergeom_walleniusr   )getattrr   	TypeErrornprandomseedrvsuniquecheck_cdf_ppfcheck_pmf_cdf	check_othr   check_discrete_chisquarepmflogpmfcdflogcdflogsfgetr   check_scale_docstringr   r   r   r
   	__class__Z_entropyrv_discreter   )r    r!   Z
first_casedistfnr.   suppmvalphaZlocscale_defaultsZmethsZspec_kkr   r   r"   test_discrete_basic   s@    








rC   zdistname,argc             C   s   yt t| }W n tk
r*   | }d} Y nX |j|ddi\}}}}t|||  t|||||  t||||  t|||||  t||||||  | dkrt||||||  t	|||d t	|||||  d d S )Nzsample distributionZmomentsZmvsk)Zzipf	yulesimonr   r   )
r)   r   r*   r   r   r   r   r   r	   check_moment_frozen)r    r!   r=   r?   r@   srB   r   r   r"   test_momentsJ   s    
rG   zdist,shape_argsc             C   s   | dk}yt t| }W n( tk
r>   | }d| j| jf } Y nX td}|j}g }g }xPt|D ]D}|d fd|d   }	|| }
|	t
|	|
 |d|	d  qbW |	| |	|j t|| |||tjg d S )N)Z	betabinomskellamrD   ZdlaplaceZnchypergeom_fisherr(   zrv_discrete(values=(%r, %r))r   r   )r   r   r   )r)   r   r*   xkpkr+   ZzerosZnumargsrangeappendfullinsertr$   r   int_)distZ
shape_argsZ
shape_onlyZdistfunclocnargsZallargsZbshaperB   ZshpZ	param_valr   r   r"   test_rvs_broadcasta   s$    

rS   z	dist,argsc          	   C   s   yt t| }W n tk
r&   | }Y nX tjd tjdddtjddg}|j| \}}xL|D ]D}t	|d | || g|j
d
|d|i|j
d|d|ig qfW d S )NiM ir   r   
           rQ         ?)rV   )rW   )r)   r   r*   r+   r,   r-   r'   supportnptassert_array_equalppf)rP   argsr=   Zre_locs_a_brQ   r   r   r"   test_ppf_with_loc   s    

r_   c             C   s   t | j| j|f| f| ||d  t | j| j|f| d f| ||d  t| ds| j| \}}|||k  }t | j| j|f| d f| || j |d  d S )Nz
-roundtripg:0yE>rI   z ppf-cdf-next)rY   rZ   r[   r6   hasattrrX   inc)r=   r!   r>   msgr]   r^   Zsupp1r   r   r"   r0      s    "
"r0   c       	      C   s   t | dr| j}n(t| jd
| d }tt||d }| j|f| }| j|f|  }d\}}|dkrvd\}}t	j
||d  ||d  ||d	 d S )NrI   {Gz?r   rU   )g|=g|=rH   )gh㈵>gh㈵>r   )atolrtol)rc   )r`   rI   intr[   listrK   r6   r4   ZcumsumrY   assert_allclose)	r=   r!   r    indexZstartindZcdfsZpmfs_cumrd   re   r   r   r"   r1      s    
r1   c             C   s    t j| | ||ddd d S )Ng|=)rd   re   )rY   rh   Zmoment)r=   r!   r?   rB   r   r   r"   rE      s    rE   c             C   s   t j| j|f| d| j|f|  ddd tddd}t j| j|f| | jd| f| ddd | jd	| }t | j|d f| dk t | j|d f| dk d S )
Ng      ?g|=)rd   re   g{Gz?gGz?         ?r   )rk   )	rY   rh   sfr6   r+   Zlinspaceisfr[   assert_)r=   r!   r>   rb   qZ	median_sfr   r   r"   r2      s    $
$
r2   c             C   s>  d}| j | \}}tt|d}tt|dd }	t||	}
d}|g}g }xV|
D ]N}| j|f| }|| |d krP|| |||  |}|d| krPP qPW |d |k r|| |d|  t|}t|}|d }||d< t	||\}}t
t|t|| \}}t||kd	|t|t|f  d
S )as  Perform chisquare test for random sample of a discrete distribution

    Parameters
    ----------
    distname : string
        name of distribution function
    arg : sequence
        parameters of distribution
    alpha : float
        significance level, threshold for p-value

    Returns
    -------
    result : bool
        0 if test passes, 1 if test fails

    g?ii  r   r   g+=rT   g:0yE>z2chisquare - test for %s at arg = %s with pval = %sN)rX   rf   maxminrK   r6   rL   r+   arrayZ	histogramr   Z	chisquarelenrY   rn   str)r=   r!   r.   rA   rb   Zwsuppr]   r^   lohighZdistsupportlastZdistsuppZdistmassiicurrentZhistsuppfreqZhsuppZchisZpvalr   r   r"   r3      s8    






r3   c             C   s   | j d k	rtd| j k d S )Nscale)__doc__rY   rn   )r=   r   r   r"   r:     s    
r:   methodr4   r5   r6   r7   rl   r8   r[   rm   zdistname, argsc                s   yt t| W n tk
r"   d S X | dkr6ddg}nddg}dd |D }ddg} j|f|d|i}tj| fd	dt|f||f D d
d
d d S )N)r[   rm   g?g?r   r   c             S   s   g | ]}|gd  qS )r   r   ).0pr   r   r"   
<listcomp>  s    z+test_methods_with_lists.<locals>.<listcomp>rQ   c                s   g | ]} j | qS r   )r4   )r~   r@   )rP   r   r"   r     s    gV瞯<)re   rd   )r)   r   r*   r4   rY   rh   zip)r}   r    r\   zp2rQ   resultr   )rP   r"   test_methods_with_lists  s    
r   c             C   s<   t t| }tdd}|j|f| }tj}t|| d S )N   )r)   r   r+   Zaranger6   nanrY   Zassert_equal)r    r\   rP   xvalsexpectedr   r   r"   test_cdf_gh13280_regression  s
    
r   ),Znumpy.testingtestingrY   numpyr+   r   Zscipyr   Zcommon_testsr   r   r   r   r   r	   r
   r   r   r   r   r   r   r   Zscipy.stats._distr_paramsr   r   r   r<   r   r#   r   ZparametrizerC   rG   rS   r_   r0   r1   rE   r2   r3   r:   r   r   r   r   r   r"   <module>   s.   @
+%8