
     hp                        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eez   edZddgZd Zej        j        ej                             d e                      ej                             dddg          d                                     Z!d0dZ"d Z#d Z$d Z%ej                             de
j&        dfe
j'        dfg          d              Z(d! Z)d" Z*d# Z+ej                             d$ e+                      d%             Z,	 	 d1d(Z- G d) d*          Z.g d+Z/ G d, d-          Z0 G d. d/          Z1dS )2    N)assert_allcloseassert_equal)statsdifferential_evolution   )distcont)FitError)distdiscrete)goodness_of_fit)    i'        ?g      ?)burrchi2
gausshypergenexpongengammakappa4ksonekstwomielkencfncx2pearson3powerlognorm
truncexpontruncparetotukeylambdavonmiseslevy_stable	trapezoidtruncweibull_minstudentized_range)/alpha	betaprimer   burr12cauchychir   crystalballdgammadweibullffatiguelifefisk
foldcauchy
genextremer   genhyperbolicgennorm	genpareto
halfcauchyinvgamma
invweibull	johnsonsukappa3r   r   levylevy_lr!   
loglaplacelomaxr   nakagamir   nctr   paretor   	powernorm
skewcauchytr"   triangr   r#   r   r$   )argusexponpow	exponweibr   r   genhalflogistichalfgennormgompertz	johnsonsbr   	kstwobignrecipinvgaussr   r    vonmises_line)MMMLEerlangr2   c               #   B   K   t           D ]\  } }| t          vr| |fV  d S N)r	   skip_fit)distnameargs     V/var/www/html/Sam_Eipo/venv/lib/python3.11/site-packages/scipy/stats/tests/test_fit.pycases_test_cont_fitrX   I   sA      
 "    #8##C-       zdistname,argmethodrP   rO   c           	         | t           |         v rT	 t          t          j        d                    }n# t          $ r d}Y nw xY w|rd| z  }|dz  }t          j        |           t          t          |           }t          j
        |ddgg          }t          j        t          j        |t          z  t          j        |j        dz   t                     g          d          }t"          D ]$}t          j                            d	           t          j        d
          5   |j        |d|i}	|                    |	|          }
d d d            n# 1 swxY w Y   |
|z
  }t          j        t          j        |	                                          t          z  t           g          |d<   t          j        t          j        |
                    rt7          d          t          j        t          j        |          |k              r d S &dt;          |          z  }|dt;          |
          z  z  }|dt;          |          z  z  }t7          d|j        z  |z             )NSCIPY_XFAILTz$Fitting %s doesn't work reliably yetzH [Set environment variable SCIPY_XFAIL=1 to run this test nevertheless.]g              ?   r   i  ignore)allsizerZ   znan returned in fitzparameter: %s
zestimated: %s
zdiff     : %s
zfit not very good in %s
)failing_fitsintosenviron	Exceptionpytestxfailgetattrr   nphstackmaxvstackthresh_percentfullnumargs
thresh_min	fit_sizesrandomseederrstatervsfitabsmeananyisnanAssertionErrorr`   strname)rU   rV   rZ   rj   msgdistfntrueargdiffthresholdfit_sizerx   estdifftxts                rW   test_cont_fitr   S   s    <'''	BJ}5666EE 	 	 	EEE	 	88CC + ,CLUH%%FisCj)**GF29gn&<&(gfnQ.>
&K&K&M N N M  N N
	t[X&&& 	1 	1&*S1(11C**S*00C	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 W} FBF388::$6$6~$E$.$0 1 1b 6"(3--   	 !6777vbfTllm344   #g,,. 3s88++ 3t99,,86;FLMMMs!    2 A A %EE	E	c                     t          t          |           }|                    |          dd          }t          |||d| z             d S )Nrc   z"poor mle fit of (loc, scale) in %s)atolerr_msg)rk   r   ry   r   )r   datadesiredr   dactuals         rW   _check_loc_scale_mle_fitr      s^    tAUU4[[FFG$@4GI I I I I IrY   c                      t          j        g d          } t          d| ddgd           t          d| ddgd           d S )N))\(?{Gz?r   r   Gz?r   r          @uniformr   gGz?MbP?expongp=
ף?)rl   arrayr   )r   s    rW   "test_non_default_loc_scale_mle_fitr      sN    8DDDEEDYtTlDAAAWdT7OTBBBBBrY   c                  x    g d} t           j                            | d          }t          |ddgd           dS )zgh-6167)r   r   r   r   r^   r^   r^   r^   r   )flocr]   r   r   N)r   r   ry   r   )r   phats     rW   test_expon_fitr      sC    ###D;??4a?((DD1c(......rY   c                     t          j        t          j        d          t          j        d          g          } d}t	          j        t          |          5  t	          j        t                    5  t          j
                            |            d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )N      z0Optimization converged to parameters that are...match)rl   concatenatezerosonesri   raisesr
   warnsRuntimeWarningr   betary   )r   messages     rW   test_fit_errorr      s   >28B<<566D@G	xw	/	/	/  L(( 
t                                s6   B62 BB6B"	"B6%B"	&B66B:=B:zdist, params)      ?      @)
   g333333?r^   c                 n   t           j                            d          }t          | d          r| j        }n| j        } | j        |d|d} ||g|R                                   }|                     ||          }| 	                    ||          }t          ||           t          ||           d S )Nig:pdfd   ra   random_state)rl   ru   default_rnghasattrlogpdflogpmfrx   sumnnlf_penalized_nnlfr   )distparamsrnglogpxfxrefres1res2s           rW   test_nnlf_and_related_methodsr      s     )

	
*
*CtU &s555A6!f!!##
#C99VQD**DD#D#rY   c               #      K   h d} h d}h d}t          t          t          z             D ]}|| v st          |t                    s9d}t          j        |t
          j                            |                    V  T||v r9d}t          j        |t
          j        	                    |                    V  ||v r9d}t          j        |t
          j        
                    |                    V  |V  d S )	N>   rE   r   r   foldnormr!   r   r#   r$   >,   r-   rC   r)   r/   ricer%   binomr=   rdistr'   r9   r   nbinomr@   arcsiner3   lognormrandintr   bradfordr,   rF   rJ   invgaussr>   r   powerlawr&   r4   rK   r8   rL   rA   r0   r1   r7   r<   
wrapcauchyr*   r.   rI   weibull_maxnorminvgaussrM   >   r   r?   r   r   r   r   rD   skellamzipfianr   r   	betabinomrG   	hypergeomr"   	truncnormr   
loguniform
nhypergeom
reciprocalgeninvgaussr   r   r2   rH   nchypergeom_fishernchypergeom_walleniusztested separatelyreasonmarkstoo slow (>= 0.25s)too slow (>= 1.0s))dictr   r	   
isinstancer   ri   parammarkskipslowxslow)skip_basic_fitslow_basic_fitxslow_basic_fitr   r   s        rW   cases_test_fit_mler      sA     L L LN	: 	: 	:N) ) )O \H,--  >!!D#)>)>!(F,t6;+;+;6+;+J+JKKKKKKK^##*F,t6;+;+;6+;+J+JKKKKKKK_$$)F,t6;+<+<F+<+K+KLLLLLLLJJJJ rY   c               #     K   h d} h d}h d}dh}t          t          t          z             D ]}|| v st          |t                    s9d}t          j        |t
          j                            |                    V  U||v r9d}t          j        |t
          j        	                    |                    V  ||v r9d	}t          j        |t
          j        
                    |                    V  ||v r9t
          j                            d
          }t          j        ||          V  |V  d S )N>   rE   r   r   skewnormr    r   r   r!   r   r2   r$   >7   rC   r)   r   r/   waldr%   gammar=   anglitr+   rQ   r9   r   r@   rD   r   r   maxwellr   r   r   r,   rF   r   rJ   loggammar>   r   	exponnormrG   r4   r   rK   r8   rL   rA   r0   r1   r7   r<   r   r   r   r*   r.   genlogisticr   r   weibull_minsemicircularrM   rN   rH   r#   laplace_asymmetric>   r-   r   r?   r   r   r   r   r   r'   r   r3   r   r   r   r6   r   r   r   r&   r"   r   r   r   rI   r   r   r   r   r   zFails. Oh well.r   r   r   r   zignore::RuntimeWarning)r   r   r	   r   r   ri   r   r   r   r   r   filterwarnings)r   r   r   warns_basic_fitr   r   r   s          rW   cases_test_fit_mser      s     " " "N# # #NF F FO !kO\H,--  >!!D#)>)>!&F,t6;+;+;6+;+J+JKKKKKKK^##*F,t6;+;+;6+;+J+JKKKKKKK_$$)F,t6;+<+<F+<+K+KLLLLLLL_$$;--.FGGD,t40000000JJJJ rY   c               #      K   t          t                                                    D ]%\  } }t          | t                    r| dv r| |fV  &d S )N>   rM   r$   )r   r	   itemsr   r   )rU   shapess     rW   cases_test_fitstartr  	  sk       NN0022  &8S)) 	BBB	 rY   zdistname, shapesc                 F   t          t          |           }t          j                            d          }|                    d          }t          j        dd          5  |                    |          }d d d            n# 1 swxY w Y    |j        |d d          sJ d S )NiV r   r_   )invaliddividerc   )rk   r   rl   ru   r   rw   	_fitstart	_argcheck)rU   r  r   r   r   guesss         rW   test_fitstartr    s    5(##D
)

	
*
*C::b>>D	Xh	7	7	7 % %t$$% % % % % % % % % % % % % % % 4>5":&&&&&&s    BB	BHz>r   c                     t          | |          } |||          } |||          }	||	k     s%t          j                            ||	||           d S d S )N)rtolr   )rk   rl   testingr   )
r   r   params1params0r  r   	nlff_namenlffnlff1nlff0s
             rW   assert_nlff_less_or_closer    sh    4##DD$ED$EEMM

""5%d"FFFFF MrY   c                      e Zd Zej        ZdZej        	                    e          Z
ej                            ddde
          ZddgZdddZd	Zd
ZeedZd Zd Zd Zd Zd Zd Zej                            d e                      d             Zej                            d e                      d             Zd Zd Z d Z!d Z"d Z#d Z$d Z%d Z&ej        j'        d             Z(d Z)d Z*d S )!TestFitl   Va   r   r   r   r   r   r   r   np皙?g{Gz?)r   r  c                     t          |ddi|S )Nrv   r   r   )selfargskwdss      rW   optzTestFit.opt1  s    %t<!<t<<<rY   c                     d}t          j        t          |          5  t          j        d| j        | j                   d d d            d S # 1 swxY w Y   d S )Nz `dist` must be an instance of...r   r   )ri   r   
ValueErrorr   ry   r   shape_bounds_ar!  r   s     rW   test_dist_ivzTestFit.test_dist_iv4  s    4]:W555 	: 	:Ib$)T%8999	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	:s   !AAAc                    d}t          j        t          |          5  t          j        | j        g dg| j                   d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          j        | j        dddt          j        g| j                   d d d            n# 1 swxY w Y   t          j        t          |          5  t          j        | j        dddt          j	        g| j                   d d d            n# 1 swxY w Y   t          j        t          |          5  t          j        | j        g d| j                   d d d            d S # 1 swxY w Y   d S )	Nz'`data` must be exactly one-dimensional.r   r   r^      z.All elements of `data` must be finite numbers.r   r^   r,  )123)
ri   r   r&  r   ry   r   r'  rl   naninfr(  s     rW   test_data_ivzTestFit.test_data_iv9  s   ;]:W555 	C 	CIdi)))d.ABBB	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C C]:W555 	I 	IIdi!Q26!2D4GHHH	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I]:W555 	I 	IIdi!Q26!2D4GHHH	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I]:W555 	G 	GIdi$2EFFF	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	GsG   $AAA6/B11B58B5/DDD8#E((E,/E,c                    d}dddd}t          j        t          |          5  t          j        | j        | j        |           d d d            n# 1 swxY w Y   d}ddg}t          j        t          |          5  t          j        | j        | j        |           d d d            n# 1 swxY w Y   d	}dd
g}t          j        t          |          5  t          j        | j        | j        |           d d d            n# 1 swxY w Y   ddg}t          j        t          |          5  t          j        | j        | j        |           d d d            n# 1 swxY w Y   d}dg}t          j        t          |          5  t          j        | j        | j        |           d d d            n# 1 swxY w Y   d}g d}t          j        t          |          5  t          j        | j        | j        |           d d d            n# 1 swxY w Y   d}ddd}t          j        t          |          5  t          j        | j        | j        |           d d d            n# 1 swxY w Y   d}ddg}t          j        t          |          5  t          j        | j        | j        |           d d d            n# 1 swxY w Y   d}ddg}t          j        t          |          5  t          j        | j        | j        |           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          j        | j        | j                   d d d            n# 1 swxY w Y   t          j
         t          j
        fdg}t          j        t          |          5  t          j        | j        | j        |           d d d            d S # 1 swxY 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`)ri   r   r   r   ry   r   r   r   r&  rl   r1  )r!  r   shape_boundsboundss       rW   test_bounds_ivzTestFit.test_bounds_ivF  s^   E$6@@\.888 	: 	:IdiL999	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: K"F+]:W555 	: 	:IdiL999	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: K"K0]:W555 	: 	:IdiL999	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	:1v]:W555 	: 	:IdiL999	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: Ly]:W555 	: 	:IdiL999	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: P555]:W555 	4 	4IdiF333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 C$622]:W555 	: 	:IdiL999	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: C(]:W555 	: 	:IdiL999	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: K"F+]:W555 	: 	:IdiL999	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: E]:W555 	, 	,Idi+++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,&"&)62]:W555 	: 	:IdiL999	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	:s   !AAA=!B**B.1B.!DD
D-!EE!E!F22F69F6!HHH8!I%%I),I)!J>>KK*!LLL? M++M/2M/,!OO!Oc                    d}dddd}t          j        t          |          5  t          j        | j        | j        | j        |           d d d            n# 1 swxY w Y   d}dd	d
}t          j        t          |          5  t          j        | j        | j        | j        |           d d d            n# 1 swxY w Y   ddg}t          j        t          |          5  t          j        | j        | j        | j        |           d d d            n# 1 swxY w Y   ddgg}t          j        t          |          5  t          j        | j        | j        | j        |           d d d            n# 1 swxY w Y   d}dg}t          j        t          |          5  t          j        | j        | j        | j        |           d d d            n# 1 swxY w Y   d}g d}t          j        t          |          5  t          j        | j        | j        | j        |           d d d            n# 1 swxY w Y   d}ddd
}t          j        t          |          5  t          j        | j        | j        | j        |           d d d            n# 1 swxY w Y   d}g d}t          j        t          |          5  t          j        | j        | j        | j        |           d d d            n# 1 swxY w Y   d}ddd
}t          j        t          |          5  t          j        | j        | j        | j        |           d d d            n# 1 swxY w Y   d}g d}t          j        t          |          5  t          j        | j        | j        | j        |           d d d            d S # 1 swxY w Y   d S )Nz2Guesses provided for the following unrecognized...r   r      r5  r   )r
  z+Each element of `guess` must be a scalar...hir  r-   r^   z-A `guess` sequence must contain at least 2...z1A `guess` sequence may not contain more than 3...)r   r^   r,     z"Guess for parameter `n` rounded...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   )
ri   r   r   r   ry   r   r   shape_bounds_dr   r&  )r!  r   r
  s      rW   test_guess_ivzTestFit.test_guess_ivy  s   Fc,,\.888 	N 	NIdiD,?uMMMM	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N @d##]:W555 	N 	NIdiD,?uMMMM	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	NC]:W555 	N 	NIdiD,?uMMMM	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	NQ]:W555 	N 	NIdiD,?uMMMM	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N B]:W555 	N 	NIdiD,?uMMMM	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N F]:W555 	N 	NIdiD,?uMMMM	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 7%%\.888 	N 	NIdiD,?uMMMM	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 9\.888 	N 	NIdiD,?uMMMM	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 7d##\.888 	N 	NIdiD,?uMMMM	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 9\.888 	N 	NIdiD,?uMMMM	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	Ns   (AAA(B99B= B=#(DDD(E66E:=E:!(GGG(H55H9<H9"(JJJ(K66K:=K:#(MMM(N88N<?N<c                 H   d}t          t          t          z             }t          j                            | j                  }t          t          |          }t          j	        ||                   }t          j
        t          |          dz   dft          j                  }|dt          j        |          z  z  |d ddf<   |dt          j        |          z  z  |d ddf<   d|d<   d	|d
<    |j        |d          }	 |j        |d
          }
t          ||                   |	|
gz   }t          |dd          r9|d d
         }t          j        |	          |d
<    |j        |||d}|d d
         }t          |dd          r |j        |||d}t%          j                    5 }|                    t*          d           t          j        ||||| j                  }d d d            n# 1 swxY w Y   ddd}||         }t1          |||j        |fi | j        d|i d S )Nr   r^   )dtypeg      $@rc   r   r   r4  )gؗҜ<r   pmfFr   r   zoverflow encountered)rZ   	optimizerr   _penalized_nlpsf)mlemser  )r   r	   r   rl   ru   r   rv   rk   r   r   emptylenfloat64signr   listfloorrx   nptsuppress_warningsfilterr   ry   r$  r  r   tols)r!  	dist_namerZ   N	dist_datar   r   r  r7  locscaler   r   supres
nlff_namesr  s                    rW   basic_fit_testzTestFit.basic_fit_test  s   L011	i##DI..ui(()I.//3v;;?A.bjAAARWV__ 44ssAvRWV__ 44ssAvr
 r
ck6":&VBZ(9Y'((C<74&& 	!crc(ChsmmCG48Sqs;;;DCRC[F4&& 	<48Sqs;;;D"$$ 	0JJ~'=>>>)D$v&*h0 0 0C	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0
 $,>??
v&	!$cj# 	7 	7 	7 	7,5	7 	7 	7 	7 	7 	7s   &:G,,G03G0rQ  c                 2    |                      |d           d S )NrE  rY  r!  rQ  s     rW   test_basic_fit_mlezTestFit.test_basic_fit_mle      Iu-----rY   c                 2    |                      |d           d S )NrF  r[  r\  s     rW   test_basic_fit_msezTestFit.test_basic_fit_mse  r^  rY   c                    d}t           j                            | j                  }t          j        }d} |j        |||d}dddd}t	          j        |||| j                  }t          |||j
        |fi | j         d S )Nr   )r]   r         @r   皙?r   )r)   rT  rU  rC  )rl   ru   r   rv   r   rE   rx   ry   r$  r  r   rP  r!  rR  r   r   r  r   r6  rW  s           rW   
test_arguszTestFit.test_argus  s     i##DI..{txac:::(YOOidLDHEEE!$cj&NNDINNNNNrY   c                    d}t           j                            | j                  }t          j        }d} |j        |||d}dddd}t	          j        |||| j                  }t          |||j
        |fi | j         d S )Nr   )g);?r   rb  r   rc  )crT  rU  re  )rl   ru   r   rv   r   r   rx   ry   r$  r  r   rP  rf  s           rW   test_foldnormzTestFit.test_foldnorm  s     i##DI..~,txac:::&y9MMidLDHEEE!$cj&NNDINNNNNrY   c                    d}t           j                            | j                  }t          j        }d} |j        |||d}dgdz  }t	          j        |||| j                  }t          |||j
        |fi | j         d S )Nr   )g?g333333@gffffff@gffffff@r   rc  r<  re  )rl   ru   r   rv   r   r   rx   ry   r$  r  r   rP  rf  s           rW   test_truncparetozTestFit.test_truncpareto  s     i##DI.. %txac:::!{1}idLDHEEE!$cj&NNDINNNNNrY   c                    d}t           j                            | j                  }t          j        }d} |j        |||d}dgdz  }t	          j        |||| j                  }t          |||j
        |fi | j         d S )Nr   )r   r   g      ?r   rb  r   rc  r  re  )rl   ru   r   rv   r   r#   rx   ry   r$  r  r   rP  rf  s           rW   test_truncweibull_minzTestFit.test_truncweibull_min  s     i##DI..%*txac:::!{1}idLDHEEE!$cj&NNDINNNNNrY   c                 
   d}t           j                            | j                  }t          j        }d\  }}}|                    |||||          }dt          j        ddg          i}t	          j        |||| j	                  }	t          |	j        |||ffi | j         t          j        }d\  }}|                    ||||          }t	          j        ||| j	                  }	t          |	j        ||ffi | j         d S )	Nr   r   ?r   rT  ra   r   r  r      re  )gY.?r   )rl   ru   r   rv   r   r   rx   r   ry   r$  r   r   rP  	bernoulli)
r!  rR  r   r   r  r  rT  r   r6  rW  s
             rW   test_missing_shape_boundsz!TestFit.test_missing_shape_bounds
  s   
 i##DI..{	1cxx1#ACx@@RXq"g../idLDHEEE
Q3K==49===3xxsx==iddh777
QH::	:::::rY   c                    d}t           j                            | j                  }t          j        }d\  }}|                    |||          }d}d|i}t	          j        |||| j                  }	t          |	j
        ||ffi | j         d\  }}|                    |||          }d}
d	|
i}t	          j        |||| j                  }	t          |	j
        ||ffi | j         t          j        }d
\  }}|                    ||||          }||
d}t	          j        |||| j                  }	t          |	j
        ||ffi | j         d S )Nr   )      ?r   rr  )r   r  rT  re  )r   r   )rU  ra   r   rU  rw  r   rT  rU  ra   r   rT  rU  )rl   ru   r   rv   r   normrx   ry   r$  r   r   rP  )r!  rR  r   r   rT  rU  r   
loc_boundsr7  rW  scale_boundss              rW   test_fit_only_loc_scalezTestFit.test_fit_only_loc_scale  sq   i##DI..z
UxxCacx::
$idFdh???
S%L>>DI>>> 
Uxxe!#x>><(idFdh???
S%L>>DI>>> z
UxxCu13xGG#l;;idFdh???
S%L>>DI>>>>>rY   c                 D   d}t           j                            | j                  }t          j        }d\  }}|                    ||||          }t	          j        ||          }t          |j	        dfi | j
         ||f||fd}t	          j        |||          }t          |j	        ||ffi | j
         t          j        }d\  }	}
}|                    |	|
|||          }dd	d
}t	          j        |||| j                  }t          |j	        |	|
|ffi | j
         d S )Nr   rx  ry  r  rz  rp  rr  )r   rs  )rq  rq  r  re  )rl   ru   r   rv   r   r{  rx   ry   r   r   rP  r   r$  )r!  rR  r   r   rT  rU  r   rW  r7  r  r  r6  s               rW   test_everything_fixedzTestFit.test_everything_fixed<  s>   i##DI..z
UxxCu13xGG id##
F88di888 suen==idF++
S%L>>DI>>> {	1cxx1#ACx@@$<88idLDHEEE
Q3K==49=====rY   c                 D   d}t           j                            | j                  }t          j        }d} |j        |||d}|                                dk    sJ g d}t	          j        |||          }d}|j	        
                    |          sJ |j        du sJ d S )Nr   )r  r   r   r   )r      r  )r   r   z3Optimization converged to parameter values that areF)rl   ru   r   rv   r   r   rx   minry   r   
startswithsuccess)	r!  rR  r   r   r  r   r7  rW  r   s	            rW   test_failurezTestFit.test_failureU  s    i##DI..|txac:::xxzzQ---idF++G{%%g.....{e######rY   c                 v   d}t           j                            | j                  }t          j        }d}g d} |j        |||d}t	          j        |||| j                  }t          j	        |j
        |fi | j        rJ t	          j        ||||| j                  }t          |j
        |fi | j         d S )Ni  )rs        r   ))r^      )gffffff?F   )g333333?x   r4  r   re  )r
  rC  )rl   ru   r   rv   r   r   rx   ry   r$  allcloser   rP  r   )r!  rR  r   r   r   r7  r   rW  s           rW   
test_guesszTestFit.test_guesse  s     i##DI..;;;txac:::idFdh???;sz6??TY?????idF&DHMMM
F88di88888rY   c                     ddg}t           j        }ddd}t          j        |||d          }t          |j        j        dd	
           t          j        |||d          }t          |j        j        dd	
           d S )Nr^   r<  )r   r   :0yE>r   rz  rE  r7  rZ   r,  r   r   rF  gRQ@)r   r   ry   r   r   rU  )r!  r   r   r7  res_mleres_mses         rW   test_mse_accuracy_1zTestFit.test_mse_accuracy_1v  s     1v{*55)D$veDDD,ad;;;;)D$veDDD,e$??????rY   c                    t           j                            d          }t          j        }d} |dd                              ||          }ddd}t          j        |||d	
          }t          j        |          }||d         z  |d         z
  |dz
  z  }||d         z  |d         z
  |dz
  z  }	||	|z
  f}
t          |j	        |
d           d S )Nl   4gcvD r   r,     r   r4  r  rz  rF  r  r   rA  r   g-C6?r  )
rl   ru   r   r   r   rx   ry   sortr   r   )r!  r   r   r  r   r7  rW  r   abr   s              rW   test_mse_accuracy_2zTestFit.test_mse_accuracy_2  s     i##$788}tAqzz~~13~77 :66id6%@@@ GDMMqtVae^a!e$quWqt^a!e$1f
Cd333333rY   N)+__name__
__module____qualname__r   r   r   rv   rl   ru   r   r   rx   r   r'  r=  r   r  rP  r$  r)  r2  r8  r>  rY  ri   r   parametrizer   r]  r   r`  rg  rj  rl  rn  ru  r~  r  r  r   r  r  r   rY   rW   r  r  &  s       ;DD
)


%
%C;??1c#?>>Dv&N"00NDD$''D= = =: : :
G G G1: 1: 1:f-N -N -N^ 7  7  7D [[*<*<*>*>??. . @?. [[*<*<*>*>??. . @?.O O OO O OO O OO O O; ; ;*? ? ?:> > >2$ $ $  [9 9 9 	@ 	@ 	@4 4 4 4 4rY   r  )xA   =   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                   n    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
ej        j        d	             Zd
 ZdS )TestGoodnessOfFitc                    t           j        }g d}d}t          j        t          |          5  t          t          j                    |           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          |g dg           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          ||d           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          ||d	
           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t          ||d           d d d            d S # 1 swxY w Y   d S )Nr+  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"'herring' cannot be used to seed aherring)r   )r   r{  ri   r   	TypeErrorr   r&  )r!  r   r   r   s       rW   test_gof_ivzTestGoodnessOfFit.test_gof_iv  s   zIIC]9G444 	- 	-EJLL!,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- G]:W555 	/ 	/D999+...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 2]:W555 	5 	5D!t4444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 7]9G444 	: 	:D!&9999	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 7]:W555 	= 	=D!)<<<<	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	=sY   "AA #A B$$B(+B(C++C/2C/D22D69D6E::E>E>c                    t           j                            d          }t          }t          j        |          t          j        |d          d}t          t          j        ||d|          }t          j	        |t          j        di |j
        d          }t          |j        |j                   t          |j        |j        d	
           d S )Nl   H]Vh1 r   ddofrz  ksknown_paramsr  r   exactrb   {Gzt?r   r  )rl   ru   r   
examgradesr{   stdr   r   r{  kstestcdfr   r  pvaluer!  r   r   r  rW  r   s         rW   test_against_ksz!TestGoodnessOfFit.test_against_ks  s    i##$788!wqzzBF114E4E4EFFej!,(,3@ @ @l1ej88<88<WMMMs}555
CJT::::::rY   c                    t           j                            d          }t          }t	          t
          j        |d|          }t          j        |          t          j        |d          d}t          j	        |t          j        di |j
        d          }t          |j        |j                   t          |j        d	d
           d S )Nl   8<*}p~ r  r  r   r   r  rz  r  rb   g5;Nѡ?r  r   r  )rl   ru   r   r  r   r   r{  r{   r  r  r  r   r  r  )r!  r   r   rW  r  r   s         rW   test_against_lillieforsz)TestGoodnessOfFit.test_against_lilliefors  s    i##$788ej!t#NNN!wqzzBF114E4E4EFFl1ej88<88<WMMMs}555
F666666rY   c                    t           j                            d          }t          }t          j        |          t          j        |d          d}t          t          j        ||d|          }t          j	        |t          j        d	i |j
                  }t          |j        |j                   t          |j        |j        d           d S )
Nl   vj!$'C r   r  rz  cvmr  r  r   r  )rl   ru   r   r  r{   r  r   r   r{  cramervonmisesr  r   r  r  r  s         rW   test_against_cvmz"TestGoodnessOfFit.test_against_cvm  s    i##$788!wqzzBF114E4E4EFFej!,(-CA A A"1ej&@&@<&@&@&DEEs}555
CJT::::::rY   c                    t           j                            d          }t          j        dd          }ddd}t	          t
          j        ||d|          }t          |j        d	           t          |j	        d
d           d S )Nl   jHJE3 r   e   gF6F@r  rz  adr  gV-@r  r  r   
rl   ru   r   aranger   r   r{  r   r  r  r!  r   r   r  rW  s        rW   test_against_anderson_case_0z.TestGoodnessOfFit.test_against_anderson_case_0  s    i##$788Ia02>>ej!,(,3@ @ @u---
Dt444444rY   c                 
   t           j                            d          }t          j        dd          }ddi}t	          t
          j        ||d|          }t          |j        d           t          |j	        d	d
           d S )Nl   H'b4:/ r   r  rU  g{U=@r  r  guV?rd  r  r   r  r  s        rW   test_against_anderson_case_1z.TestGoodnessOfFit.test_against_anderson_case_1  s    i##$788Ia!34ej!,(,3@ @ @u---
Cd333333rY   c                 
   t           j                            d          }t          j        dd          }ddi}t	          t
          j        ||d|          }t          |j        d           t          |j	        d	d
           d S )Nl   P^QqPr   r  rT  gfHF@r  r  gZd;@g?r  r   r  r  s        rW   test_against_anderson_case_2z.TestGoodnessOfFit.test_against_anderson_case_2  s    i##$677Ia/0ej!,(,3@ @ @u---
E555555rY   c                    t           j                            d          }t          j                            dddd|          }t          t          j        |d|          }t          |j	        d	           t          |j
        d
d           d S )Nl   iUn gBQ_ *?r   r^   r   ry  r  r  gS?g333333?r  r   )rl   ru   r   r   r   rx   r   r{  r   r  r  )r!  r   r   rW  s       rW   test_against_anderson_case_3z.TestGoodnessOfFit.test_against_anderson_case_3  s    i##$788N1q,/  1 1ej!t#NNNu---
Dt444444rY   c                    t           j                            d          }t          j        ddd                              d|          }t          t          j        |d|	          }t          j        |d
          }t          |j
        |j        d                    t          |j        |j        d         dz  d           d S )Nl   /JG gQ8?r   rw  rz  r   r   r  r  gumbel_r)r   r   r   r  r   )rl   ru   r   r   r1   rx   r   r  andersonr   r  critical_valuesr  significance_level)r!  r   r   rW  r   s        rW   test_against_anderson_gumbel_rz0TestGoodnessOfFit.test_against_anderson_gumbel_r  s    i##$4551s#&( ( ((+C(H(H 	
ena4+.0 0 0nQZ000s':1'=>>>
C$:1$=c$AMMMMMMrY   c           	      $   t           j                            d          }t          j                            dddd|          }ddi}d	d
i}ddi}t           j                            d          }t          t          j        |d||||          }t          j        |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||||          }t          j        |j	        j
        j        |j	        j
        j        d          rJ t          j        |j        |j        d          rJ t          |j	        j
        j        d
           t          |j	        j
        j        d           dd
d}t           j                            d          }t          t          j        |d||||          }t          |j	        j
        j        d           t          |j	        j
        j        d
           t          |j	        j
        j        d           t          j        |j        |j                  rJ d S )Nl   zV8t g}-r   r^   2   ry  ri  g*@rU  g(\u+@rT  g33333+)r  guessed_params
fit_paramsr  r   r  r  )ri  rU  )rl   ru   r   r   r   rx   r   r   r  
fit_resultr   ri  r   rU  rT  null_distribution)	r!  r   r   r  r  r  r   r   res3s	            rW   test_params_effectsz%TestGoodnessOfFit.test_params_effects  s    i##$788N1q,/  1 1
 tu%
vi##$788u0!!.<*4,8sL L L ;t57>>>>>T_+15999T_+/888 qi##$788u0!!.<*4,8sL L L ;t57#57dD D D 	D 	D D;t5#5DB B B 	B 	B BT_+15999T_+/888
  %00
i##$788u0!!.<*4,8sL L L 	T_+-t444T_+15999T_+/888;t5t7MNNNNNNNrY   N)r  r  r  r  r  r  r  r  r  r  r  ri   r   r   r  r  r  rY   rW   r  r    s        = = =0; ; ;7 7 7; ; ;	5 	5 	5	4 	4 	4	6 	6 	65 5 5 [	N 	N 	N0O 0O 0O 0O 0OrY   r  c                       e Zd Zd ZdS )TestFitResultc                 N   t           j                            d          t          j                            ddd          }fd}ddg}t          j        t          j        |||	          }	 dd l}d
}t          j	        t          |          5  |                    d           d d d            d S # 1 swxY w Y   d S # t          t          f$ rQ d}t          j	        t          |          5  |                    d           d d d            Y d S # 1 swxY w Y   Y d S w xY w)Nl   u!u\xD r   r   r   r   c                  $    t          | i |diS )Nrv   r   )r"  kwargsr   s     rW   rC  z-TestFitResult.test_plot_iv.<locals>.optimizerE  s!    )4D6DDDDDDrY   r  r  re  z!`plot_type` must be one of \{'...r   llama)	plot_typez2matplotlib must be installed to use method `plot`.)rl   ru   r   r   r{  rx   ry   
matplotlibri   r   r&  plotModuleNotFoundErrorImportError)r!  r   rC  r7  rW  r	  r   r   s          @rW   test_plot_ivzTestFitResult.test_plot_ivA  s   i##$788z~~a3~??	E 	E 	E 	E 	E 6"i
D&IFFF	,:Gz999 , ,7+++, , , , , , , , , , , , , , , , , ,#[1 	, 	, 	,KG2'BBB , ,7+++, , , , , , , , , , , , , , , , , , , ,	,sZ   0!C B5(C 5B99C <B9=C .D$0DD$D	D$D	D$#D$N)r  r  r  r  r  rY   rW   r  r  @  s#        , , , , ,rY   r  rS   )r  r   r   )2rf   numpyrl   numpy.testingr  rM  r   r   ri   scipyr   scipy.optimizer   test_continuous_basicr	   !scipy.stats._distn_infrastructurer
   scipy.stats._distr_paramsr   scipy.statsr   rt   rp   rs   mle_failing_fitsmm_failing_fitsmm_slow_fitsrd   rT   rX   r   r   r  r   r   r   r   r   r{  r   r   r   r   r  r  r  r  r  r  r  r  rY   rW   <module>r     ss   				           7 7 7 7 7 7 7 7        1 1 1 1 1 1 + + + + + + 6 6 6 6 6 6 2 2 2 2 2 2 ' ' ' ' ' '  	
   0	K 	K 	K; ; ;
 &4=MNN       )<)<)>)>??E4=11+N +N 21 @? +N\I I I IC C C/ / /    :z2 ;578 8 8 8 " " "J. . .b   +-@-@-B-BCC' ' DC' MN(.G G G Gk4 k4 k4 k4 k4 k4 k4 k4^. . .
^O ^O ^O ^O ^O ^O ^O ^OB, , , , , , , , , ,rY   