
    _Mh                        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z   edZeedZdhZ g dZ!d Z"ej#        j$        ej#        %                    d e"                      ej#        %                    dddg          d                                     Z&d3d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& Z0ej#        %                    d' e0                      d(             Z1	 	 d4d+Z2 G d, d-          Z3g d.Z4 G d/ d0          Z5 G d1 d2          Z6dS )5    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   r2   r4   	powernormr)   
skewcauchytr   triangtruncparetor    r   r!   )argusexponpowr$   r   r   r0   halfgennormgompertz	johnsonsbr   	kstwobignr(   r   r   r*   r5   )MMMLErR   )erlangr?   norminvgaussc               #   B   K   t           D ]\  } }| t          vr| |fV  d S N)r	   skip_fit)distnameargs     Z/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/scipy/stats/tests/test_fit.pycases_test_cont_fitrc   `   sA      
 "    #8##C-       zdistname,argmethodrZ   rY   c           	      H   t          t          j        dd                    }t          t          j        dd                    }| t          |         v r|sd}t	          j        |           | t          |         v r|sd}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k    r|j        t0          v rdd
i}ni } |j        |
fd|i|}|dk    rEt          j        |
          } |j        |fi |}d|j         d| d| }t7          ||d|           |dk    r| t8          vrd}t          j        |
|
f          }|d |d
fxx         dz  cc<   |d |dfxx         dz  cc<   |                    d           t          j        |          } |j        |fi |}d|j         d| d| }t7          ||d|           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tG          d!          t          j$        t          j        |          |k              r d S 0d"tK          |           d#}|d$tK          |           d#z  }|d%tK          |           d#z  }tG          d&|j         d#|z             )'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sizerZ   flocre   zCDifferent results fitting uncensored data wrapped as CensoredData: z: est=z est1=g|=)rtolerr_msg   Gz?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AssertionErrorrm   str)r`   ra   re   	run_xfail	run_xslowmsgdistfntrueargdiffthresholdfit_sizer   kwdsestdata1est1nicrw   data2est2difftxts                        rb   test_cont_fitr   j   s    BImU;;;<<IBImU;;;<<I<'''	' QS:f%%%i%ICUH%%FisCj)**GF29gn&<&(gfnQ.>
&K&K&M N N M  3L 3L
	t[X&&& 	C 	C&*S1(11C6;-#?#?{&*S888488C *3//!vz%00400N)/N N<?N NGKN NcsCCCC83I#I#I ?C:66#q!!!T)!!!#q!!!T)!!!1%%%*H===!vz%00400F!'F F47F F?CF FccBBBB=	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C@ W} FBF388::$6$6~$E$.$0 1 1b 6"(3--   	 !6777vbfTllm344  -CLL,,,)SXX))))*SYY****DV[DDDsJKKKs   D/JJ	J	c                     t          t          |           }|                    |          dd          }t          |||d|             d S )Nry   z poor mle fit of (loc, scale) in )atolrq   )r   r   r   r   )r   datadesiredr   dactuals         rb   _check_loc_scale_mle_fitr      sa    tAUU4[[FFG$EtEEG G G G G Grd   c                      t          j        g d          } t          d| ddgd           t          d| ddgd           d S )N)rt   {Gz?r   r   Gz?r   r          @uniformrt   rs   MbP?expongp=
ף?)r   arrayr   )r   s    rb   "test_non_default_loc_scale_mle_fitr      sN    8DDDEEDYtTlDAAAWdT7OTBBBBBrd   c                  x    g d} t           j                            | d          }t          |ddgd           dS )zgh-6167)r   r   r   r   rk   rk   rk   rk   r   )ro   rj   r   r   N)r   r   r   r   )r   phats     rb   test_expon_fitr      sC    ###D;??4a?((DD1c(......rd   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)r   concatenatezerosonesr   raisesr
   warnsRuntimeWarningr   betar   )r   messages     rb   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)      ?      @)
   333333?rk   c                 n   t           j                            d          }t          | d          r| j        }n| j        } | j        |d|d} ||g|R                                   }|                     ||          }| 	                    ||          }t          ||           t          ||           d S )Nig:pdfd   rn   random_state)r   r   default_rnghasattrlogpdflogpmfr   sumnnlf_penalized_nnlfr   )distparamsrnglogpxfxrefres1res2s           rb   test_nnlf_and_related_methodsr      s     )

	
*
*CtU &s555A6!f!!##
#C99VQD**DD#D#rd   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>   r   rS   r   r   foldnormrL   r   	truncnormr   rR   poisson_binomr    r!   >3   r%   rP   r,   r<   ricer6   binomgammarK   r1   r7   r[   rF   r.   nbinomr2   arcsiner@   lognormrandintr   bradfordr:   rT   r   rV   rC   invgaussr/   r3   skewnormr"   	exponnormrA   r'   rW   rE   rX   rN   r=   r>   rD   rJ   r5   r#   r;   rU   weibull_maxweibull_minr\   r(   >   r   rM   r+   r   r   rQ   skellamzipfianr   r   	betabinomr$   	hypergeomr   
betanbinomr   
loguniform
nhypergeom
reciprocalr&   r   r4   r?   r   r0   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  s        rb   cases_test_fit_mler     sA     ' ' 'N
R 
R 
R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 rd   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>   rS   r   r   r1   r   r3   r   r   r   r   r&   r   r   r\   r?   r   r!   >1   rP   r,   r-   r<   waldr6   r   rK   anglitr[   rF   r2   rQ   r   maxwellr   r   r   r:   rT   r   r   rV   loggammar   r   r$   rA   r   rE   rX   rN   r=   r>   rD   rJ   r  r   r5   r#   r;   genlogisticrR   r   r   semicircularr(   r0   laplace_asymmetric>"   r%   r   rM   r   r+   r   r   rS   r7   r9   r   r.   r@   r   r   rC   r   rL   r/   r"   r'   rW   r   r   r   r  rU   r4   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  s          rb   cases_test_fit_mser    s     
 
 
NJ J JN$	3 	3 	3O !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 rd   c               #      K   t          t                                                    D ]%\  } }t          | t                    r| dv r| |fV  &d S )N>   r(   r!   )r  r	   itemsr  r   )r`   shapess     rb   cases_test_fitstartr#  T  sk       NN0022  &8S)) 	BBB	 rd   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   rl   )invaliddividery   )r   r   r   r   r   r   	_fitstart	_argcheck)r`   r"  r   r   r   guesss         rb   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)rp   r   )r   r   testingr   )
r   r   params1params0rp   r   	nlff_namenlffnlff1nlff0s
             rb   assert_nlff_less_or_closer4  h  sh    4##DD$ED$EEMM

""5%d"FFFFF Mrd   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ddZd Zd Zd Zd Zd)dZej                            d e                      d             Zej                            d e                      d             Zej        j        d             Z ej                            dd          d             Z!ej        j"        d             Z#d Z$d Z%ej        j        d             Z&d Z'ej        j        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prx   {Gz?)r   rp   r   r   c                    t          |d|i|S Nr   r   )selfr   argsr   s       rb   optzTestFit.opt|  s    %t=====rd   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   )r   r   
ValueErrorr   r   r   shape_bounds_arA  r   s     rb   test_dist_ivzTestFit.test_dist_iv  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   rk      z.All elements of `data` must be finite numbers.r   rk   rK  )123)
r   r   rE  r   r   r   rF  r   naninfrG  s     rb   test_data_ivzTestFit.test_data_iv  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...r8  r9  r   r   r;  r<  rL  r   z6Each element of a `bounds` sequence must be a tuple...)r   r   rK  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...)r8  r8  r8  r8  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   rE  r   rP  )rA  r   shape_boundsboundss       rb   test_bounds_ivzTestFit.test_bounds_iv  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      rT  r   )r)  z+Each element of `guess` must be a scalar...hir:  r%   rk   z-A `guess` sequence must contain at least 2...z1A `guess` sequence may not contain more than 3...)r   rk   rK     zCGuess for parameter `n` rounded.*|Guess for parameter `p` clipped.*g      @g      z$Guess for parameter `loc` rounded...)r7  r   r   z"Guess for parameter `p` clipped...r7  z$Guess for parameter `loc` clipped...)r7  r   r   )
r   r   r   r   r   r   r   shape_bounds_dr   rE  )rA  r   r)  s      rb   test_guess_ivzTestFit.test_guess_iv  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 X%%\.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   rk   )dtypeg      $@ry   r   r   rS  )gؗҜ<r   pmfFr   r   zoverflow encounteredre   	optimizerr   _penalized_nlpsfmlemser0  )r  r	   r   r   r   r   r   r   r   r   emptylenfloat64signr   listfloorr   nptsuppress_warningsfilterr   r   rC  r4  r   tols)rA  	dist_namere   r   N	dist_datar   r"  rV  locscaler   r   supres
nlff_namesr0  s                    rb   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rr  c                 6    |                      |dd           d S )Nrf  r7  r>  rz  rA  rr  s     rb   test_basic_fit_mlezTestFit.test_basic_fit_mle  #    Iu!44444rd   c                 6    |                      |dd           d S )Nrg  rk   r>  r|  r}  s     rb   test_basic_fit_msezTestFit.test_basic_fit_mse  r  rd   c                    d}t           j                            | j                  }t          j        }d} |j        |||d}ddd}t	          j        |||d| j                  }t          |||j
        |fdd	i| j         d S )
Nr   )rj   r   r   皙?r   ru  rv  rg  rb  r0  rd  )r   r   r   r   r   r   r   r   rC  r4  r   rq  rA  rs  r   r   r"  r   rU  rx  s           rb   test_arcsinezTestFit.test_arcsine  s    
 i##DI..}txac:::(9==idL$(SSS!$cj& 	M 	M,>	MBF)	M 	M 	M 	M 	Mrd   re   re  c                 $   d}t           j                            | j                  }t          j        }d} |j        |||d}dddd}t	          j        |||| j        |          }ddd	|         }	t          |||j
        |fi | j        d
|	i d S )Nr   )rj   r         @r   r  )r,   ru  rv  )rc  re   r   rd  re  r0  )r   r   r   r   r   rS   r   r   rC  r4  r   rq  )
rA  re   rs  r   r   r"  r   rU  rx  r0  s
             rb   
test_arguszTestFit.test_argus,  s    
 i##DI..{txac:::(YOOidLDHVTTT"+=>>vF	!$cj& 	7 	7DI 	7 	7,5	7 	7 	7 	7 	7 	7rd   c                    d}t           j                            | j                  }t          j        }d} |j        |||d}ddddd}t	          j        |||d| j                  }t          |||j
        |fdd	i| j         d S )
Nr   )gdsz@g@e?rj   r   r   r  )abru  rv  rf  rb  r0  r   )r   r   r   r   r   r   r   r   rC  r4  r   rq  r  s           rb   	test_betazTestFit.test_beta<  s    
 i##DI..zBtxac:::&I(9> >idL$(SSS!$cj& 	A 	A,2	A6:i	A 	A 	A 	A 	Ard   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   r  r   r  )cru  rv  rc  )r   r   r   r   r   r   r   r   rC  r4  r   rq  r  s           rb   test_foldnormzTestFit.test_foldnormL  s     i##DI..~,txac:::&y9MMidLDHEEE!$cj&NNDINNNNNrd   c                 
   d}t           j                            | j                  }t          j        }d} |j        |||d}dddd}t	          j        |||d| j                  }t          |||j
        |fdd	i| j         d S )
Nr   )g7h@rj   r   r   r  )nuru  rv  rf  rb  r0  r   )r   r   r   r   r   rL   r   r   rC  r4  r   rq  r  s           rb   test_nakagamizTestFit.test_nakagamiZ  s     i##DI..~-txac:::&y9MMidL$(SSS!$cj& 	A 	A,2	A6:i	A 	A 	A 	A 	Ard   c                 
   d}t           j                            | j                  }t          j        }d} |j        |||d}dddd}t	          j        |||d| j                  }t          |||j
        |fdd	i| j         d S )
Nr   )gk?rj   r   r   r  )r  ru  rv  rg  rb  r0  rd  )r   r   r   r   r   r3   r   r   rC  r4  r   rq  r  s           rb   test_powerlawzTestFit.test_powerlawh  s    
 i##DI..~-txac:::&y9MMidL$(SSS!$cj& 	M 	M,>	MBF)	M 	M 	M 	M 	Mrd   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   r  r[  r  )r   r   r   r   r   rR   r   r   rC  r4  r   rq  r  s           rb   test_truncparetozTestFit.test_truncparetow  s     i##DI.. %txac:::!{1}idLDHEEE!$cj&NNDINNNNNrd   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   r  r   r  r7  r  )r   r   r   r   r   r    r   r   rC  r4  r   rq  r  s           rb   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Nrd   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   ru  rn   r   r;  r      r  )gY.?r   )r   r   r   r   r   r   r   r   r   rC  r   r   rq  	bernoulli)
rA  rs  r   r   r;  r<  ru  r   rU  rx  s
             rb   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::	:::::rd   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   r  )r   r7  ru  r  )r   r   )rv  rn   r   )r=  r7  rv  r  r   ru  rv  rn   r   r  )r   r   r   r   r   normr   r   rC  r   r   rq  )rA  rs  r   r   ru  rv  r   
loc_boundsrV  rx  scale_boundss              rb   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>>>>>rd   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   r  r  r9  r  r  r  )r   r  )r  r  r:  r  )r   r   r   r   r   r  r   r   r   r   rq  r   rC  )rA  rs  r   r   ru  rv  r   rx  rV  r;  r<  rU  s               rb   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=====rd   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   )r7  r   r   r   )r      r9  )r   r   z3Optimization converged to parameter values that areF)r   r   r   r   r   r   r   minr   r   
startswithsuccess)	rA  rs  r   r   r"  r   rV  rx  r   s	            rb   test_failurezTestFit.test_failure  s    i##DI..|txac:::xxzzQ---idF++G{%%g.....{e######rd   c                 l   d}t           j                            d          }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  l   ^s )r        r   ))rk      )ffffff?F   )g333333?x   rS  r   r  )r)  rc  )r   r   r   r   r  r   r   rC  allcloser   rq  r   )rA  rs  r   r   r   rV  r   rx  s           rb   
test_guesszTestFit.test_guess  s     i##L11;;;txac:::idFdh???;sz6??TY?????idF&DHMMM
F88di88888rd   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 )Nrk   r[  )r   r   :0yE>r   r  rf  rV  re   rK  r   r   rg  gRQ@)r   r   r   r   r   rv  )rA  r   r   rV  res_mleres_mses         rb   test_mse_accuracy_1zTestFit.test_mse_accuracy_1  s     1v{*55)D$veDDD,ad;;;;)D$veDDD,e$??????rd   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   rK     r   rS  r  r  rg  r  r   r`  r   -C6?rp   )
r   r   r   r   r   r   r   r   r   r   )rA  r   r   r;  r   rV  rx  r   r  r  r   s              rb   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3rd   N)r   )0__name__
__module____qualname__r   r   r   r   r   r   r   r   r   r   rF  r\  r   rp   rq  rC  rH  rQ  rW  r]  rz  r   r  parametrizer  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   rd   rb   r6  r6  q  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  7  7D [[*<*<*>*>??5 5 @?5 [[*<*<*>*>??5 5 @?5 [M M M [X~667 7 767 [A A AO O OA A A [M M MO O O [O O O; ; ;*? ? ?:> > >2$ $ $  [9 9 9"	@ 	@ 	@4 4 4 4 4rd   r6  )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                   V   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 Zej                            ddg dfdg dfdg dfg          d             Zej        j        ej                            dg d          d                         Z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 )NrJ  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herringr>  )r   r  r   r   	TypeErrorr   rE  )rA  r   r   r   s       rb   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	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 9]9G444 	4 	4D!3333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4sY   "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   ddofr  ksknown_paramsr  r   exactre   {Gzt?r   r  )r   r   r   
examgradesr   stdr   r   r  kstestcdfr   r  pvaluerA  r   r   r  rx  r   s         rb   test_against_ksz!TestGoodnessOfFit.test_against_ksD  s    i##$788!wqzzBF114E4E4EFFej!,(,#7 7 7l1ej88<88<WMMMs}555
CJT::::::rd   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  r  r  r  g5;Nѡ?r  r   r  )r   r   r   r  r   r   r  r   r  r  r  r   r  r	  rA  r   r   rx  r  r   s         rb   test_against_lillieforsz)TestGoodnessOfFit.test_against_lillieforsN  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6rd   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  r  cvmr   r  r   r  )r   r   r   r  r   r  r   r   r  cramervonmisesr  r   r  r	  r
  s         rb   test_against_cvmz"TestGoodnessOfFit.test_against_cvmX  s    i##$788!wqzzBF114E4E4EFFej!,(-38 8 8"1ej&@&@<&@&@&DEEs}555
CJT::::::rd   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  r  adr   gV-@rx   r  r   
r   r   r   aranger   r   r  r   r  r	  rA  r   r   r  rx  s        rb   test_against_anderson_case_0z.TestGoodnessOfFit.test_against_anderson_case_0b  s    i##$788Ia02>>ej!,(,#7 7 7u---
Dt444444rd   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  rv  g{U=@r  r   guV?r  r  r   r  r  s        rb   test_against_anderson_case_1z.TestGoodnessOfFit.test_against_anderson_case_1m  s    i##$788Ia!34ej!,(,#7 7 7u---
Cd333333rd   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  ru  gfHF@r  r   gZd;@皙?r  r   r  r  s        rb   test_against_anderson_case_2z.TestGoodnessOfFit.test_against_anderson_case_2x  s    i##$677Ia/0ej!,(,#7 7 7u---
E555555rd   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   rk   r   r  r  r  r   gS?g333333?r  r   )r   r   r   r   r   r   r   r  r   r  r	  )rA  r   r   rx  s       rb   test_against_anderson_case_3z.TestGoodnessOfFit.test_against_anderson_case_3  s    i##$788N1q,/  1 1ej!tEEEu---
Dt444444rd   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   r  r  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)rA  r   r   rx  r   s        rb   test_against_anderson_gumbel_rz0TestGoodnessOfFit.test_against_anderson_gumbel_r  s    i##$4551s#&( ( ((+C(H(H 	
ena4"%' ' 'nQZ000s':1'=>>>
C$:1$=c$AMMMMMMrd   c                 R   t           j                            d          }g d}ddd}t          j        t          j        ||d|          }t          |j        dd	
           d|j        cxk     rdk     sn J t          |j        dd           t          |j        dd           d S )Nl   fKW7/z )r  r      ry   r7  r   r   r   r  fillibenr   gG=D;?r  r   r   ?gF8y?gh㈵>r  gffffff?Mb`?)	r   r   r   r   r   r  r   r  r	  )rA  r   yr  rx  s        rb   test_against_filliben_normz,TestGoodnessOfFit.test_against_filliben_norm  s    i##$788### 1--#EJ.8cC C C
 	wT::::cj&&&&3&&&&&& 	'7dCCCC
F666666rd   c                 @   t           j                            d          }|                    ddd          }t	          j        t          j        |d|          }dd	d
}t	          j        t          j        ||d|          }t          |j        |j        d           d S )Nl   1gDF3 r   r   r   )ru  rv  rn   r+  r   r   r   r  r   gV瞯<r  )	r   r   r   normalr   r   r  r   r  r  s         rb   test_filliben_propertyz(TestGoodnessOfFit.test_filliben_property  s    i##$788JJ2SsJ33#EJ.8cC C C 1--#EJ.8cC C Cs}5AAAAAArd   case   )gV-?gCl?ffffff?g-?gx?2   )g㥛 ?gzG?gv?$C?g1Zd?_   )r7  gS?g~jt?gZd;O?gS?c                 R   t           j                            d          }|\  }}|                    |          }ddd}t          j        t          j        ||d|          }t          j        g d          }t          j        |j        |dz            }t          ||d	
           d S )Nl   +^8r   r   r  r+  r   )r  r=  r  rx   r  r   r-  r   )
r   r   r   r   r   r  r   scoreatpercentilenull_distributionr   )	rA  r3  r   r;  r   r   r  rx  percentiless	            rb    test_against_filliben_norm_tablez2TestGoodnessOfFit.test_against_filliben_norm_table  s    
 i##$6773JJqMM 1--#EJ.8cC C Ch>>>??%c&;[_MMSt,,,,,,rd   ))r7  g?g;On?)r  gǄ?g-?)r  g-hC/?g\ Ac?c                    |\  }}}t           j                            d          }|                    |          }t	          j        t          j        |d|          }t          |j        |d           t          |j	        |d           d S )	Nl   vTV_ )rn   r+  r   r  r  gQ?r   )
r   r   r   r1  r   r   rayleighr   r  r	  )rA  r3  r;  ref_statistic
ref_pvaluer   r   rx  s           rb   test_against_ppccz#TestGoodnessOfFit.test_against_ppcc  s     (,$=*i##$788JJAJ#ENA(+- - -}4@@@@
JV<<<<<<rd   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 )N   zV8t g}-r   rk   r6  r  r  g*@rv  g(\u+@ru  g33333+)r  guessed_params
fit_paramsr  r   r  r  )r  rv  )r   r   r   r   r   r   r   r   r  
fit_resultr   r  r   rv  ru  r;  )	rA  r   r   rE  rF  r  r   r   res3s	            rb   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,8cC C C ;t57>>>>>T_+15999T_+/888 qi##$788u0!!.<*4,8cC C C ;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,8cC C C 	T_+-t444T_+15999T_+/888;t5t7MNNNNNNNrd   c                 6   d }t           j                            d          }t          j                            d|          }t          t          j        |ddd||          }g d	}g d
}t          j        |j        |          }t          ||d           d S )Nc                    t          j        ||          }|                     |          }t          j        ||dd          }t          j        |dz  |          S )Nru   r   r   )rv   prependappendrk   )r   r   r  r   r   )r   r   rv   r   r.  r   s         rb   	greenwoodz:TestGoodnessOfFit.test_custom_statistic.<locals>.greenwood  sV    4(((AAa:::A6!q&t,,,,rd   rD  r7  r   r   r   r  r   )r=  rx   r  g?r   g?r   g333333?r  g?r,  r5  rs   )g҈?gxܙ	?g&)?gW>?gR?gEկt><?gw-?gL1=B?gi?g1cg?gV(?g?Qٰ?ghsۄ?r  r   )
r   r   r   r   r   r   r   quantiler;  r   )rA  rN  r   r   resultr<  exact_quantilessimulated_quantiless           rb   test_custom_statisticz'TestGoodnessOfFit.test_custom_statistic  s    	- 	- 	- i##$788{AC88 d67!.D.D+4#? ? ? EDDB B B !k&*BAFF+_5IIIIIIrd   N)r  r  r  r  r  r  r  r  r  r  r!  r   r  r  r'  r/  r2  r  r=  rB  rI  rS  r  rd   rb   r  r  *  s       4 4 40; ; ;7 7 7; ; ;	5 	5 	5	4 	4 	4	6 	6 	65 5 5 [	N 	N 	N7 7 7.	B 	B 	B [Vr+I+I+I&J')+I+I+I&J')+I+I+I&J&L M M
- 
-M M
- [[V &D &D &D E E= =E E =0O 0O 0OdJ J J J Jrd   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 r@  r   )rB  kwargsr   s     rb   rc  z-TestFitResult.test_plot_iv.<locals>.optimizer4  s!    )4C6CCsCCCCrd   r  r9  r  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   rE  plotModuleNotFoundErrorImportError)rA  r   rc  rV  rx  r[  r   r   s          @rb   test_plot_ivzTestFitResult.test_plot_iv0  s   i##$788z~~a3~??	D 	D 	D 	D 	D 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  rd   rb   rU  rU  /  s#        , , , , ,rd   rU  r^   )r+  r   r   )7r|   numpyr   numpy.testingr-  rn  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_   rc   r  r  r  r   r   r   r   r   r  r   r   r  r  r#  r*  r4  r6  r  r  rU  r  rd   rb   <module>rm     s   				           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 ' ' ' ' ' '  	
   *T T T
  
( 
( 
(= = = %6?OPP!.99
'         )<)<)>)>??E4=11HL HL 21 @? HLVG G G GC C C/ / /    :z2 ;578 8 8 8 + + +\< < <~   +-@-@-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^. . .
CJ CJ CJ CJ CJ CJ CJ CJJ, , , , , , , , , ,rd   