3
Od%              
   @   sj  d dl j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 ddddgd	d
ddgfZeejedf gg7 Zdd Zejjde dd Zejjdedd Zejjdedd Z ej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jd(d)d*d+d,d-d.d/d0gejjd1ed2d3 Z(dS )4    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         g?g?g333333?g?)valuesc              c   s6   t  } x*tD ]"\}}|||| kfV  | j| qW d S )N)setr   add)seendistnamearg r   Y/var/www/html/virt/lib64/python3.6/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jd |j|ddi}tj|}|j| \}}t|||| d  t	|||  t
|||| d  t|| d}t||||| d  |rXd}	|j|j|j|j|jg}
d
dd	d}|j| d}t||||	|
 | dkrt| t|| t|| t|| t|||  |jjtjjkrXt||tj d S )Nzsample distributioniP sizei  z cdf_ppfz othg{Gz?z
 chisquarer      r   )randintZ	hypergeomZ	bernoullir   )r   )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>    








r<   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zipf	yulesimonr   r   )r=   r>   )
r"   r   r#   r   r   r   r   r   r	   check_moment_frozen)r   r   r6   r8   r9   sr;   r   r   r   test_momentsB   s    
rA   zdist,shape_argsc             C   s   | d
k}yt t| }W n( tk
r>   | }d| j| jf } Y nX tjd}|j}g }g }xPt|D ]D}|d fd|d   }	|| }
|j	tj
|	|
 |jd	|	d	  qbW |j	| |j	|j t|| |||tjg d S )N	betabinomskellamr>   dlaplacezrv_discrete(values=(%r, %r))r   r   r   r   )rB   rC   r>   rD   )r   )r"   r   r#   xkpkr$   ZzerosZnumargsrangeappendfullinsertr   r   int_)distZ
shape_argsZ
shape_onlyZdistfunclocnargsallargsZbshaper;   ZshpZ	param_valr   r   r   test_rvs_broadcastY   s$    

rP   z	dist,argsc             C   s   yt t| }W n tk
r&   | }Y nX tjjd tjjdd	dtjjddg}|j| \}}xL|D ]D}tj	|d | || g|j
d
|d|i|j
d|d|ig qfW d S )NiM 
   r   r           rM         ?i)rR   )rS   )r"   r   r#   r$   r%   r&   r!   supportnptassert_array_equalppf)rL   argsr6   Zre_locs_a_brM   r   r   r   test_ppf_with_loc}   s    

r\   c             C   s   t j| j| j|f| f| ||d  t j| j| j|f| d f| ||d  t| ds| j| \}}|||k  }t j| j| j|f| d f| || j |d  d S )Nz
-roundtripg:0yE>rE   z ppf-cdf-next)rV   rW   rX   r/   hasattrrU   inc)r6   r   r7   msgrZ   r[   Zsupp1r   r   r   r)      s    "
"r)   c       	      C   s   t | dr| j}n(t| jd
| d }tt||d }| j|f| }| j|f| j }d\}}|dkrvd\}}t	j
||d  ||d  ||d	 d S )NrE   {Gz?r   rQ   绽|=rC   h㈵>r   )atolrtol)r`   )ra   ra   )rb   rb   )r]   rE   intrX   listrG   r/   r-   ZcumsumrV   assert_allclose)	r6   r   r   indexZstartindZcdfsZpmfs_cumrc   rd   r   r   r   r*      s    
r*   c             C   s    t j| | j||ddd d S )Ng|=)rc   rd   )rV   rg   Zmoment)r6   r   r8   r;   r   r   r   r?      s    r?   c             C   s   t j| j|f| d| j|f|  ddd tjddd}t j| j|f| | jd| f| ddd | jd	| }t j| j|d f| dk t j| j|d f| dk d S )
Ng      ?g|=)rc   rd   g{Gz?gGz?         ?r   )rj   )	rV   rg   sfr/   r$   ZlinspaceisfrX   assert_)r6   r   r7   r_   qZ	median_sfr   r   r   r+      s    $
$
r+   c             C   s>  d}| j | \}}tt|d	}tt|dd }	t||	}
d}|g}g }xV|
D ]N}| j|f| }|| |d krP|j| |j||  |}|d| krPP qPW |d
 |k r|j| |jd|  tj|}tj|}|d }||d< tj	||\}}t
jtj|t|| \}}tj||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  r   r   g+=g:0yE>z2chisquare - test for %s at arg = %s with pval = %sNirT   )rU   re   maxminrG   r/   rH   r$   arrayZ	histogramr   Z	chisquarelenrV   rm   str)r6   r   r'   r:   r_   ZwsupprZ   r[   lohighZdistsupportlastZdistsuppZdistmassiicurrentZhistsuppfreqZhsuppZchisZpvalr   r   r   r,      s8    






r,   c             C   s   | j d k	rtjd| j k d S )NZscale)__doc__rV   rm   )r6   r   r   r   r3      s    
r3   methodr-   r.   r/   r0   rk   r1   rX   rl   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 )NrX   rl   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>rM   c                s   g | ]} j | qS r   )r-   )r|   r9   )rL   r   r   r~     s    gV瞯<)rd   rc   )rX   rl   )r"   r   r#   r-   rV   rg   zip)r{   r   rY   zp2rM   resultr   )rL   r   test_methods_with_lists   s    
r   ))Znumpy.testingZtestingrV   Znumpyr$   ZpytestZscipyr   Zcommon_testsr   r   r   r   r   r	   r
   r   r   r   r   r   r   r   Zscipy.stats._distr_paramsr   valsr5   r   markZparametrizer<   rA   rP   r\   r)   r*   r?   r+   r,   r3   r   r   r   r   r   <module>   s*   
@)$8