
    S_f^                        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@                  jB                  ej@                  jE                  d e             ej@                  jE                  dddg      d                      Z#d0dZ$d Z%d Z&d Z'ej@                  jE                  de
jP                  d fe
jR                  d!fg      d"        Z*d# Z+d$ Z,d% Z-ej@                  jE                  d& e-             d'        Z.	 	 d1d(Z/ G d) d*      Z0g d+Z1 G d, d-      Z2 G d. d/      Z3y)2    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)1alpha	betaprimer    burr12cauchyr!   r"   crystalballdgammadweibullffatiguelifefisk
foldcauchy
genextremer   genhyperbolicgennorm	genpareto
halfcauchyinvgamma
invweibull	jf_skew_t	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MLErK   erlangr8   c               #   F   K   t         D ]  \  } }| t        vs| |f  y wN)r	   skip_fit)distnameargs     :lib/python3.12/site-packages/scipy/stats/tests/test_fit.pycases_test_cont_fitr^   V   s-     
 "  #8#C- s   !	!zdistname,argmethodrV   rU   c           	         | t         |   v r?	 t        t        j                  d          }|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$                  j'                  d	       t        j(                  d
      5   |j*                  |d|i}	|dk(  r|j,                  t.        v rddi}
ni }
 |j0                  |	fd|i|
}|dk(  rLt        j2                  |	      } |j0                  |fi |
}d|j,                   d| d| }t5        ||d|       |dk(  r| t6        vrd}t        j8                  |	|	f      }|d |dfxx   dz  cc<   |d |dfxx   dz  cc<   |j;                  d       t        j2                  |      } |j0                  |fi |
}d|j,                   d| d| }t5        ||d|       d d d        |z
  }t        j                  t        j<                  	j?                               t        z  t         g      |d<   t        j@                  t        jB                  |            rtE        d      t        jF                  t        j<                  |      |k        s* y  d tI        |      z  }|d!tI              z  z  }|d"tI              z  z  }tE        d#|j,                  z  |z         # t        $ r d}Y -w xY w# 1 sw Y   xY w)$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sizerV   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)r[   r\   r_   rx   msgdistfntrueargdiffthresholdfit_sizer   kwdsestdata1est1nicro   data2est2difftxts                       r]   test_cont_fitr   `   sR    <''	BJJ}566E 88CC + ,CLLUH%FiisCj)*GFF299gn&<&(ggfnnQ.>
&K&M NM  3N
		t[[X& 	C&**S1(1C6;;-#?{&**S8848C **3/!vzz%040))/VC5tfNcsC83I#I ??C:6#q!T)!#q!T)!1%**H=!vzz%040!!'VC5tfFccB=	C@ W} FFBFF388:$6~$E$.$0 1b 66"((3-  !677vvbffTlm34]3N`  #g,. 3s8++ 3t9,,86;;FLMME  	E	&	C 	Cs   M	 
D>M	MMM%	c                 p    t        t        |       }|j                  |      dd  }t        |||d| z         y )Nrq   z"poor mle fit of (loc, scale) in %s)atolri   )ry   r   r   r   )r   datadesiredr   dactuals         r]   _check_loc_scale_mle_fitr      s9    tAUU4[FFG$@4GI    c                  r    t        j                  g d      } t        d| ddgd       t        d| ddgd       y )N)rl   {Gz?r   r   Gz?r   r          @uniformrl   rk   MbP?expongp=
ף?)rz   arrayr   )r   s    r]   "test_non_default_loc_scale_mle_fitr      s5    88DEDYtTlDAWdT7OTBr   c                  n    g d} t         j                  j                  | d      }t        |ddgd       y)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      s-    #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                  j                  |        d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)N      z0Optimization converged to parameters that are...match)rz   concatenatezerosonesrw   raisesr
   warnsRuntimeWarningr   betar   )r   messages     r]   test_fit_errorr      s~    >>288B<56D@G	xw	/ LL(

t     s$   B25 B&B2&B/	+B22B;zdist, params)      ?      @)
   333333?rc   c                 Z   t         j                  j                  d      }t        | d      r| j                  }n| j
                  } | j                  |d|d} ||g| j                          }| j                  ||      }| j                  ||      }t        ||       t        ||       y )Nig:pdfd   rf   random_state)rz   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5A!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              s:d}t        j                  |t
        j                  j                  |             Q||v r:d}t        j                  |t
        j                  j                  |             ||v r:d}t        j                  |t
        j                  j                  |             |  y w)	N>	   rL   r   r   arcsinefoldnormr   rK   r   r   >-   r3   rI   r!   r5   ricer,   binomrD   r&   r.   r@   r#   nbinomr'   r9   lognormrandintr   bradfordr2   rM   r   rP   invgaussrE   r$   r(   r-   r:   r>   rQ   r?   rR   rG   r6   r7   r=   rC   r*   r0   r4   rO   weibull_maxnorminvgaussrS   >   r   rF   r   r    r   r   rJ   skellamzipfianr   	betabinomrN   	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   rw   parammarkskipslowxslow)skip_basic_fitslow_basic_fitxslow_basic_fitr   r   s        r]   cases_test_fit_mler     s     !N
CN1O \H,- >!D#)>(F,,t6;;+;+;6+;+JKK^#*F,,t6;;+;+;6+;+JKK_$)F,,t6;;+<+<F+<+KLLJs   C7C9c               #   |  K   h d} h d}h d}dh}t        t        t        z         D ]  }|| v st        |t              s:d}t        j                  |t
        j                  j                  |             R||v r:d}t        j                  |t
        j                  j                  |             ||v r:d	}t        j                  |t
        j                  j                  |             ||v r:t
        j                  j                  d
      }t        j                  ||       |  y w)N>   r   r   skewnormr   r   r   r   r   r   r8   r   >9   rI   r!   r"   r5   waldr,   gammarD   anglitr1   rW   r@   r#   r'   rJ   r   r   maxwellr   r   r   r2   rM   r   r   rP   loggammarE   r   	exponnormrN   r:   r   r>   rQ   r?   rR   rG   r6   r7   r=   rC   r   r   r*   r0   r4   genlogisticrK   r   weibull_minsemicircularrS   rT   r%   r   laplace_asymmetric>   r3   r   rF   r   r    r   r   r&   r.   r   r9   r   r   r<   r   r$   r(   r-   r   r   r   r   rO   r)   r+   r   r   r   zFails. Oh well.r   r   r   r   zignore::RuntimeWarning)r   r   r	   r   r   rw   r   r   r   r  r  filterwarnings)r  r  r  warns_basic_fitr   r   r   s          r]   cases_test_fit_mser  	  s
    "NJN&	"O !kO\H,- >!D#)>&F,,t6;;+;+;6+;+JKK^#*F,,t6;;+;+;6+;+JKK_$)F,,t6;;+<+<F+<+KLL_$;;--.FGD,,t400Js   D:D<c               #      K   t        t              j                         D ]   \  } }t        | t              r| dv r| |f " y w)N>   rS   r   )r   r	   itemsr   r   )r[   shapess     r]   cases_test_fitstartr  E  sH      N002 &8S)BB	s   AAzdistname, shapesc                 &   t        t        |       }t        j                  j	                  d      }|j                  d      }t        j
                  dd      5  |j                  |      }d d d         |j                  d d  sJ y # 1 sw Y   xY w)NiV r   rd   )invaliddividerq   )ry   r   rz   r   r   r   	_fitstart	_argcheck)r[   r  r   r   r   guesss         r]   test_fitstartr   M  s|    5(#D
))

	
*C::b>D	Xh	7 %t$% 4>>5":&&&% %s   BBc                     t        | |      } |||      } |||      }	||	k  s$t        j                  j                  ||	||       y y )N)rh   r   )ry   rz   testingr   )
r   r   params1params0rh   r   	nlff_namenlffnlff1nlff0s
             r]   assert_nlff_less_or_closer)  Y  sM    4#D$E$EEM


""5%d"F r   c                      e Zd Zej                  ZdZej                  j                  e      Z
ej                  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j2                  j5                  d e             d        Zej2                  j5                  d e             d        Zd Zd Z d Z!d Z"d Z#d Z$d Z%d Z&d Z'ej2                  jP                  d        Z)d Z*d  Z+y!)"TestFitl   Va   r   r   r   r   r   r   r   nprp   {Gz?)r   rh   c                     t        |ddi|S )Nr   r   r   )selfargsr   s      r]   optzTestFit.optm  s    %t<!<t<<r   c                     d}t        j                  t        |      5  t        j                  d| j
                  | j                         d d d        y # 1 sw Y   y xY w)Nz `dist` must be an instance of...r   r   )rw   r   
ValueErrorr   r   r   shape_bounds_ar4  r   s     r]   test_dist_ivzTestFit.test_dist_ivp  sD    4]]:W5 	:IIb$))T%8%89	: 	: 	:s   ,AAc                 8   d}t        j                  t        |      5  t        j                  | j
                  g dg| j                         d d d        d}t        j                  t        |      5  t        j                  | j
                  dddt        j                  g| j                         d d d        t        j                  t        |      5  t        j                  | j
                  dddt        j                  g| j                         d d d        t        j                  t        |      5  t        j                  | j
                  g d| j                         d d d        y # 1 sw Y    xY w# 1 sw Y   xY w# 1 sw Y   txY w# 1 sw Y   y xY w)	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)
rw   r   r8  r   r   r   r9  rz   naninfr:  s     r]   test_data_ivzTestFit.test_data_ivu  s5   ;]]:W5 	CIIdii)d.A.AB	C C]]:W5 	IIIdii!Q266!2D4G4GH	I]]:W5 	IIIdii!Q266!2D4G4GH	I]]:W5 	GIIdii$2E2EF	G 	G	C 	C	I 	I	I 	I	G 	Gs/   /E+2>E8>F4.F+E58FFFc                    d}dddd}t        j                  t        |      5  t        j                  | j
                  | j                  |       d d d        d}ddg}t        j                  t        |      5  t        j                  | j
                  | j                  |       d d d        d	}dd
g}t        j                  t        |      5  t        j                  | j
                  | j                  |       d d d        ddg}t        j                  t        |      5  t        j                  | j
                  | j                  |       d d d        d}dg}t        j                  t        |      5  t        j                  | j
                  | j                  |       d d d        d}g d}t        j                  t        |      5  t        j                  | j
                  | j                  |       d d d        d}ddd}t        j                  t        |      5  t        j                  | j
                  | j                  |       d d d        d}ddg}t        j                  t        |      5  t        j                  | j
                  | j                  |       d d d        d}ddg}t        j                  t        |      5  t        j                  | j
                  | j                  |       d d d        d}t        j                  t        |      5  t        j                  | j
                  | j                         d d d        t        j                   t        j                  fdg}t        j                  t        |      5  t        j                  | j
                  | j                  |       d d d        y # 1 sw Y   sxY w# 1 sw Y   +xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   VxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   }xY w# 1 sw Y   5xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nz1Bounds provided for the following unrecognized...r-  r.  r   r   r0  r1  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`)rw   r   r   r   r   r   r   r   r8  rz   rC  )r4  r   shape_boundsboundss       r]   test_bounds_ivzTestFit.test_bounds_iv  s@   E$6@\\.8 	:IIdiiL9	: K"F+]]:W5 	:IIdiiL9	: K"K0]]:W5 	:IIdiiL9	:1v]]:W5 	:IIdiiL9	: Ly]]:W5 	:IIdiiL9	: P5]]:W5 	4IIdiiF3	4 C$62]]:W5 	:IIdiiL9	: C(]]:W5 	:IIdiiL9	: K"F+]]:W5 	:IIdiiL9	: E]]:W5 	,IIdii+	,&&"&&)62]]:W5 	:IIdiiL9	: 	:[	: 	:
	: 	:
	: 	:	: 	:
	: 	:
	4 	4
	: 	:
	: 	:
	: 	:	, 	,	: 	:s   ,O9,O,O!,O(5,O5
,P ,P5,P
,P)+P6,QOOO%(O25O?PPP&)P36P?Qc                    d}dddd}t        j                  t        |      5  t        j                  | j
                  | j                  | j                  |       d d d        d}dd	d
}t        j                  t        |      5  t        j                  | j
                  | j                  | j                  |       d d d        ddg}t        j                  t        |      5  t        j                  | j
                  | j                  | j                  |       d d d        ddgg}t        j                  t        |      5  t        j                  | j
                  | j                  | j                  |       d d d        d}dg}t        j                  t        |      5  t        j                  | j
                  | j                  | j                  |       d d d        d}g d}t        j                  t        |      5  t        j                  | j
                  | j                  | j                  |       d d d        d}ddd
}t        j                  t        |      5  t        j                  | j
                  | j                  | j                  |       d d d        d}g d}t        j                  t        |      5  t        j                  | j
                  | j                  | j                  |       d d d        d}ddd
}t        j                  t        |      5  t        j                  | j
                  | j                  | j                  |       d d d        d}g d}t        j                  t        |      5  t        j                  | j
                  | j                  | j                  |       d d d        y # 1 sw Y   sxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   yxY w# 1 sw Y   &xY w# 1 sw Y   xY w# 1 sw Y   }xY w# 1 sw Y   )xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nz2Guesses provided for the following unrecognized...r   r      rG  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>     zCGuess for parameter `n` rounded.*|Guess for parameter `p` clipped.*g      @g      z$Guess for parameter `loc` rounded...)r,  r   r   z"Guess for parameter `p` clipped...r,  z$Guess for parameter `loc` clipped...)r,  r   r   )
rw   r   r   r   r   r   r   shape_bounds_dr   r8  )r4  r   r  s      r]   test_guess_ivzTestFit.test_guess_iv  s]   Fc,\\.8 	NIIdiiD,?,?uM	N @d#]]:W5 	NIIdiiD,?,?uM	NC]]:W5 	NIIdiiD,?,?uM	NQ]]:W5 	NIIdiiD,?,?uM	N B]]:W5 	NIIdiiD,?,?uM	N F]]:W5 	NIIdiiD,?,?uM	N X%\\.8 	NIIdiiD,?,?uM	N 9\\.8 	NIIdiiD,?,?uM	N 7d#\\.8 	NIIdiiD,?,?uM	N 9\\.8 	NIIdiiD,?,?uM	N 	NS	N 	N
	N 	N	N 	N	N 	N
	N 	N
	N 	N
	N 	N
	N 	N
	N 	N
	N 	Nsw   8O8O%8O'8O4%8P8P(8P	8P(+8P58QOO$'O14O>PPP%(P25P>Q
c                 2   d}t        t        t        z         }t        j                  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      r5|d d
 }t        j                   |	      |d
<    |j"                  |||d}|d d
 }t        |dd      r |j"                  |||d}t%        j&                         5 }|j)                  t*        d       t        j,                  |||| j.                        }d d d        ddd}||   }t1        |j2                  |fi | j4                  d|i y # 1 sw Y   ;xY w)Nr   rc   )dtypeg      $@rq   r   r   rF  )gؗҜ<r   pmfFr   r   zoverflow encountered)r_   	optimizerr   _penalized_nlpsf)mlemser%  )r   r	   r   rz   r   r   r   ry   r   r   emptylenfloat64signr   listfloorr   nptsuppress_warningsfilterr   r   r6  r)  r   tols)r4  	dist_namer_   N	dist_datar   r   r  rI  locscaler   r   supres
nlff_namesr%  s                    r]   basic_fit_testzTestFit.basic_fit_test  s   L01	ii##DII.ui()I./3v;?A.bjjARWWV_ 44ssAvRWWV_ 44ssAvr
 r
ckk6":&VBZ(9Y'(C<74&cr(ChhsmCG488Sqs;DCR[F4&488Sqs;D""$ 	0JJ~'=>))D$v&*hh0C	0
 $,>?
v&	!$cjj# 	7 	7,5	7	0 	0s   ;HHrc  c                 (    | j                  |d       y )NrW  rk  r4  rc  s     r]   test_basic_fit_mlezTestFit.test_basic_fit_mle      Iu-r   c                 (    | j                  |d       y )NrX  rm  rn  s     r]   test_basic_fit_msezTestFit.test_basic_fit_mse
  rp  r   c                 :   d}t         j                  j                  | j                        }t        j
                  }d} |j                  |||d}ddd}t	        j                  |||| j                        }t        |||j                  |fi | j                   y )Nr   )rb   r   r   皙?r   rf  rg  rU  )rz   r   r   r   r   r   r   r   r6  r)  r   rb  r4  rd  r   r   r  r   rH  ri  s           r]   test_arcsinezTestFit.test_arcsine  s     ii##DII.}}txxac:(9=iidLDHHE!$cjj&NDIINr   c                 <   d}t         j                  j                  | j                        }t        j
                  }d} |j                  |||d}dddd}t	        j                  |||| j                        }t        |||j                  |fi | j                   y )Nr   )rb   r         @r   rt  )r!   rf  rg  rw  )rz   r   r   r   r   rL   r   r   r6  r)  r   rb  rx  s           r]   
test_arguszTestFit.test_argus  s     ii##DII.{{txxac:(YOiidLDHHE!$cjj&NDIINr   c                 <   d}t         j                  j                  | j                        }t        j
                  }d} |j                  |||d}dddd}t	        j                  |||| j                        }t        |||j                  |fi | j                   y )Nr   )g);?r   r{  r   rt  )crf  rg  rw  )rz   r   r   r   r   r   r   r   r6  r)  r   rb  rx  s           r]   test_foldnormzTestFit.test_foldnorm)  s     ii##DII.~~,txxac:&y9MiidLDHHE!$cjj&NDIINr   c                 <   d}t         j                  j                  | j                        }t        j
                  }d} |j                  |||d}dgdz  }t	        j                  |||| j                        }t        |||j                  |fi | j                   y )Nr   )g?g333333@gffffff@gffffff@r   rt  rN  rw  )rz   r   r   r   r   rK   r   r   r6  r)  r   rb  rx  s           r]   test_truncparetozTestFit.test_truncpareto7  s     ii##DII.  %txxac:!{1}iidLDHHE!$cjj&NDIINr   c                 <   d}t         j                  j                  | j                        }t        j
                  }d} |j                  |||d}dgdz  }t	        j                  |||| j                        }t        |||j                  |fi | j                   y )Nr   )r   r   g      ?r   r{  r   rt  r,  rw  )rz   r   r   r   r   r   r   r   r6  r)  r   rb  rx  s           r]   test_truncweibull_minzTestFit.test_truncweibull_minE  s     ii##DII.%%*txxac:!{1}iidLDHHE!$cjj&NDIINr   c                 P   d}t         j                  j                  | j                        }t        j
                  }d\  }}}|j                  |||||      }dt        j                  ddg      i}t	        j                  |||| j                        }	t        |	j                  |||ffi | j                   t        j                  }d\  }}|j                  ||||      }t	        j                  ||| j                        }	t        |	j                  ||ffi | j                   y )	Nr   r   ?r   rf  rf   r   r0  r      rw  )gY.?r   )rz   r   r   r   r   r   r   r   r   r6  r   r   rb  	bernoulli)
r4  rd  r   r   r0  r1  rf  r   rH  ri  s
             r]   test_missing_shape_boundsz!TestFit.test_missing_shape_boundsS  s    
 ii##DII.{{	1cxx1#ACx@RXXq"g./iidLDHHE

Q3K=499=3xxsx=iiddhh7

QH:		:r   c                    d}t         j                  j                  | j                        }t        j
                  }d\  }}|j                  |||      }d}d|i}t	        j                  |||| j                        }	t        |	j                  ||ffi | j                   d\  }}|j                  |||      }d	}
d
|
i}t	        j                  |||| j                        }	t        |	j                  ||ffi | j                   t        j
                  }d\  }}|j                  ||||      }||
d}t	        j                  |||| j                        }	t        |	j                  ||ffi | j                   y )Nr   )      ?r   r  )r   r,  rf  rw  )r   r   )rg  rf   r   )r2  r,  rg  r  r   rf  rg  rf   r   rv  )rz   r   r   r   r   normr   r   r6  r   r   rb  )r4  rd  r   r   rf  rg  r   
loc_boundsrI  ri  scale_boundss              r]   test_fit_only_loc_scalezTestFit.test_fit_only_loc_scaleh  sO   ii##DII.zz
UxxCacx:
$iidFdhh?

S%L>DII> 
Uxxe!#x> <(iidFdhh?

S%L>DII> zz
UxxCu13xG#l;iidFdhh?

S%L>DII>r   c                    d}t         j                  j                  | j                        }t        j
                  }d\  }}|j                  ||||      }t	        j                  ||      }t        |j                  dfi | j                   ||f||fd}t	        j                  |||      }t        |j                  ||ffi | j                   t        j                  }d\  }	}
}|j                  |	|
|||      }dd	d
}t	        j                  |||| j                        }t        |j                  |	|
|ffi | j                   y )Nr   r  r  r.  rv  r  r  )r   r  )r  r  r/  rw  )rz   r   r   r   r   r  r   r   r   r   rb  r   r6  )r4  rd  r   r   rf  rg  r   ri  rI  r0  r1  rH  s               r]   test_everything_fixedzTestFit.test_everything_fixed  s   ii##DII.zz
UxxCu13xG iid#

F8dii8 suen=iidF+

S%L>DII> {{	1cxx1#ACx@$<8iidLDHHE

Q3K=499=r   c                 b   d}t         j                  j                  | j                        }t        j
                  }d} |j                  |||d}|j                         dk(  sJ g d}t	        j                  |||      }d}|j                  j                  |      sJ |j                  du sJ y )Nr   )r,  r   r   r   )r      r.  )r   r   z3Optimization converged to parameter values that areF)rz   r   r   r   r   r   r   minr   r   
startswithsuccess)	r4  rd  r   r   r  r   rI  ri  r   s	            r]   test_failurezTestFit.test_failure  s    ii##DII.||txxac:xxzQ-iidF+G{{%%g...{{e###r   c                    d}t         j                  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                   y )Ni  l   18%)r        r   ))rc      )ffffff?F   )g333333?x   rF  r   rw  )r  rU  )rz   r   r   r   r   r   r   r6  allcloser   rb  r   )r4  rd  r   r   r   rI  r   ri  s           r]   
test_guesszTestFit.test_guess  s     ii##M2;txxac:iidFdhh?;;szz6?TYY???iidF&DHHM

F8dii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	
       y )Nrc   rN  )r   r   :0yE>r   rv  rW  rI  r_   r>  r   r   rX  gRQ@)r   r   r   r   r   rg  )r4  r   r   rI  res_mleres_mses         r]   test_mse_accuracy_1zTestFit.test_mse_accuracy_1  st     1v{{*5))D$veD,,ad;))D$veD,,e$?r   c                    t         j                  j                  d      }t        j                  }d} |dd      j                  ||      }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       y )Nl   4gcvD r   r>     r   rF  r  rv  rX  r  r   rS  r   -C6?rh   )
rz   r   r   r   r   r   r   r   r   r   )r4  r   r   r0  r   rI  ri  r   abr   s              r]   test_mse_accuracy_2zTestFit.test_mse_accuracy_2  s     ii##$78}}Aqz~~13~7 :6iid6%@ GGDMqtVae^a!e$quWqt^a!e$1f

Cd3r   N),__name__
__module____qualname__r   r   r   r   rz   r   r   r   r   r   r9  rO  r   rh   rb  r6  r;  rD  rJ  rP  rk  rw   r   parametrizer  ro  r  rr  ry  r|  r  r  r  r  r  r  r  r  r  r  r   r   r]   r+  r+  b  s8   ;;DD
))


%C;;??1c#?>Dv&N"0NDD$'D=:
G1:f-N^ 7D [[[*<*>?. @. [[[*<*>?. @.OOOOO;*?:>2$  [[9 9"	@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                   h   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                  j#                  ddg dfdg dfdg dfg      d        Zej                  j                  ej                  j#                  dg d      d               Zd Zd Zy)TestGoodnessOfFitc                    t         j                  }g d}d}t        j                  t        |      5  t        t        j                         |       d d d        d}t        j                  t        |      5  t        |g dg       d d d        d}t        j                  t        |      5  t        ||d       d d d        d}t        j                  t        |      5  t        ||d	
       d d d        d}t        j                  t        |      5  t        ||d       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   bxY w# 1 sw Y   y xY w)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  rw   r   	TypeErrorr   r8  )r4  r   r   r   s       r]   test_gof_ivzTestGoodnessOfFit.test_gof_iv  s&   zzC]]9G4 	-EJJL!,	- G]]:W5 	/D9+.	/ 2]]:W5 	5D!t4	5 7]]9G4 	:D!&9	: 7]]:W5 	=D!)<	= 	=!	- 	-	/ 	/	5 	5	: 	:	= 	=s;   D+6D7+EEE+D47E EEE$c                    t         j                  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	
       y )Nl   H]Vh1 r   ddofrv  ksknown_paramsr  r   exactr_   {Gzt?r   r  )rz   r   r   
examgradesr   stdr   r   r  kstestcdfr   r  pvaluer4  r   r   r  ri  r   s         r]   test_against_ksz!TestGoodnessOfFit.test_against_ks  s    ii##$78!wwqzBFF114EFejj!,(,3@ll1ejj8<8<<WMs}}5

CJJT:r   c                    t         j                  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
       y )Nl   8<*}p~ r  r  r   r   r  rv  r  r  g5;Nѡ?r  r   r  )rz   r   r   r  r   r   r  r   r  r  r  r   r  r  r4  r   r   ri  r  r   s         r]   test_against_lillieforsz)TestGoodnessOfFit.test_against_lilliefors  s    ii##$78ejj!t#N!wwqzBFF114EFll1ejj8<8<<WMs}}5

F6r   c                    t         j                  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       y )
Nl   vj!$'C r   r  rv  cvmr  r  r   r  )rz   r   r   r  r   r  r   r   r  cramervonmisesr  r   r  r  r  s         r]   test_against_cvmz"TestGoodnessOfFit.test_against_cvm  s    ii##$78!wwqzBFF114EFejj!,(-CA""1ejj&@<&@&D&DEs}}5

CJJT:r   c                    t         j                  j                  d      }t        j                  dd      }ddd}t	        t
        j                  ||d|      }t        |j                  d	       t        |j                  d
d       y )Nl   jHJE3 r   e   gF6F@r  rv  adr  gV-@rp   r  r   
rz   r   r   aranger   r   r  r   r  r  r4  r   r   r  ri  s        r]   test_against_anderson_case_0z.TestGoodnessOfFit.test_against_anderson_case_0   si    ii##$78IIa02>ejj!,(,3@u-

Dt4r   c                    t         j                  j                  d      }t        j                  dd      }ddi}t	        t
        j                  ||d|      }t        |j                  d       t        |j                  d	d
       y )Nl   H'b4:/ r   r  rg  g{U=@r   r  guV?ru  r  r   r  r  s        r]   test_against_anderson_case_1z.TestGoodnessOfFit.test_against_anderson_case_1+  sj    ii##$78IIa!34ejj!,(,3@u-

Cd3r   c                    t         j                  j                  d      }t        j                  dd      }ddi}t	        t
        j                  ||d|      }t        |j                  d       t        |j                  d	d
       y )Nl   P^QqPr   r  rf  gfHF@r   r  gZd;@皙?r  r   r  r  s        r]   test_against_anderson_case_2z.TestGoodnessOfFit.test_against_anderson_case_26  sj    ii##$67IIa/0ejj!,(,3@u-

E5r   c                     t         j                  j                  d      }t        j                  j                  dddd|      }t        t        j                  |d|      }t        |j                  d	       t        |j                  d
d       y )Nl   iUn gBQ_ *?r   rc   r   r  r   r  gS?g333333?r  r   )rz   r   r   r   r  r   r   r  r   r  r  )r4  r   r   ri  s       r]   test_against_anderson_case_3z.TestGoodnessOfFit.test_against_anderson_case_3A  sn    ii##$78NN1q,/  1ejj!t#Nu-

Dt4r   c                    t         j                  j                  d      }t        j                  ddd      j                  d|      }t        t        j                  |d|	      }t        j                  |d
      }t        |j                  |j                  d          t        |j                  |j                  d   dz  d       y )Nl   /JG gQ8?r   r  rv  r   r   r   r  gumbel_r)r   r   r   r  r   )rz   r   r   r   r7   r   r   r  andersonr   r  critical_valuesr  significance_level)r4  r   r   ri  r   s        r]   test_against_anderson_gumbel_rz0TestGoodnessOfFit.test_against_anderson_gumbel_rK  s    ii##$451s#&((+C(H 	
enna4+.0nnQZ0s':':1'=>

C$:$:1$=c$AMr   c                 h   t         j                  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J  J t        |j                  dd       t        |j                  dd       y )Nl   fKW7/z )r  r      rq   r,  r   r   r   rv  fillibenr  gG=D;?r  r   r   ?gF8y?gh㈵>r  gffffff?Mb`?)	rz   r   r   r   r   r  r   r  r  )r4  r   yr  ri  s        r]   test_against_filliben_normz,TestGoodnessOfFit.test_against_filliben_normW  s    ii##$78# 1-##EJJ.8sL
 	wT:cjj&3&&&&& 	'7dC

F6r   c                 V   t         j                  j                  d      }|j                  ddd      }t	        j
                  t        j                  |d|      }dd	d
}t	        j
                  t        j                  ||d|      }t        |j                  |j                  d       y )Nl   1gDF3 r   r   r   )rf  rg  rf   r  r  r   r   rv  r  gV瞯<r  )	rz   r   r   normalr   r   r  r   r  r  s         r]   test_filliben_propertyz(TestGoodnessOfFit.test_filliben_propertyn  s    ii##$78JJ2SsJ3##EJJ.8sL 1-##EJJ.8sLs}}5Ar   case   )gV-?gCl?ffffff?g-?gx?2   )g㥛 ?gzG?gv?$C?g1Zd?_   )r!  gS?g~jt?gZd;O?gS?c                 X   t         j                  j                  d      }|\  }}|j                  |      }ddd}t        j                  t        j
                  ||d|      }t        j                  g d      }t        j                  |j                  |dz        }t        ||d	
       y )Nl   +^8r   r   rv  r  r  )r  r2  r  rp   ru  r   r  r   )
rz   r   r   r   r   r  r   scoreatpercentilenull_distributionr   )	r4  r  r   r0  r   r   r  ri  percentiless	            r]    test_against_filliben_norm_tablez2TestGoodnessOfFit.test_against_filliben_norm_tabley  s    
 ii##$673JJqM 1-##EJJ.8sLhh>?%%c&;&;[_MSt,r   ))r,  g?g;On?)r  gǄ?g-?)r  g-hC/?g\ Ac?c                     |\  }}}t         j                  j                  d      }|j                  |      }t	        j
                  t        j                  |d|      }t        |j                  |d       t        |j                  |d       y )	Nl   vTV_ )rf   r  r  r  r  gQ?r   )
rz   r   r   r  r   r   rayleighr   r  r  )r4  r  r0  ref_statistic
ref_pvaluer   r   ri  s           r]   test_against_ppccz#TestGoodnessOfFit.test_against_ppcc  sr     (,$=*ii##$78JJAJ##ENNA146}4@

JV<r   c           	      F   t         j                  j                  d      }t        j                  j                  dddd|      }ddi}d	d
i}ddi}t         j                  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                  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                  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 y )N   zV8t g}-r   rc   r   r  r~  g*@rg  g(\u+@rf  g33333+)r  guessed_params
fit_paramsr  r   r  r  )r~  rg  )rz   r   r   r   r  r   r   r  r  
fit_resultr   r~  r   rg  rf  r%  )	r4  r   r   r/  r0  r  r   r   res3s	            r]   test_params_effectsz%TestGoodnessOfFit.test_params_effects  s    ii##$78NN1q,/  1
 tu%
vii##$78u00!!.<*4,8sL ;;t5577>>>T__++1159T__++//8 qii##$78u00!!.<*4,8sL ;;t5577#5577dD 	D D;;t55#55DB 	B BT__++1159T__++//8
  %0
ii##$78u00!!.<*4,8sL 	T__++--t4T__++1159T__++//8;;t55t7M7MNNNNr   c                 8   d }t         j                  j                  d      }t        j                  j                  d|      }t        t        j                  |ddd||      }g d	}g d
}t        j                  |j                  |      }t        ||d       y )Nc                    t        j                  ||      }| j                  |      }t        j                  ||dd      }t        j                  |dz  |      S )Nrm   r   r   )rn   prependappendrc   )rz   r   r  r   r   )r   r   rn   r   r  r   s         r]   	greenwoodz:TestGoodnessOfFit.test_custom_statistic.<locals>.greenwood  sH    4(AAa:A66!q&t,,r   r.  r,  r   r   r   rv  r  )r2  rp   ru  g?r   g?r   g333333?r  g?r  r  rk   )g҈?gxܙ	?g&)?gW>?gR?gEկt><?gw-?gL1=B?gi?g1cg?gV(?g?Qٰ?ghsۄ?r  r   )
rz   r   r   r   r   r   r   quantiler%  r   )r4  r8  r   r   resultr1  exact_quantilessimulated_quantiless           r]   test_custom_statisticz'TestGoodnessOfFit.test_custom_statistic  s    	- ii##$78{{AC8 d67!.D+43H EB !kk&*B*BAF+_5Ir   N)r  r  r  r  r  r  r  r  r  r	  r  rw   r   r  r  r  r  r  r'  r,  r3  r=  r  r   r]   r  r    s    =0;7;	5	4	65 [[	N 	N7.	B [[Vr+I&J')+I&J')+I&J&L M
-M
- [[[[V &D E=E =0OdJr   r  c                       e Zd Zd Zy)TestFitResultc                 r   t         j                  j                  d      t        j                  j                  ddd      }fd}ddg}t        j                  t        j                  |||	      }	 dd l}d
}t        j                  t        |      5  |j                  d       d d d        y # 1 sw Y   y xY w# t        t        f$ ri t         j                  j                  d      sGd}t        j                  t        |      5  |j                  d       d d d        Y y # 1 sw Y   Y y xY wY y w xY w)Nl   u!u\xD r   r   r   r   c                  "    t        | i |diS )Nr   r   )r5  kwargsr   s     r]   rU  z-TestFitResult.test_plot_iv.<locals>.optimizer  s    )4D6DDDr   r  r.  rw  z!`plot_type` must be one of \{'...r   llama)	plot_typez
2.0.0.dev0z2matplotlib must be installed to use method `plot`.)rz   r   r   r   r  r   r   
matplotlibrw   r   r8  plotModuleNotFoundErrorImportError__version__r  )r4  r   rU  rI  ri  rE  r   r   s          @r]   test_plot_ivzTestFitResult.test_plot_iv  s    ii##$78zz~~a3~?	E 6"ii

D&IF	0:Gz9 ,7+, , ,#[1 	0 >>,,\:O]]#6gF 0HHwH/0 0 0 ;		0sO   5!B> B2)B> 2B;7B> ;B> >AD6	D&D6&D0	+D60D65D6N)r  r  r  rJ  r  r   r]   r?  r?    s    0r   r?  rY   )gHz>r   r   )4rt   numpyrz   numpy.testingr"  r_  r   r   rw   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_fitsrr   r   rZ   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>rV     s   	   7   1 + 6 2 '  	
 (
(;
 &4=MN'    )<)>?E4=1GN 2 @ GNTIC/  ::z2 ;;5788 *Z9x +-@-BC' D' MN(.Gy4 y4z.
BJ BJH0 0r   