o
    Ö­jë¾  ã                   @   sÖ  d dl Z d dlZd dlmZ d dlmZmZ d dlZd dl	m
Z
 d dlmZ ddlmZ d dlmZ d dlmZ d d	lmZ g d
¢ZdZdZg d¢Zg d¢Zg d¢Zg d¢Zg d¢ZdgZee edœZeedœZdhZ g d¢Z!dd„ Z"ej#j$ej# %de"ƒ ¡ej# %dddg¡dd„ ƒƒƒZ&d?dd„Z'd d!„ Z(d"d#„ Z)d$d%„ Z*ej# %d&e
j+d'fe
j,d(fg¡d)d*„ ƒZ-d+d,„ Z.d-d.„ Z/d/d0„ Z0ej# %d1e0ƒ ¡d2d3„ ƒZ1	 	5d@d6d7„Z2G d8d9„ d9ƒZ3g d:¢Z4G d;d<„ d<ƒZ5G d=d>„ d>ƒZ6dS )Aé    N)Úassert_allcloseÚassert_equal)Ústats©Údifferential_evolutioné   )Údistcont)ÚFitError)Údistdiscrete)Úgoodness_of_fit)éè  éˆ  i'  ç      Ð?ç      è?)Údpareto_lognormÚ
gausshyperÚgenexponÚgengammaÚ	irwinhallÚkappa4ÚksoneÚkstwoÚncfÚncx2Ú
truncexponÚtukeylambdaÚvonmisesÚlevy_stableÚ	trapezoidÚtruncweibull_minÚstudentized_range)	Ú	betaprimeÚcrystalballÚ	exponweibÚfÚgeninvgaussÚ	jf_skew_tÚrecipinvgaussÚrel_breitwignerÚvonmises_line)ÚburrÚchiÚchi2ÚmielkeÚpearson3ÚgenhalflogisticÚrdistÚparetoÚpowerlawÚpowerlognormÚ
wrapcauchyr(   )4Úalphar!   r*   Úburr12Úcauchyr+   r,   r"   Údgammar   Údweibullr$   ÚfatiguelifeÚfiskÚ
foldcauchyÚ
genextremer   ÚgenhyperbolicÚgennormÚ	genparetoÚ
halfcauchyÚinvgammaÚ
invweibullr   r&   Ú	johnsonsuÚkappa3r   r   ÚlandauÚlevyÚlevy_lr   Ú
loglaplaceÚlomaxr-   Únakagamir   Únctr   r1   r3   Ú	powernormr(   Ú
skewcauchyÚtr   ÚtriangÚtruncparetor   r   r    )ÚargusÚexponpowr#   r   r   r/   ÚhalfgennormÚgompertzÚ	johnsonsbr   Ú	kstwobignr'   r   r   r)   r4   )ÚMMÚMLErQ   )Úerlangr>   Únorminvgaussc                  c   s&   � t D ]\} }| tvr| |fV  qd S ©N)r   Úskip_fit)ÚdistnameÚarg© r`   úW/var/www/html/CropPilot/venv/lib/python3.10/site-packages/scipy/stats/tests/test_fit.pyÚcases_test_cont_fit`   s   €
€þrb   zdistname,argÚmethodrY   rX   c              	   C   sÊ  t tjddd�ƒ}t tjddd�ƒ}| t| v r!|s!d}t |¡ | t| v r0|s0d}t |¡ tt	| ƒ}t
 |ddgg¡}t
 t
 |t t
 |jd	 t¡g¡d
¡}tD ]é}	t
j d¡ t
jdd��£ |j|d|	iŽ}
|dkry|jtv rydd
i}ni }|j|
fd|i|¤Ž}|dkr¬t	 |
¡}|j|fi |¤Ž}d|j› d|› d|› �}t||d|d� |dkrþ| tvrþd}t
 |
|
f¡}|d |…d
f  d9  < |d |…df  d9  < |jdd� t	j|d�}|j|fi |¤Ž}d|j› d|› d|› �}t||d|d� W d   ƒ n	1 �s	w   Y  || }t
 t
 |
  ¡ ¡t tg¡|d < t
 !t
 "|¡¡�r/t#d!ƒ‚t
 $t
 |¡|k¡�r= d S qTd"t%|ƒ› d#�}|d$t%|ƒ› d#�7 }|d%t%|ƒ› d#�7 }t#d&|j› d#�| ƒ‚)'NÚSCIPY_XFAILF)ÚdefaultÚSCIPY_XSLOWz@Failure expected; set environment variable SCIPY_XFAIL=1 to run.z9Very slow; set environment variable SCIPY_XSLOW=1 to run.g        ç      ð?é   r   iÒ  Úignore)ÚallÚsizerY   Úflocrc   zCDifferent results fitting uncensored data wrapped as CensoredData: z: est=z est1=g»½×Ùß|Û=)ÚrtolÚerr_msgé   ç®Gáz®ï?r   ç)\�Âõ(ð?©Úaxis)Úintervalz2Different results fitting interval-censored data: z est2=çš™™™™™©?éþÿÿÿznan returned in fitzparameter: Ú
zestimated: zdiff     : zfit not very good in )&ÚintÚosÚgetenvÚfailing_fitsÚpytestÚxfailÚ
xslow_fitsÚskipÚgetattrr   ÚnpÚhstackÚmaxÚvstackÚthresh_percentÚfullÚnumargsÚ
thresh_minÚ	fit_sizesÚrandomÚseedÚerrstateÚrvsÚnameÚmle_use_floc0ÚfitÚCensoredDatar   Úfail_interval_censoredÚcolumn_stackÚsortÚabsÚmeanÚanyÚisnanÚAssertionErrorrj   Ústr)r^   r_   rc   Ú	run_xfailÚ	run_xslowÚmsgÚdistfnÚtrueargÚdiffthresholdÚfit_sizer�   ÚkwdsÚestÚdata1Úest1Únicrt   Údata2Úest2ÚdiffÚtxtr`   r`   ra   Útest_cont_fitj   s‚   


ÿþ

ÿÿÿÿÿÿ€â 
ÿÿr«   c                 C   s6   t t| ƒ}| |¡dd … }t|||d| › �d� d S )Nrv   z poor mle fit of (loc, scale) in )Úatolrn   )r€   r   r�   r   )rŽ   ÚdataÚdesiredr¬   ÚdÚactualr`   r`   ra   Ú_check_loc_scale_mle_fit¸   s
   

ÿr±   c                  C   s6   t  g d¢¡} td| ddgdƒ td| ddgdƒ d S )N)rq   ç{®Gázü?r²   r²   ç®Gázþ?r³   r³   ç       @Úuniformrq   rp   çü©ñÒMbP?Úexpong¤p=
×£ç?)r�   Úarrayr±   )r­   r`   r`   ra   Ú"test_non_default_loc_scale_mle_fit¿   s   r¹   c                  C   s.   g d¢} t jj| dd�}t|ddgdd� dS )zgh-6167)r   r   r   r   rh   rh   rh   rh   r   )rl   rg   r¶   ©r¬   N)r   r·   r�   r   )r­   Úphatr`   r`   ra   Útest_expon_fitÅ   s   r¼   c               	   C   s˜   t  t  d¡t  d¡g¡} d}tjt|d��, t t¡� t	j
 | ¡ W d   ƒ n1 s-w   Y  W d   ƒ d S W d   ƒ d S 1 sEw   Y  d S )Né   é   z0Optimization converged to parameters that are...©Úmatch)r�   ÚconcatenateÚzerosÚonesr|   Úraisesr	   ÚwarnsÚRuntimeWarningr   Úbetar�   )r­   Úmessager`   r`   ra   Útest_fit_errorÌ   s   ÿPþrÉ   zdist, params)ç      à?ç      @)é
   ç333333Ó?rh   c                 C   s|   t j d¡}t| dƒr| j}n| j}| j|d|dœŽ}||g|¢R Ž  ¡  }|  ||¡}|  	||¡}t
||ƒ t
||ƒ d S )Niðgž:Úpdféd   ©rk   Úrandom_state)r�   rŠ   Údefault_rngÚhasattrÚlogpdfÚlogpmfr�   ÚsumÚnnlfÚ_penalized_nnlfr   )ÚdistÚparamsÚrngÚlogpxfÚxÚrefÚres1Úres2r`   r`   ra   Útest_nnlf_and_related_methodsÔ   s   

rá   c                  c   s¸   � h d£} h d£}h d£}t tt ƒD ]F}|| v st|tƒs.d}tj|tjj|d�d�V  q||v rBd}tj|tjj	|d�d�V  q||v rVd}tj|tjj
|d�d�V  q|V  qd S )	N>   rÇ   rR   r   r   ÚfoldnormrK   r   Ú	truncnormr   rQ   Úpoisson_binomr   r    >3   r$   rO   r+   r;   Úricer5   ÚbinomÚgammarJ   r0   r6   rZ   rE   r-   Únbinomr1   Úarcsiner?   ÚlognormÚrandintrµ   Úbradfordr9   rS   r   rU   rB   Úinvgaussr.   r2   Úskewnormr!   Ú	exponnormr@   r&   rV   rD   rW   rM   r<   r=   rC   rI   r4   r"   r:   rT   Úweibull_maxÚweibull_minr[   r'   >   r   rL   r*   r   r   rP   ÚskellamÚzipfianr   r   Ú	betabinomr#   Ú	hypergeomr   Ú
betanbinomr   Ú
loguniformÚ
nhypergeomÚ
reciprocalr%   r   r3   r>   r   r/   r(   Únchypergeom_fisherÚnchypergeom_walleniusztested separately©Úreason©Úmarksútoo slow (>= 0.25s)útoo slow (>= 1.0s))Údictr
   r   Ú
isinstancerš   r|   ÚparamÚmarkr   ÚslowÚxslow)Úskip_basic_fitÚslow_basic_fitÚxslow_basic_fitrÙ   rý   r`   r`   ra   Úcases_test_fit_mleç   s    €
õr  c                  c   sä   � h d£} h d£}h d£}dh}t tt ƒD ]Y}|| v s!t|tƒs1d}tj|tjj|d�d�V  q||v rEd}tj|tjj	|d�d�V  q||v rYd	}tj|tjj
|d�d�V  q||v rltj d
¡}tj||d�V  q|V  qd S )N>   rR   r   r   r0   ré   r2   rî   r   r   r   r%   r   r   r[   r>   rä   r    >1   rO   r+   r,   r;   Úwaldr5   rç   rJ   ÚanglitrZ   rE   r1   rP   rê   Úmaxwellrë   rµ   rì   r9   rS   râ   r   rU   Úloggammarô   rï   r#   r@   rõ   rD   rW   rM   r<   r=   rC   rI   rø   r   r4   r"   r:   ÚgenlogisticrQ   rð   rñ   Úsemicircularr'   r/   Úlaplace_asymmetric>"   r$   r   rL   rÇ   r*   r   rå   rR   r6   r8   r   r-   r?   ró   r   rB   rí   rK   r.   r!   r&   rV   r   rã   r÷   rù   rT   r3   r)   r   r(   r   rú   rû   rò   zFails. Oh well.rü   rþ   r   r  zignore::RuntimeWarning)r  r
   r   r  rš   r|   r  r  r   r  r  Úfilterwarnings)r  r	  r
  Úwarns_basic_fitrÙ   rý   r  r`   r`   ra   Úcases_test_fit_mse  s(   €òr  c                  c   s:   � t tƒ ¡ D ]\} }t| tƒr| dv rq| |fV  qd S )N>   r'   r    )r  r   Úitemsr  rš   )r^   Úshapesr`   r`   ra   Úcases_test_fitstartT  s   €
ür  zdistname, shapesc                 C   sr   t t| ƒ}tj d¡}| d¡}tjddd�� | |¡}W d   ƒ n1 s'w   Y  |j|d d… Ž s7J ‚d S )NiV årÌ   ri   )ÚinvalidÚdividerv   )r€   r   r�   rŠ   rÒ   rŒ   Ú	_fitstartÚ	_argcheck)r^   r  rÙ   rÛ   r­   Úguessr`   r`   ra   Útest_fitstart\  s   

ÿr  çH¯¼šò×z>r×   c           
      C   sB   t | |ƒ}|||ƒ}|||ƒ}	||	k stjj||	||d� d S d S )N)rm   r¬   )r€   r�   Útestingr   )
rÙ   r­   Úparams1Úparams0rm   r¬   Ú	nlff_nameÚnlffÚnlff1Únlff0r`   r`   ra   Úassert_nlff_less_or_closeh  s   


ÿr'  c                   @   sp  e Zd ZejZdZej 	e¡Z
ejjddde
d�ZddgZdddœZd	Zd
ZeedœZddœdd„Zdd„ Zdd„ Zdd„ Zdd„ Zd@dd„Zej deƒ ¡dd„ ƒZej deƒ ¡dd„ ƒZejjdd „ ƒZ ej d!d"¡d#d$„ ƒZ!ejj"d%d&„ ƒZ#d'd(„ Z$d)d*„ Z%ejjd+d,„ ƒZ&d-d.„ Z'ejjd/d0„ ƒZ(d1d2„ Z)d3d4„ Z*d5d6„ Z+d7d8„ Z,ejj"d9d:„ ƒZ-d;d<„ Z.d=d>„ Z/d?S )AÚTestFitl   »�Vaé   rÊ   rÏ   rÐ   ©r   rÌ   ©r   r   ©ÚnÚpru   ç{®Gáz„?)r¬   rm   r   ©rÛ   c                O   s   t |d|i|¤ŽS ©NrÛ   r   )ÚselfrÛ   Úargsr¢   r`   r`   ra   Úopt|  s   zTestFit.optc                 C   sJ   d}t jt|d�� t d| j| j¡ W d   ƒ d S 1 sw   Y  d S )Nz `dist` must be an instance of...r¿   rÌ   )r|   rÄ   Ú
ValueErrorr   r�   r­   Úshape_bounds_a©r2  rÈ   r`   r`   ra   Útest_dist_iv  s   "ÿzTestFit.test_dist_ivc                 C   s,  d}t jt|d�� t | jg d¢g| j¡ W d   ƒ n1 s w   Y  d}t jt|d�� t | jdddtjg| j¡ W d   ƒ n1 sGw   Y  t jt|d�� t | jdddtj	g| j¡ W d   ƒ n1 slw   Y  t jt|d�� t | jg d¢| j¡ W d   ƒ d S 1 s�w   Y  d S )	Nz'`data` must be exactly one-dimensional.r¿   ©r   rh   é   z.All elements of `data` must be finite numbers.r   rh   r:  )Ú1Ú2Ú3)
r|   rÄ   r5  r   r�   rÙ   r6  r�   ÚnanÚinfr7  r`   r`   ra   Útest_data_iv„  s   ÿÿÿ"ÿzTestFit.test_data_ivc                 C   sP  d}ddddœ}t jt|d�� t | j| j|¡ W d   ƒ n1 s#w   Y  d}ddg}t jt|d�� t | j| j|¡ W d   ƒ n1 sIw   Y  d	}dd
g}t jt|d�� t | j| j|¡ W d   ƒ n1 sow   Y  ddg}t jt|d�� t | j| j|¡ W d   ƒ n1 s“w   Y  d}dg}t jt|d�� t | j| j|¡ W d   ƒ n1 s¸w   Y  d}g d¢}t jt|d�� t | j| j|¡ W d   ƒ n1 sÞw   Y  d}dddœ}t jt|d�� t | j| j|¡ W d   ƒ n	1 �sw   Y  d}ddg}t jt|d�� t | j| j|¡ W d   ƒ n	1 �s-w   Y  d}ddg}t jt|d�� t | j| j|¡ W d   ƒ n	1 �sTw   Y  d}t jt|d�� t | j| j¡ W d   ƒ n	1 �svw   Y  t	j
 t	j
fdg}t jt|d�� t | j| j|¡ W d   ƒ d S 1 �s¡w   Y  d S )Nz1Bounds provided for the following unrecognized...r*  r+  ©r   rÌ   ©r-  r.  r;  r¿   z6Each element of a `bounds` sequence must be a tuple...)r   rÌ   r:  z6Each element of `bounds` must be a tuple specifying...)r   r   rÊ   r   r   z7A `bounds` sequence must contain at least 2 elements...z;A `bounds` sequence may not contain more than 3 elements...)r*  r*  r*  r*  z.There are no values for `p` on the interval...)r   r   r,  z.There are no values for `n` on the interval...)rÌ   r   z6There are no integer values for `n` on the interval...)gffffffö?gš™™™™™ù?z0The intersection of user-provided bounds for `n`)r|   rÅ   rÆ   r   r�   rÙ   r­   rÄ   r5  r�   r?  )r2  rÈ   Úshape_boundsÚboundsr`   r`   ra   Útest_bounds_iv‘  sh   ÿÿÿÿÿÿ
ÿÿÿÿ$ÿzTestFit.test_bounds_ivc                 C   sD  d}ddddœ}t jt|d�� tj| j| j| j|d� W d   ƒ n1 s&w   Y  d}dd	d
œ}t jt	|d�� tj| j| j| j|d� W d   ƒ n1 sPw   Y  ddg}t jt	|d�� tj| j| j| j|d� W d   ƒ n1 sww   Y  ddgg}t jt	|d�� tj| j| j| j|d� W d   ƒ n1 sŸw   Y  d}dg}t jt	|d�� tj| j| j| j|d� W d   ƒ n1 sÇw   Y  d}g d¢}t jt	|d�� tj| j| j| j|d� W d   ƒ n1 sðw   Y  d}ddd
œ}t jt|d�� tj| j| j| j|d� W d   ƒ n	1 �sw   Y  d}g d¢}t jt|d�� tj| j| j| j|d� W d   ƒ n	1 �sEw   Y  d}ddd
œ}t jt|d�� tj| j| j| j|d� W d   ƒ n	1 �spw   Y  d}g d¢}t jt|d�� tj| j| j| j|d� W d   ƒ d S 1 �s›w   Y  d S )Nz2Guesses provided for the following unrecognized...r   rÊ   éÿ   rB  r¿   )r  z+Each element of `guess` must be a scalar...Úhir,  r$   rh   z-A `guess` sequence must contain at least 2...z1A `guess` sequence may not contain more than 3...)r   rh   r:  é   zCGuess for parameter `n` rounded.*|Guess for parameter `p` clipped.*g      @g      à¿z$Guess for parameter `loc` rounded...)r)  rÊ   rÊ   z"Guess for parameter `p` clipped...r)  z$Guess for parameter `loc` clipped...)r)  rÊ   r   )
r|   rÅ   rÆ   r   r�   rÙ   r­   Úshape_bounds_drÄ   r5  )r2  rÈ   r  r`   r`   ra   Útest_guess_ivÄ  s`   ÿ
ÿÿ
ÿÿÿ
ÿÿ
ÿ$ÿzTestFit.test_guess_ivc                 C   s²  d}t tt ƒ}tj | j¡}tt|ƒ}t 	|| ¡}tj
t|ƒd dftjd�}|dt |¡  |d d…df< |dt |¡  |d d…df< d|d< d	|d
< |j|d Ž }	|j|d
 Ž }
t|| ƒ|	|
g }t|ddƒr‰|d d
… }t |	¡|d
< |j|||dœŽ}|d d
… }t|ddƒr˜|j|||dœŽ}t ¡ �}| td¡ tj||||| jd�}W d   ƒ n1 s¸w   Y  dddœ}|| }t|||j|fi | j¤d|i¤Ž d S )Nr   rh   )Údtypeg      $@rv   r   r   rA  )g¼‰Ø—²Òœ<rÌ   éÿÿÿÿÚpmfFrÐ   rÎ   zoverflow encountered©rc   Ú	optimizerr×   Ú_penalized_nlpsf©ÚmleÚmser#  )r  r   r
   r�   rŠ   rÒ   r‹   r€   r   r¸   ÚemptyÚlenÚfloat64Úsignrµ   ÚlistÚfloorr�   ÚnptÚsuppress_warningsÚfilterrÆ   r�   r4  r'  rÚ   Útols)r2  Ú	dist_namerc   rÛ   ÚNÚ	dist_datarÙ   r  rD  ÚlocÚscalerÞ   r­   ÚsupÚresÚ
nlff_namesr#  r`   r`   ra   Úbasic_fit_testó  s>   

ÿþ
ÿzTestFit.basic_fit_testr^  c                 C   ó   | j |ddd� d S )NrR  r)  r0  ©rf  ©r2  r^  r`   r`   ra   Útest_basic_fit_mle  ó   zTestFit.test_basic_fit_mlec                 C   rg  )NrS  rh   r0  rh  ri  r`   r`   ra   Útest_basic_fit_mse  rk  zTestFit.test_basic_fit_msec                 C   sp   d}t j | j¡}tj}d}|j|||dœŽ}dddœ}tj|||d| jd�}t	|||j
|fdd	i| j¤Ž d S )
Nr   )rg   r´   rÐ   ©çš™™™™™¹?rÌ   ©ra  rb  rS  rN  r#  rP  )r�   rŠ   rÒ   r‹   r   ré   r�   r�   r4  r'  rÚ   r]  ©r2  r_  rÛ   rÙ   r  r­   rC  rd  r`   r`   ra   Útest_arcsine  s   
ÿ
ÿzTestFit.test_arcsinerc   rQ  c           
      C   s„   d}t j | j¡}tj}d}|j|||dœŽ}ddddœ}tj|||| j|d�}ddd	œ| }	t	|||j
|fi | j¤d
|	i¤Ž d S )Nr   )rg   r´   ç      @rÐ   rm  )r+   ra  rb  )rO  rc   r×   rP  rQ  r#  )r�   rŠ   rÒ   r‹   r   rR   r�   r�   r4  r'  rÚ   r]  )
r2  rc   r_  rÛ   rÙ   r  r­   rC  rd  r#  r`   r`   ra   Ú
test_argus,  s   ÿzTestFit.test_argusc                 C   st   d}t j | j¡}tj}d}|j|||dœŽ}dddddœ}tj|||d| jd�}t	|||j
|fdd	i| j¤Ž d S )
Nr   )g�µds’z@g@ø¯eä?rg   r´   rÐ   rm  )ÚaÚbra  rb  rR  rN  r#  r×   )r�   rŠ   rÒ   r‹   r   rÇ   r�   r�   r4  r'  rÚ   r]  rp  r`   r`   ra   Ú	test_beta<  s   ÿÿ
ÿzTestFit.test_betac                 C   sl   d}t j | j¡}tj}d}|j|||dœŽ}ddddœ}tj|||| jd�}t	|||j
|fi | j¤Ž d S )Nr   )gÕ)Çç;ÿ?r´   rr  rÐ   rm  )Úcra  rb  ©rO  )r�   rŠ   rÒ   r‹   r   râ   r�   r�   r4  r'  rÚ   r]  rp  r`   r`   ra   Útest_foldnormL  s   zTestFit.test_foldnormc                 C   ór   d}t j | j¡}tj}d}|j|||dœŽ}ddddœ}tj|||d| jd�}t	|||j
|fdd	i| j¤Ž d S )
Nr   )g¹7hº˜Þ@rg   r´   rÐ   rm  )Únura  rb  rR  rN  r#  r×   )r�   rŠ   rÒ   r‹   r   rK   r�   r�   r4  r'  rÚ   r]  rp  r`   r`   ra   Útest_nakagamiZ  s   ÿ
ÿzTestFit.test_nakagamic                 C   rz  )
Nr   )g¾ôkº‹ú?rg   r´   rÐ   rm  )rt  ra  rb  rS  rN  r#  rP  )r�   rŠ   rÒ   r‹   r   r2   r�   r�   r4  r'  rÚ   r]  rp  r`   r`   ra   Útest_powerlawh  s   ÿ
ÿzTestFit.test_powerlawc                 C   ój   d}t j | j¡}tj}d}|j|||dœŽ}dgd }tj|||| jd�}t	|||j
|fi | j¤Ž d S )Nr   )gÍÌÌÌÌÌü?g333333@gffffff@gffffff@rÐ   rm  rH  rx  )r�   rŠ   rÒ   r‹   r   rQ   r�   r�   r4  r'  rÚ   r]  rp  r`   r`   ra   Útest_truncparetow  s   
zTestFit.test_truncparetoc                 C   r~  )Nr   )rË   r   g      ü?r´   rr  rÐ   rm  r)  rx  )r�   rŠ   rÒ   r‹   r   r   r�   r�   r4  r'  rÚ   r]  rp  r`   r`   ra   Útest_truncweibull_min…  s   
zTestFit.test_truncweibull_minc           
      C   sÈ   d}t j | j¡}tj}d\}}}|j|||||d�}dt  ddg¡i}tj|||| j	d�}	t
|	j|||ffi | j¤Ž tj}d\}}|j||||d�}tj||| j	d�}	t
|	j||ffi | j¤Ž d S )	Nr   ©rÌ   çÍÌÌÌÌÌä?r   ©ra  rk   rÑ   r-  r   é   rx  )g¿ž¯Y.Ô?r   )r�   rŠ   rÒ   r‹   r   ræ   r�   r¸   r�   r4  r   rÚ   r]  Ú	bernoulli)
r2  r_  rÛ   rÙ   r-  r.  ra  r­   rC  rd  r`   r`   ra   Útest_missing_shape_bounds”  s   
z!TestFit.test_missing_shape_boundsc                 C   s  d}t j | j¡}tj}d\}}|j|||d�}d}d|i}tj|||| jd�}	t	|	j
||ffi | j¤Ž d\}}|j|||d�}d	}
d
|
i}tj|||| jd�}	t	|	j
||ffi | j¤Ž tj}d\}}|j||||d�}||
dœ}tj|||| jd�}	t	|	j
||ffi | j¤Ž d S )Nr   )ç      ø?r   rƒ  )r   r)  ra  rx  )r   rË   )rb  rk   rÑ   )r/  r)  rb  ©r‡  rË   ©ra  rb  rk   rÑ   ro  )r�   rŠ   rÒ   r‹   r   Únormr�   r�   r4  r   rÚ   r]  )r2  r_  rÛ   rÙ   ra  rb  r­   Ú
loc_boundsrD  rd  Úscale_boundsr`   r`   ra   Útest_fit_only_loc_scale©  s*   
zTestFit.test_fit_only_loc_scalec                 C   sð   d}t j | j¡}tj}d\}}|j||||d�}t ||¡}t|j	dfi | j
¤Ž ||f||fdœ}t |||¡}t|j	||ffi | j
¤Ž tj}d\}	}
}|j|	|
|||d�}dd	d
œ}tj|||| jd�}t|j	|	|
|ffi | j
¤Ž d S )Nr   rˆ  r‰  r+  ro  r�  rƒ  )r   r„  )r‚  r‚  r,  rx  )r�   rŠ   rÒ   r‹   r   rŠ  r�   r�   r   rÚ   r]  ræ   r4  )r2  r_  rÛ   rÙ   ra  rb  r­   rd  rD  r-  r.  rC  r`   r`   ra   Útest_everything_fixedÆ  s    

 zTestFit.test_everything_fixedc           	      C   sz   d}t j | j¡}tj}d}|j|||dœŽ}| ¡ dksJ ‚g d¢}t |||¡}d}|j	 
|¡s4J ‚|jdu s;J ‚d S )Nr   )r)  rÊ   rÐ   r   )©r   é   r+  )rÊ   rÌ   z3Optimization converged to parameter values that areF)r�   rŠ   rÒ   r‹   r   rè   r�   Úminr�   rÈ   Ú
startswithÚsuccess)	r2  r_  rÛ   rÙ   r  r­   rD  rd  rÈ   r`   r`   ra   Útest_failureß  s   zTestFit.test_failurec                 C   s”   d}t j d¡}tj}d}g d¢}|j|||dœŽ}tj|||| jd�}t j|j	|fi | j
¤Žr2J ‚tj||||| jd�}t|j	|fi | j
¤Ž d S )NiÐ  l   ^�s¶ )r„  é   é   r   ))rh   éÈ   )çffffffæ?éF   )g333333ó?éx   rA  rÐ   rx  )r  rO  )r�   rŠ   rÒ   r   rø   r�   r�   r4  ÚallcloserÚ   r]  r   )r2  r_  rÛ   rÙ   rÚ   rD  r­   rd  r`   r`   ra   Ú
test_guessï  s   zTestFit.test_guessc                 C   sd   ddg}t j}dddœ}t j|||dd�}t|jjdd	d
� t j|||dd�}t|jjdd	d
� d S )Nrh   rH  )r   r   ©ç:Œ0âŽyE>rÌ   ro  rR  ©rD  rc   r:  r¶   rº   rS  gR¸…ëQ@)r   r·   r�   r   rÚ   rb  )r2  r­   rÙ   rD  Úres_mleÚres_mser`   r`   ra   Útest_mse_accuracy_1  s   
zTestFit.test_mse_accuracy_1c                 C   s¨   t j d¡}tj}d}|ddƒj||d�}dddœ}tj|||d	d
�}t  |¡}||d  |d  |d  }||d  |d  |d  }	||	| f}
t|j	|
dd� d S )Nl   4gûcävÐD rÌ   r:  é   rÐ   rA  r�  ro  rS  rŸ  r   rL  r   ç-Cëâ6?©rm   )
r�   rŠ   rÒ   r   rµ   r�   r�   r”   r   rÚ   )r2  rÛ   rÙ   r-  r­   rD  rd  rÝ   rt  ru  rÞ   r`   r`   ra   Útest_mse_accuracy_2  s   

zTestFit.test_mse_accuracy_2N)r   )0Ú__name__Ú
__module__Ú__qualname__r   ræ   rÙ   r‹   r�   rŠ   rÒ   rÛ   r�   r­   r6  rI  r¬   rm   r]  r4  r8  r@  rE  rJ  rf  r|   r  Úparametrizer  rj  r  rl  r  rq  rs  r  rv  ry  r|  r}  r  r€  r†  r�  rŽ  r”  rœ  r¢  r¦  r`   r`   r`   ra   r(  q  sR    

3
/"







r(  )xéA   é=   éQ   éX   éE   éY   é7   éT   éV   r²  éG   r­  r²  r­  éN   éC   é`   éB   éI   éK   é;   r´  r¯  é?   éO   éL   r¼  éU   éW   r®  éP   r´  r«  r²  r´  rº  r­  r½  é@   r«  r²  éM   r™  rº  r²  rº  r¹  é\   éZ   r½  rÁ  r´  r¹  r´  é:   r½  r¹  rÂ  rÃ  éR   r­  r»  é6   rÇ  é9   r½  r½  r¹  éJ   rÇ  r¼  rÂ  r¹  r¯  rÀ  éD   r­  r¹  éS   r¹  rÁ  r¹  r¹  r´  r¸  rµ  rÂ  rÊ  rË  r¶  rº  rº  rÁ  r¿  rÊ  r¾  rÁ  rÃ  é]   r™  r³  rÁ  r­  rÌ  rË  é<   r¿  rÂ  rÊ  rÇ  r­  rÃ  r¸  r¿  rº  r­  r¯  rÎ  rÌ  éH   c                   @   sÒ   e Zd Zdd„ Z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„ ƒZdd„ Zdd„ Zej ddg d¢fdg d¢fdg d¢fg¡dd„ ƒZejjej dg d ¢¡d!d"„ ƒƒZd#d$„ Zd%d&„ Zd'S )(ÚTestGoodnessOfFitc                 C   sV  t j}g d¢}d}tjt|d�� tt  ¡ |ƒ W d   ƒ n1 s"w   Y  d}tjt|d�� t|g d¢gƒ W d   ƒ n1 sCw   Y  d}tjt|d�� t||dd� W d   ƒ n1 scw   Y  d}tjt|d�� t||d	d
� W d   ƒ n1 sƒw   Y  d}tjt|d�� t||dd� W d   ƒ d S 1 s¤w   Y  d S )Nr9  z.`dist` must be a \(non-frozen\) instance of...r¿   z2`data` must be a one-dimensional array of numbers.z`statistic` must be one of...Úmm)Ú	statisticz"`n_mc_samples` must be an integer.g     D�@)Ún_mc_samplesz$SeedSequence expects int or sequenceÚherringr0  )r   rŠ  r|   rÄ   Ú	TypeErrorr   r5  )r2  rÙ   rÝ   rÈ   r`   r`   ra   Útest_gof_iv,  s,   ÿÿÿÿ"ÿzTestGoodnessOfFit.test_gof_ivc                 C   s€   t j d¡}t}t  |¡t j|dd�dœ}ttj||d|d�}tj	|tjdi |¤Žj
dd�}t|j|jƒ t|j|jd	d
� d S )Nl   •H]VhŸ1 r   ©Úddofro  Úks©Úknown_paramsrÒ  rÛ   Úexact©rc   ç{®Gázt?rº   r`   )r�   rŠ   rÒ   Ú
examgradesr–   Ústdr   r   rŠ  ÚkstestÚcdfr   rÒ  Úpvalue©r2  rÛ   rÝ   rÛ  rd  rÞ   r`   r`   ra   Útest_against_ksD  s   
ÿz!TestGoodnessOfFit.test_against_ksc                 C   s|   t j d¡}t}ttj|d|d�}t  |¡t j|dd�dœ}tj	|tjdi |¤Žj
dd�}t|j|jƒ t|jd	d
d� d S )Nl   ¤8<*}p~ rÙ  )rÒ  rÑ   r   r×  ro  rÜ  rÝ  g¨5Í;NÑ¡?rÞ  rº   r`   )r�   rŠ   rÒ   rß  r   r   rŠ  r–   rà  rá  râ  r   rÒ  rã  ©r2  rÛ   rÝ   rd  rÛ  rÞ   r`   r`   ra   Útest_against_lillieforsN  s   z)TestGoodnessOfFit.test_against_lillieforsc                 C   s|   t j d¡}t}t  |¡t j|dd�dœ}ttj||d|d�}t 	|tjd	i |¤Žj
¡}t|j|jƒ t|j|jdd� d S )
Nl   vj!$Ó'C r   r×  ro  ÚcvmrÚ  rÞ  rº   r`   )r�   rŠ   rÒ   rß  r–   rà  r   r   rŠ  Úcramervonmisesrâ  r   rÒ  rã  rä  r`   r`   ra   Útest_against_cvmX  s   
ÿz"TestGoodnessOfFit.test_against_cvmc                 C   sV   t j d¡}t  dd¡}dddœ}ttj||d|d�}t|jd	ƒ t|j	d
dd� d S )Nl   jHJE›Ù3 r   ée   g…F6‚F@r�  ro  ÚadrÚ  gV-²�ï@ru   rÞ  rº   ©
r�   rŠ   rÒ   Úaranger   r   rŠ  r   rÒ  rã  ©r2  rÛ   rÝ   rÛ  rd  r`   r`   ra   Útest_against_anderson_case_0b  s   

ÿz.TestGoodnessOfFit.test_against_anderson_case_0c                 C   óT   t j d¡}t  dd¡}ddi}ttj||d|d�}t|jdƒ t|j	d	d
d� d S )Nl   H'èb4:“/ r   rë  rb  gó‡{Uõ=@rì  rÚ  gu“Ví?rn  rÞ  rº   rí  rï  r`   r`   ra   Útest_against_anderson_case_1m  ó   
ÿz.TestGoodnessOfFit.test_against_anderson_case_1c                 C   rñ  )Nl   £P�^Qq­Pr   rë  ra  g�÷fë´HF@rì  rÚ  g¬Zd;@çš™™™™™™?rÞ  rº   rí  rï  r`   r`   ra   Útest_against_anderson_case_2x  ró  z.TestGoodnessOfFit.test_against_anderson_case_2c                 C   sT   t j d¡}tjjdddd|d�}ttj|d|d�}t|j	d	ƒ t|j
d
dd� d S )Nl   ÞiÖ·Uën gáBQ_ *÷?r   rh   rÏ   r‰  rì  ©rÒ  rÛ   gÙÎ÷Sãá?g333333Ã?rÞ  rº   )r�   rŠ   rÒ   r   rî   r�   r   rŠ  r   rÒ  rã  )r2  rÛ   rÝ   rd  r`   r`   ra   Útest_against_anderson_case_3ƒ  s   ÿz.TestGoodnessOfFit.test_against_anderson_case_3c                 C   sv   t j d¡}tjdddd�jd|d�}ttj|d|d	�}tj|d
d�}t	|j
|jd ƒ t	|j|jd d dd� d S )Nl   /‚JGÏ gQûä8’ª?rÊ   r‡  ro  r   rÐ   rì  rö  Úgumbel_r)rÙ   r   rÏ   rÞ  rº   )r�   rŠ   rÒ   r   r=   r�   r   rø  Úandersonr   rÒ  Úcritical_valuesrã  Úsignificance_level)r2  rÛ   rÝ   rd  rÞ   r`   r`   ra   Útest_against_anderson_gumbel_r�  s   ÿÿ
ÿz0TestGoodnessOfFit.test_against_anderson_gumbel_rc                 C   s†   t j d¡}g d¢}dddœ}tjtj||d|d�}t|jdd	d
� d|j  k r.dk s1J ‚ J ‚t|jddd� t|jddd� d S )Nl   ËfKW7/ßz )r£  r   éüÿÿÿé   rv   r)  r   r   r   ro  ÚfillibenrÚ  gG=D£;ˆï?r¤  rº   r   çÍÌÌÌÌÌì?gF8‹§yˆï?gñhãˆµøô>r¥  gffffffì?çü©ñÒMb`?)	r�   rŠ   rÒ   r   r   rŠ  r   rÒ  rã  )r2  rÛ   ÚyrÛ  rd  r`   r`   ra   Útest_against_filliben_norm™  s   
ÿ	z,TestGoodnessOfFit.test_against_filliben_normc                 C   sf   t j d¡}|jdddd�}tjtj|d|d�}dd	d
œ}tjtj||d|d�}t|j|jdd� d S )Nl   1gDùF¦3 rÌ   rÊ   rÏ   )ra  rb  rk   rÿ  rö  r   r   ro  rÚ  gVçž¯Ò<r¥  )	r�   rŠ   rÒ   Únormalr   r   rŠ  r   rÒ  ræ  r`   r`   ra   Útest_filliben_property°  s   
ÿ
ÿz(TestGoodnessOfFit.test_filliben_propertyÚcaseé   )gV-²í?g–C‹lçûí?çffffffî?g-²�ï§î?g¶óýÔxéî?é2   )gã¥›Ä °î?gáz®Gáî?g´Èv¾Ÿï?çÝ$�•Cï?g1¬Zdï?é_   )r
  g‡ÙÎ÷Sï?gÛù~j¼tï?gZd;ßO�ï?gÙÎ÷Sã¥ï?c           	      C   sp   t j d¡}|\}}| |¡}dddœ}tjtj||d|d�}t  g d¢¡}t |j|d ¡}t	||d	d
� d S )Nl   ý+ó^8r   r   ro  rÿ  rÚ  )rÞ  r/  rô  ru   rn  rÏ   r  rº   )
r�   rŠ   rÒ   r   r   rŠ  r¸   ÚscoreatpercentileÚnull_distributionr   )	r2  r  rÛ   r-  rÞ   rÝ   rÛ  rd  Úpercentilesr`   r`   ra   Ú test_against_filliben_norm_table»  s   

ÿz2TestGoodnessOfFit.test_against_filliben_norm_table))r)  gì„ü´¥î?g;ßO�—nÞ?)r£  g¢ØÇ„‡î?gà-� Ø?)r•  g-€hC/î?g\ AñcÌÍ?c                 C   sZ   |\}}}t j d¡}|j|d�}tjtj|d|d�}t|j|dd� t|j	|dd� d S )	Nl   ìvªT¨V�_ )rk   rÿ  rö  r¤  r¥  g¸…ëQ¸Ž?rº   )
r�   rŠ   rÒ   r  r   r   Úrayleighr   rÒ  rã  )r2  r  r-  Úref_statisticÚ
ref_pvaluerÛ   rÝ   rd  r`   r`   ra   Útest_against_ppccÊ  s   
ÿz#TestGoodnessOfFit.test_against_ppccc           	   	   C   sŽ  t j d¡}tjjdddd|d�}ddi}d	d
i}ddi}t j d¡}ttj|d||||d�}t  |j	j
jd¡r:J ‚t|j	j
jd
ƒ t|j	j
jdƒ ddi}t j d¡}ttj|d||||d�}t j|j	j
j|j	j
jdd�rpJ ‚t j|j|jdd�r|J ‚t|j	j
jd
ƒ t|j	j
jdƒ dd
dœ}t j d¡}ttj|d||||d�}t|j	j
jdƒ t|j	j
jd
ƒ t|j	j
jdƒ t  |j|j¡rÅJ ‚d S )Nì   ÏzøV8½t g˜}¡-Àr   rh   r	  r‰  rw  gÍÌÌÌÌÌ*@rb  gö(\�Âu+@ra  g33333³+À)rÓ  Úguessed_paramsÚ
fit_paramsrÛ  rÛ   rž  r¥  )rw  rb  )r�   rŠ   rÒ   r   rî   r�   r   rñ   r›  Ú
fit_resultrÚ   rw  r   rb  ra  r  )	r2  rÛ   rÝ   r  r  rÛ  rß   rà   Úres3r`   r`   ra   Útest_params_effectsÝ  sT   ÿ
ý
ý

ÿ
ÿ

ýz%TestGoodnessOfFit.test_params_effectsc                 C   sn   dd„ }t j d¡}tjjd|d�}ttj|dddœ||d	�}g d
¢}g d¢}t  |j|¡}t	||dd� d S )Nc                S   s<   t j||d�}|  |¡}t j||ddd�}t j|d |d�S )Nrr   r   r   )rs   ÚprependÚappendrh   )r�   r”   râ  r©   rÖ   )rÙ   r­   rs   rÝ   r  r¯   r`   r`   ra   Ú	greenwood  s   
z:TestGoodnessOfFit.test_custom_statistic.<locals>.greenwoodr  r)  rÐ   r   r   ro  rÚ  )r/  ru   rn  gš™™™™™É?rÍ   gš™™™™™Ù?rÊ   g333333ã?r˜  gš™™™™™é?r   r  rp   )g¬ãø¡ÒˆÇ?gxµÜ™	†É?g&¤à)äÊ?gW>ËóàîÌ?gãûâR•¶Î?gEÕ¯t><Ð?gí¸áwÓ-Ñ?gLÆ1’=BÒ?gŠ­ i‰•Ó?g1³Ïc”gÕ?gV(Òýœ‚Ø?gŽ?QÙ°¦Û?g­hsœÛ„á?rÞ  rº   )
r�   rŠ   rÒ   r   r·   r�   r   Úquantiler  r   )r2  r  rÛ   r­   Úresultr.  Úexact_quantilesÚsimulated_quantilesr`   r`   ra   Útest_custom_statistic  s   	þz'TestGoodnessOfFit.test_custom_statisticN)r§  r¨  r©  rÖ  rå  rç  rê  rð  rò  rõ  r÷  r|   r  r  rü  r  r  rª  r  r  r  r!  r`   r`   r`   ra   rÐ  *  s.    






þ
2rÐ  c                   @   s   e Zd Zdd„ ZdS )ÚTestFitResultc                    sô   t j d¡‰ tjjdddˆ d�}‡ fdd„}dd	g}tjtj|||d
�}z(dd l}d}tj	t
|d�� |jdd� W d   ƒ W d S 1 sEw   Y  W d S  ttfyy   d}tj	t|d�� |jdd� W d   ƒ Y d S 1 sqw   Y  Y d S w )Nl   ‘u!u°\xD r   r   rÏ   rÐ   c                     s   t | i |¤dˆ i¤ŽS r1  r   )r3  Úkwargsr0  r`   ra   rO  4  s   z-TestFitResult.test_plot_iv.<locals>.optimizerr�  r+  rx  z!`plot_type` must be one of \{'...r¿   Úllama)Ú	plot_typez2matplotlib must be installed to use method `plot`.)r�   rŠ   rÒ   r   rŠ  r�   r�   Ú
matplotlibr|   rÄ   r5  ÚplotÚModuleNotFoundErrorÚImportError)r2  r­   rO  rD  rd  r&  rÈ   r`   r0  ra   Útest_plot_iv0  s"   &ÿ&ÿþzTestFitResult.test_plot_ivN)r§  r¨  r©  r*  r`   r`   r`   ra   r"  /  s    r"  r\   )r  r   r×   )7ry   Únumpyr�   Únumpy.testingr   rZ  r   r   r|   Úscipyr   Úscipy.optimizer   Útest_continuous_basicr   Ú!scipy.stats._distn_infrastructurer	   Úscipy.stats._distr_paramsr
   Úscipy.statsr   r‰   r…   rˆ   Úmle_failing_fitsÚmle_Xslow_fitsr�   Úmm_failing_fitsÚmm_XXslow_fitsÚmm_Xslow_fitsr{   r~   r’   r]   rb   r  r  rª  r«   r±   r¹   r¼   rÉ   rŠ  ræ   rá   r  r  r  r  r'  r(  rß  rÐ  r"  r`   r`   r`   ra   Ú<module>   sp    


Kÿÿ
.?

ÿ	   2
  