
    Ug                        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'        ?      ?)
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(   )2alphar!   r*   burr12cauchyr+   r,   r"   dgammadweibullr$   fatiguelifefisk
foldcauchy
genextremer   genhyperbolicgennorm	genpareto
halfcauchyinvgamma
invweibullr   r&   	johnsonsukappa3r   r   levylevy_lr   
loglaplacelomaxr-   nakagamir   nctr   r1   r3   	powernormr(   
skewcauchytr   triangtruncparetor   r   r    )argusexponpowr#   r   r   r/   halfgennormgompertz	johnsonsbr   	kstwobignr'   r   r   r)   r4   )MMMLErP   )erlangr>   norminvgaussc               #   B   K   t           D ]\  } }| t          vr| |fV  d S N)r	   skip_fit)distnameargs     Y/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/scipy/stats/tests/test_fit.pycases_test_cont_fitra   _   sA      
 "    #8##C-       zdistname,argmethodrX   rW   c           	      @   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          |          z  }|d#tK          |          z  z  }|d$tK          |          z  z  }tG          d%|j        z  |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sizerX   flocrc   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
)&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AssertionErrorrk   str)r^   r_   rc   	run_xfail	run_xslowmsgdistfntrueargdiffthresholdfit_sizer   kwdsestdata1est1nicru   data2est2difftxts                        r`   test_cont_fitr   i   st    BImU;;;<<IBImU;;;<<I<'''	' QS:f%%%i%IC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   D/JJ	J	c                     t          t          |           }|                    |          dd          }t          |||d| z             d S )Nrw   z"poor mle fit of (loc, scale) in %s)atolro   )r   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rb   c                      t          j        g d          } t          d| ddgd           t          d| ddgd           d S )N)rr   {Gz?r   r   Gz?r   r          @uniformrr   rq   MbP?expongp=
ף?)r   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Brb   c                  x    g d} t           j                            | d          }t          |ddgd           dS )zgh-6167)r   r   r   r   ri   ri   ri   ri   r   )rm   rh   r   r   N)r   r   r   r   )r   phats     r`   test_expon_fitr      sC    ###D;??4a?((DD1c(......rb   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     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)      ?      @)
   333333?ri   c                 n   t           j                            d          }t          | d          r| j        }n| j        } | j        |d|d} ||g|R                                   }|                     ||          }| 	                    ||          }t          ||           t          ||           d S )Nig:pdfd   rl   random_state)r   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#rb   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>
   rQ   r   r   arcsinefoldnormr   r   rP   r   r    >3   r$   rN   r+   r;   ricer5   binomgammarI   r0   r6   rY   rE   r-   nbinomr1   r?   lognormrandintr   bradfordr9   rR   r   rT   rB   invgaussrJ   r.   r2   skewnormr!   	exponnormr@   r&   rU   rD   rV   rL   r<   r=   rC   rH   r4   r"   r:   rS   weibull_maxweibull_minrZ   r'   >   r   rK   r   r*   r   r   rO   skellamzipfianr   r   	betabinomr#   	hypergeomr   	truncnorm
betanbinomr   
loguniform
nhypergeom
reciprocalr%   r   r3   r>   r/   r(   nchypergeom_fishernchypergeom_walleniusztested separatelyreasonmarkstoo slow (>= 0.25s)too slow (>= 1.0s))dictr   r	   
isinstancer   r|   parammarkr   slowxslow)skip_basic_fitslow_basic_fitxslow_basic_fitr   r  s        r`   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 rb   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>   rQ   r   r   r   r   r   r   r%   r   r   rZ   r>   r    >2   rN   r+   r,   r;   waldr5   r   rI   anglitrY   rE   r1   rO   r   r   maxwellr   r   r   r9   rR   r   r   rT   loggammar   r   r#   r@   r   rD   rV   rL   r<   r=   rC   rH   r   r   r4   r"   r:   genlogisticrP   r   r   semicircularr'   r/   laplace_asymmetric>#   r$   r   rK   r   r*   r   r   rQ   r0   r6   r8   r   r-   r?   r   r   rB   r   rJ   r.   r2   r!   r&   rU   r   r   r   r   rS   r3   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          r`   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 rb   c               #      K   t          t                                                    D ]%\  } }t          | t                    r| dv r| |fV  &d S )N>   r'   r    )r  r	   itemsr  r   )r^   shapess     r`   cases_test_fitstartr  O  sk       NN0022  &8S)) 	BBB	 rb   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   rj   )invaliddividerw   )r   r   r   r   r   r   	_fitstart	_argcheck)r^   r  r   r   r   guesss         r`   test_fitstartr&  W  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)rn   r   )r   r   testingr   )
r   r   params1params0rn   r   	nlff_namenlffnlff1nlff0s
             r`   assert_nlff_less_or_closer0  c  sh    4##DD$ED$EEMM

""5%d"FFFFF Mrb   c                   6   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ej                            dd          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prv   {Gz?)r   rn   c                     t          |ddi|S )Nr   r   r   )selfargsr   s      r`   optzTestFit.optw  s    %t<!<t<<<rb   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r;  r   s     r`   test_dist_ivzTestFit.test_dist_ivz  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   ri      z.All elements of `data` must be finite numbers.r   ri   rE  )123)
r|   r   r?  r   r   r   r@  r   naninfrA  s     r`   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...r4  r5  r   r   r7  r8  rF  r   z6Each element of a `bounds` sequence must be a tuple...)r   r   rE  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...)r4  r4  r4  r4  z.There are no values for `p` on the interval...)r   r   r6  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   r?  r   rJ  )r;  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      rN  r   )r%  z+Each element of `guess` must be a scalar...hir6  r$   ri   z-A `guess` sequence must contain at least 2...z1A `guess` sequence may not contain more than 3...)r   ri   rE     zCGuess for parameter `n` rounded.*|Guess for parameter `p` clipped.*g      @g      z$Guess for parameter `loc` rounded...)r3  r   r   z"Guess for parameter `p` clipped...r3  z$Guess for parameter `loc` clipped...)r3  r   r   )
r|   r   r   r   r   r   r   shape_bounds_dr   r?  )r;  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 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   ri   )dtypeg      $@rw   r   r   rM  )gؗҜ<r   pmfFr   r   zoverflow encountered)rc   	optimizerr   _penalized_nlpsfmlemser,  )r  r	   r   r   r   r   r   r   r   r   emptylenfloat64signr   listfloorr   nptsuppress_warningsfilterr   r   r=  r0  r   tols)r;  	dist_namerc   N	dist_datar   r   r  rP  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rk  c                 2    |                      |d           d S )Nr_  rs  r;  rk  s     r`   test_basic_fit_mlezTestFit.test_basic_fit_mle      Iu-----rb   c                 2    |                      |d           d S )Nr`  ru  rv  s     r`   test_basic_fit_msezTestFit.test_basic_fit_mse  rx  rb   c                    d}t           j                            | j                  }t          j        }d} |j        |||d}ddd}t	          j        |||| j                  }t          |||j
        |fi | j         d S )Nr   )rh   r   r   皙?r   rn  ro  r\  )r   r   r   r   r   r   r   r   r=  r0  r   rj  r;  rl  r   r   r  r   rO  rq  s           r`   test_arcsinezTestFit.test_arcsine  s     i##DI..}txac:::(9==idLDHEEE!$cj&NNDINNNNNrb   rc   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   )rh   r         @r   r|  )r+   rn  ro  )r\  rc   )r   r   r   r   r   rQ   r   r   r=  r0  r   rj  )	r;  rc   rl  r   r   r  r   rO  rq  s	            r`   
test_arguszTestFit.test_argus%  s    
 i##DI..{txac:::(YOOidLDHVTTT!$cj&NNDINNNNNrb   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|  )crn  ro  r  )r   r   r   r   r   r   r   r   r=  r0  r   rj  r  s           r`   test_foldnormzTestFit.test_foldnorm4  s     i##DI..~,txac:::&y9MMidLDHEEE!$cj&NNDINNNNNrb   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|  rU  r  )r   r   r   r   r   rP   r   r   r=  r0  r   rj  r  s           r`   test_truncparetozTestFit.test_truncparetoB  s     i##DI.. %txac:::!{1}idLDHEEE!$cj&NNDINNNNNrb   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|  r3  r  )r   r   r   r   r   r   r   r   r=  r0  r   rj  r  s           r`   test_truncweibull_minzTestFit.test_truncweibull_minP  s     i##DI..%*txac:::!{1}idLDHEEE!$cj&NNDINNNNNrb   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   rn  rl   r   r7  r      r  )gY.?r   )r   r   r   r   r   r   r   r   r   r=  r   r   rj  	bernoulli)
r;  rl  r   r   r7  r8  rn  r   rO  rq  s
             r`   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::	:::::rb   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   r3  rn  r  )r   r   )ro  rl   r   )r9  r3  ro  r  r   rn  ro  rl   r   r~  )r   r   r   r   r   normr   r   r=  r   r   rj  )r;  rl  r   r   rn  ro  r   
loc_boundsrP  rq  scale_boundss              r`   test_fit_only_loc_scalezTestFit.test_fit_only_loc_scales  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>>>>>rb   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  r5  r~  r  r  )r   r  )r  r  r6  r  )r   r   r   r   r   r  r   r   r   r   rj  r   r=  )r;  rl  r   r   rn  ro  r   rq  rP  r7  r8  rO  s               r`   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=====rb   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   )r3  r   r   r   )r      r5  )r   r   z3Optimization converged to parameter values that areF)r   r   r   r   r   r   r   minr   r   
startswithsuccess)	r;  rl  r   r   r  r   rP  rq  r   s	            r`   test_failurezTestFit.test_failure  s    i##DI..|txac:::xxzzQ---idF++G{%%g.....{e######rb   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   ))ri      )ffffff?F   )g333333?x   rM  r   r  )r%  r\  )r   r   r   r   r   r   r   r=  allcloser   rj  r   )r;  rl  r   r   r   rP  r   rq  s           r`   
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8rb   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 )Nri   rU  )r   r   :0yE>r   r~  r_  rP  rc   rE  r   r   r`  gRQ@)r   r   r   r   r   ro  )r;  r   r   rP  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$??????rb   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   rE     r   rM  r  r~  r`  r  r   rZ  r   -C6?rn   )
r   r   r   r   r   r   r   r   r   r   )r;  r   r   r7  r   rP  rq  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3rb   N),__name__
__module____qualname__r   r   r   r   r   r   r   r   r   r   r@  rV  r   rn   rj  r=  rB  rK  rQ  rW  rs  r|   r
  parametrizer  rw  r  rz  r  r  r  r  r  r  r  r  r  r  r  r  r   rb   r`   r2  r2  l  sJ       ;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 [X~66O O 76OO O OO O OO O O; ; ;*? ? ?:> > >2$ $ $  [9 9 9"	@ 	@ 	@4 4 4 4 4rb   r2  )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 )NrD  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  r|   r   	TypeErrorr   r?  )r;  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rc   {Gzt?r   r  )r   r   r   
examgradesr   stdr   r   r  kstestcdfr   r  pvaluer;  r   r   r  rq  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::::::rb   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  r;  r   r   rq  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6rb   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         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::::::rb   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-@rv   r  r   
r   r   r   aranger   r   r  r   r  r  r;  r   r   r  rq  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4rb   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  ro  g{U=@r  r  guV?r}  r  r   r	  r  s        r`   test_against_anderson_case_1z.TestGoodnessOfFit.test_against_anderson_case_16  s    i##$788Ia!34ej!,(,3@ @ @u---
Cd333333rb   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  rn  gfHF@r  r  gZd;@皙?r  r   r	  r  s        r`   test_against_anderson_case_2z.TestGoodnessOfFit.test_against_anderson_case_2A  s    i##$677Ia/0ej!,(,3@ @ @u---
E555555rb   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   ri   r   r  r  r  gS?g333333?r  r   )r   r   r   r   r   r   r   r  r   r  r  )r;  r   r   rq  s       r`   test_against_anderson_case_3z.TestGoodnessOfFit.test_against_anderson_case_3L  s    i##$788N1q,/  1 1ej!t#NNNu---
Dt444444rb   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)r;  r   r   rq  r   s        r`   test_against_anderson_gumbel_rz0TestGoodnessOfFit.test_against_anderson_gumbel_rV  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Mrb   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      rw   r3  r   r   r   r~  fillibenr  gG=D;?r  r   r   ?gF8y?gh㈵>r  gffffff?Mb`?)	r   r   r   r   r   r  r   r  r  )r;  r   yr  rq  s        r`   test_against_filliben_normz,TestGoodnessOfFit.test_against_filliben_normb  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6rb   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   )rn  ro  rl   r  r  r   r   r~  r  gV瞯<r  )	r   r   r   normalr   r   r  r   r  r   s         r`   test_filliben_propertyz(TestGoodnessOfFit.test_filliben_propertyy  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Arb   case   )gV-?gCl?ffffff?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  r9  r  rv   r}  r   r  r   )
r   r   r   r   r   r  r   scoreatpercentilenull_distributionr   )	r;  r%  r   r7  r   r   r  rq  percentiless	            r`    test_against_filliben_norm_tablez2TestGoodnessOfFit.test_against_filliben_norm_table  s    
 i##$6773JJqMM 1--#EJ.8sL L Lh>>>??%c&;[_MMSt,,,,,,rb   ))r3  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_ )rl   r  r  r  r  gQ?r   )
r   r   r   r#  r   r   rayleighr   r  r  )r;  r%  r7  ref_statistic
ref_pvaluer   r   rq  s           r`   test_against_ppccz#TestGoodnessOfFit.test_against_ppcc  s     (,$=*i##$788JJAJ#ENA146 6 6}4@@@@
JV<<<<<<rb   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   ri   r(  r  r  g*@ro  g(\u+@rn  g33333+)r  guessed_params
fit_paramsr  r   r  r  )r  ro  )r   r   r   r   r   r   r   r   r  
fit_resultr   r  r   ro  rn  r-  )	r;  r   r   r7  r8  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Nrb   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 )Nrs   r   r   )rt   prependappendri   )r   r   r  r   r   )r   r   rt   r   r   r   s         r`   	greenwoodz:TestGoodnessOfFit.test_custom_statistic.<locals>.greenwood  sV    4(((AAa:::A6!q&t,,,,rb   r6  r3  r   r   r   r~  r  )r9  rv   r}  g?r   g?r   g333333?r  g?r  r'  rq   )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   )r;  r@  r   r   resultr8  exact_quantilessimulated_quantiless           r`   test_custom_statisticz'TestGoodnessOfFit.test_custom_statistic  s    	- 	- 	- i##$788{AC88 d67!.D.D+43H H H EDDB B B !k&*BAFF+_5IIIIIIrb   N)r  r  r  r  r  r  r  r  r  r  r  r|   r
  r  r  r!  r$  r  r/  r4  r;  rE  r  rb   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dJ J J J Jrb   r  c                       e Zd Zd ZdS )TestFitResultc                    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$ rs t           j                            d          sPd}t          j	        t          |          5  |                    d           d d d            Y d S # 1 swxY w Y   Y d S Y d S w xY w)Nl   u!u\xD r   r   r   r   c                  $    t          | i |diS )Nr   r   )r<  kwargsr   s     r`   r\  z-TestFitResult.test_plot_iv.<locals>.optimizer  s!    )4D6DDDDDDrb   r  r5  r  z!`plot_type` must be one of \{'...r   llama)	plot_typez
2.0.0.dev0z2matplotlib must be installed to use method `plot`.)r   r   r   r   r  r   r   
matplotlibr|   r   r?  plotModuleNotFoundErrorImportError__version__r  )r;  r   r\  rP  rq  rM  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	0:Gz999 , ,7+++, , , , , , , , , , , , , , , , , ,#[1 	0 	0 	0 >,,\:: 0O]#6gFFF 0 0HHwH///0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0		0s[   0!C B5(C 5B99C <B9=C AED4&E4D8	8E;D8	<EEN)r  r  r  rR  r  rb   r`   rG  rG    s#        0 0 0 0 0rb   rG  r\   )r'  r   r   )7ry   numpyr   numpy.testingr)  rg  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]   ra   r
  r  r  r   r   r   r   r   r  r   r   r  r  r  r&  r0  r2  r  r  rG  r  rb   r`   <module>r`     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N HN 21 @? HNVI I I IC C C/ / /    :z2 ;578 8 8 8 ) ) )X: : :z   +-@-@-B-BCC' ' DC' MN(.G G G Gz4 z4 z4 z4 z4 z4 z4 z4|. . .
BJ BJ BJ BJ BJ BJ BJ BJH0 0 0 0 0 0 0 0 0 0rb   