
    geǧ                        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eez   edZdhZddgZd Zej         j!        ej         "                    d e                      ej         "                    dddg          d                                     Z#d2d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.	 	 d3d*Z/ G d+ d,          Z0g d-Z1 G d. d/          Z2 G d0 d1          Z3dS )4    N)assert_allcloseassert_equal)statsdifferential_evolution   )distcont)FitError)distdiscrete)goodness_of_fit)    i'        ?      ?)
gausshypergenexpongengammakappa4ksonekstwoncfncx2
truncexpontukeylambdavonmiseslevy_stable	trapezoidtruncweibull_minstudentized_range)burrchichi2mielkepearson3genhalflogisticrdistparetopowerlawpowerlognorm
wrapcauchyrel_breitwigner)0alpha	betaprimer    burr12cauchyr!   r"   crystalballdgammadweibullffatiguelifefisk
foldcauchy
genextremer   genhyperbolicgennorm	genpareto
halfcauchyinvgamma
invweibull	johnsonsukappa3r   r   levylevy_lr   
loglaplacelomaxr#   nakagamir   nctr   r'   r)   	powernormr+   
skewcauchytr   triangtruncparetor   r   r   )argusexponpow	exponweibr   r   r%   halfgennormgompertz	johnsonsbr   	kstwobignrecipinvgaussr   r   vonmises_line)MMMLErJ   erlangr8   c               #   B   K   t           D ]\  } }| t          vr| |fV  d S N)r	   skip_fit)distnameargs     :lib/python3.11/site-packages/scipy/stats/tests/test_fit.pycases_test_cont_fitr]   V   sA      
 "    #8##C-       zdistname,argmethodrU   rT   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k    r|j        t.          v rddi}
ni }
 |j        |	fd|i|
}|dk    rEt          j        |	          } |j        |fi |
}d|j         d| d| }t5          ||d|           |dk    r| t6          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| }t5          ||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tE          d          t          j#        t          j        |          |k              r d S 0d tI          |          z  }|d!tI          |          z  z  }|d"tI          |          z  z  }tE          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sizerU   flocr_   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: %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namemle_use_floc0fitCensoredDatar   fail_interval_censoredcolumn_stacksortabsmeananyisnanAssertionErrorre   str)rZ   r[   r_   rw   msgdistfntrueargdiffthresholdfit_sizer   kwdsestdata1est1nicrn   data2est2difftxts                       r\   test_cont_fitr   `   sh    <'''	BJ}5666EE 	 	 	EEE	 	88CC + ,CLUH%%FisCj)**GF29gn&<&(gfnQ.>
&K&K&M N N M  3N 3N
	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   #g,,. 3s88++ 3t99,,86;FLMMMs"    2 A A D/II	"I	c                     t          t          |           }|                    |          dd          }t          |||d| z             d S )Nrp   z"poor mle fit of (loc, scale) in %s)atolri   )rx   r   r   r   )r   datadesiredr   dactuals         r\   _check_loc_scale_mle_fitr      s^    tAUU4[[FFG$@4GI I I I I Ir^   c                      t          j        g d          } t          d| ddgd           t          d| ddgd           d S )N)rl   {Gz?r   r   Gz?r   r          @uniformrl   rk   MbP?expongp=
ף?)ry   arrayr   )r   s    r\   "test_non_default_loc_scale_mle_fitr      sN    8DDDEEDYtTlDAAAWdT7OTBBBBBr^   c                  x    g d} t           j                            | d          }t          |ddgd           dS )zgh-6167)r   r   r   r   rc   rc   rc   rc   r   )rg   rb   r   r   N)r   r   r   r   )r   phats     r\   test_expon_fitr      sC    ###D;??4a?((DD1c(......r^   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)ry   concatenatezerosonesrv   raisesr
   warnsRuntimeWarningr   betar   )r   messages     r\   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?rc   c                 n   t           j                            d          }t          | d          r| j        }n| j        } | j        |d|d} ||g|R                                   }|                     ||          }| 	                    ||          }t          ||           t          ||           d S )Nig:pdfd   rf   random_state)ry   r   default_rnghasattrlogpdflogpmfr   sumnnlf_penalized_nnlfr   )distparamsrnglogpxfxrefres1res2s           r\   test_nnlf_and_related_methodsr      s     )

	
*
*CtU &s555A6!f!!##
#C99VQD**DD#D#r^   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>   rK   r   r   foldnormr   rJ   r   r   >-   r3   rH   r!   r5   ricer,   binomrC   r&   r.   r?   r#   nbinomr'   arcsiner9   lognormrandintr   bradfordr2   rL   r   rO   invgaussrD   r$   r(   r-   r:   rP   r>   rQ   rF   r6   r7   r=   rB   r*   r0   r4   rN   weibull_maxnorminvgaussrR   >   r   rE   r   r    r   r   rI   skellamzipfianr   	betabinomrM   	hypergeomr   	truncnormr   
loguniform
nhypergeom
reciprocalgeninvgaussr   r)   r8   r%   r+   nchypergeom_fishernchypergeom_walleniusztested separatelyreasonmarkstoo slow (>= 0.25s)too slow (>= 1.0s))dictr   r	   
isinstancer   rv   parammarkskipslowxslow)skip_basic_fitslow_basic_fitxslow_basic_fitr   r   s        r\   cases_test_fit_mler     sD     L L LNC C CN1 1 1O \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 r^   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>   rK   r   r   skewnormr   r   r   r   r   r8   r   >8   rH   r!   r"   r5   waldr,   gammarC   anglitr1   rV   r?   r#   r'   rI   r   r   maxwellr   r   r   r2   rL   r   r   rO   loggammarD   r   	exponnormrM   r:   r   rP   r>   rQ   rF   r6   r7   r=   rB   r   r   r*   r0   r4   genlogisticrJ   r   weibull_minsemicircularrR   rS   r%   r   laplace_asymmetric>   r3   r   rE   r   r    r   r   r&   r.   r   r9   r   r   r<   r   r$   r(   r-   r   r   r   r   rN   r   r)   r+   r   r   r   zFails. Oh well.r   r   r   r   zignore::RuntimeWarning)r   r   r	   r   r   rv   r   r   r   r   r   filterwarnings)r   r  r  warns_basic_fitr   r   r   s          r\   cases_test_fit_mser    s     " " "NJ J JN&	" 	" 	"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 r^   c               #      K   t          t                                                    D ]%\  } }t          | t                    r| dv r| |fV  &d S )N>   rR   r   )r   r	   itemsr   r   )rZ   shapess     r\   cases_test_fitstartr  D  sk       NN0022  &8S)) 	BBB	 r^   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   rd   )invaliddividerp   )rx   r   ry   r   r   r   	_fitstart	_argcheck)rZ   r  r   r   r   guesss         r\   test_fitstartr  L  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)rh   r   )rx   ry   testingr   )
r   r   params1params0rh   r   	nlff_namenlffnlff1nlff0s
             r\   assert_nlff_less_or_closer'  X  sh    4##DD$ED$EEMM

""5%d"FFFFF Mr^   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pro   {Gz?)r   rh   c                     t          |ddi|S )Nr   r   r   )selfargsr   s      r\   optzTestFit.optl  s    %t<!<t<<<r^   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   )rv   r   
ValueErrorr   r   r   shape_bounds_ar2  r   s     r\   test_dist_ivzTestFit.test_dist_ivo  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   rc      z.All elements of `data` must be finite numbers.r   rc   r<  )123)
rv   r   r6  r   r   r   r7  ry   naninfr8  s     r\   test_data_ivzTestFit.test_data_ivt  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`)rv   r   r   r   r   r   r   r   r6  ry   rA  )r2  r   shape_boundsboundss       r\   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      rE  r   )r  z+Each element of `guess` must be a scalar...hir-  r3   rc   z-A `guess` sequence must contain at least 2...z1A `guess` sequence may not contain more than 3...)r   rc   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   )
rv   r   r   r   r   r   r   shape_bounds_dr   r6  )r2  r   r  s      r\   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 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   rc   )dtypeg      $@rp   r   r   rD  )gؗҜ<r   pmfFr   r   zoverflow encountered)r_   	optimizerr   _penalized_nlpsf)mlemser#  )r   r	   r   ry   r   r   r   rx   r   r   emptylenfloat64signr   listfloorr   nptsuppress_warningsfilterr   r   r4  r'  r   tols)r2  	dist_namer_   N	dist_datar   r   r  rG  locscaler   r   supres
nlff_namesr#  s                    r\   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ra  c                 2    |                      |d           d S )NrU  ri  r2  ra  s     r\   test_basic_fit_mlezTestFit.test_basic_fit_mle      Iu-----r^   c                 2    |                      |d           d S )NrV  rk  rl  s     r\   test_basic_fit_msezTestFit.test_basic_fit_mse	  rn  r^   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   )rb   r         @r   皙?r   )r!   rd  re  rS  )ry   r   r   r   r   rK   r   r   r4  r'  r   r`  r2  rb  r   r   r  r   rF  rg  s           r\   
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Nr^   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   rr  r   rs  )crd  re  ru  )ry   r   r   r   r   r   r   r   r4  r'  r   r`  rv  s           r\   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Nr^   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   rs  rL  ru  )ry   r   r   r   r   rJ   r   r   r4  r'  r   r`  rv  s           r\   test_truncparetozTestFit.test_truncpareto)  s     i##DI.. %txac:::!{1}idLDHEEE!$cj&NNDINNNNNr^   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   rr  r   rs  r*  ru  )ry   r   r   r   r   r   r   r   r4  r'  r   r`  rv  s           r\   test_truncweibull_minzTestFit.test_truncweibull_min7  s     i##DI..%*txac:::!{1}idLDHEEE!$cj&NNDINNNNNr^   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   rd  rf   r   r.  r      ru  )gY.?r   )ry   r   r   r   r   r   r   r   r   r4  r   r   r`  	bernoulli)
r2  rb  r   r   r.  r/  rd  r   rF  rg  s
             r\   test_missing_shape_boundsz!TestFit.test_missing_shape_boundsE  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::	:::::r^   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   r*  rd  ru  )r   r   )re  rf   r   re  r  r   rd  re  rf   r   rd  re  )ry   r   r   r   r   normr   r   r4  r   r   r`  )r2  rb  r   r   rd  re  r   
loc_boundsrG  rg  scale_boundss              r\   test_fit_only_loc_scalezTestFit.test_fit_only_loc_scaleZ  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>>>>>r^   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  r,  r  r  r  )r   r  )r  r  r-  ru  )ry   r   r   r   r   r  r   r   r   r   r`  r   r4  )r2  rb  r   r   rd  re  r   rg  rG  r.  r/  rF  s               r\   test_everything_fixedzTestFit.test_everything_fixedw  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=====r^   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)ry   r   r   r   r   r   r   minr   r   
startswithsuccess)	r2  rb  r   r   r  r   rG  rg  r   s	            r\   test_failurezTestFit.test_failure  s    i##DI..|txac:::xxzzQ---idF++G{%%g.....{e######r^   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  )r        r   ))rc      )gffffff?F   )g333333?x   rD  r   ru  )r  rS  )ry   r   r   r   r   r   r   r   r4  allcloser   r`  r   )r2  rb  r   r   r   rG  r   rg  s           r\   
test_guesszTestFit.test_guess  s     i##DI..;;;txac:::idFdh???;sz6??TY?????idF&DHMMM
F88di88888r^   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 )Nrc   rL  )r   r   :0yE>r   r  rU  rG  r_   r<  r   r   rV  gRQ@)r   r   r   r   r   re  )r2  r   r   rG  res_mleres_mses         r\   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$??????r^   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   rD  r  r  rV  r  r   rQ  r   -C6?rh   )
ry   r   r   r   r   r   r   r   r   r   )r2  r   r   r.  r   rG  rg  r   abr   s              r\   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3r^   N)+__name__
__module____qualname__r   r   r   r   ry   r   r   r   r   r   r7  rM  r   rh   r`  r4  r9  rB  rH  rN  ri  rv   r   parametrizer  rm  r  rp  rw  rz  r|  r~  r  r  r  r  r   r  r  r   r^   r\   r)  r)  a  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 4r^   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                   P   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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  rv   r   	TypeErrorr   r6  )r2  r   r   r   s       r\   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   ddofr  ksknown_paramsr  r   exactr_   {Gzt?r   r  )ry   r   r   
examgradesr   stdr   r   r  kstestcdfr   r  pvaluer2  r   r   r  rg  r   s         r\   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::::::r^   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  )ry   r   r   r  r   r   r  r   r  r  r  r   r  r  r2  r   r   rg  r  r   s         r\   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6r^   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  )ry   r   r   r  r   r  r   r   r  cramervonmisesr  r   r  r  r  s         r\   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::::::r^   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-@ro   r  r   
ry   r   r   aranger   r   r  r   r  r  r2  r   r   r  rg  s        r\   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4r^   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  re  g{U=@r  r  guV?rt  r  r   r  r  s        r\   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3r^   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  rd  gfHF@r  r  gZd;@皙?r  r   r  r  s        r\   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5r^   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   rc   r   r  r  r  gS?g333333?r  r   )ry   r   r   r   r  r   r   r  r   r  r  )r2  r   r   rg  s       r\   test_against_anderson_case_3z.TestGoodnessOfFit.test_against_anderson_case_32  s    i##$788N1q,/  1 1ej!t#NNNu---
Dt444444r^   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   )ry   r   r   r   r7   r   r   r  andersonr   r  critical_valuesr  significance_level)r2  r   r   rg  r   s        r\   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Mr^   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      rp   r*  r   r   r   r  fillibenr  gG=D;?r  r   r   g?gF8y?gh㈵>r  gffffff?Mb`?)	ry   r   r   r   r   r  r   r  r  )r2  r   yr  rg  s        r\   test_against_filliben_normz,TestGoodnessOfFit.test_against_filliben_normH  s    i##$788### 1--#EJ.8sL L L
 	wT::::cj&&&&3&&&&&& 	'7dCCCC
F666666r^   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   )rd  re  rf   r  r  r   r   r  r  gV瞯<r  )	ry   r   r   normalr   r   r  r   r  r  s         r\   test_filliben_propertyz(TestGoodnessOfFit.test_filliben_property_  s    i##$788JJ2SsJ33#EJ.8sL L L 1--#EJ.8sL L Ls}5AAAAAAr^   case   )gV-?gCl?gffffff?g-?gx?2   )g㥛 ?gzG?gv?$C?g1Zd?_   )r  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  r0  r  ro   rt  r   r  r   )
ry   r   r   r   r   r  r   scoreatpercentilenull_distributionr   )	r2  r  r   r.  r   r   r  rg  percentiless	            r\    test_against_filliben_norm_tablez2TestGoodnessOfFit.test_against_filliben_norm_tablej  s    
 i##$6773JJqMM 1--#EJ.8sL L Lh>>>??%c&;[_MMSt,,,,,,r^   ))r*  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_ )rf   r  r  r  r  gQ?r   )
ry   r   r   r  r   r   rayleighr   r  r  )r2  r  r.  ref_statistic
ref_pvaluer   r   rg  s           r\   test_against_ppccz#TestGoodnessOfFit.test_against_ppccy  s     (,$=*i##$788JJAJ#ENA146 6 6}4@@@@
JV<<<<<<r^   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   rc   r  r  ry  g*@re  g(\u+@rd  g33333+)r  guessed_params
fit_paramsr  r   r  r  )ry  re  )ry   r   r   r   r  r   r   r  r  
fit_resultr   ry  r   re  rd  r  )	r2  r   r   r'  r(  r  r   r   res3s	            r\   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Nr^   N)r  r  r  r  r  r  r  r  r  r  r  rv   r   r   r  r  r  r  r   r%  r+  r  r^   r\   r  r    s       = = =0; ; ;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 0O 0Or^   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 )Nr   r   )r3  kwargsr   s     r\   rS  z-TestFitResult.test_plot_iv.<locals>.optimizer  s!    )4D6DDDDDDr^   r  r,  ru  z!`plot_type` must be one of \{'...r   llama)	plot_typez2matplotlib must be installed to use method `plot`.)ry   r   r   r   r  r   r   
matplotlibrv   r   r6  plotModuleNotFoundErrorImportError)r2  r   rS  rG  rg  r3  r   r   s          @r\   test_plot_ivzTestFitResult.test_plot_iv  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  r7  r  r^   r\   r-  r-    s#        , , , , ,r^   r-  rX   )r  r   r   )4rs   numpyry   numpy.testingr   r]  r   r   rv   scipyr   scipy.optimizer   test_continuous_basicr	   !scipy.stats._distn_infrastructurer
   scipy.stats._distr_paramsr   scipy.statsr   r   r}   r   mle_failing_fitsr   mm_failing_fitsmm_slow_fitsrq   r   rY   r]   r   r   r  r   r   r   r   r   r  r   r   r  r  r  r  r'  r)  r  r  r-  r  r^   r\   <module>rC     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 ' ' ' ' ' '  	
   (  
( 
( 
(; ; ;
 &4=MNN'        )<)<)>)>??E4=11GN GN 21 @? GNTI I I IC C C/ / /    :z2 ;578 8 8 8 ) ) )X9 9 9x   +-@-@-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^. . .
bO bO bO bO bO bO bO bOJ, , , , , , , , , ,r^   