
    x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)0alpha	betaprimer    burr12cauchyr!   r"   crystalballdgammadweibullffatiguelifefisk
foldcauchy
genextremer   genhyperbolicgennorm	genpareto
halfcauchyinvgamma
invweibull	johnsonsukappa3r   r   levylevy_lr   
loglaplacelomaxr#   nakagamir   nctr   r'   r)   	powernormr+   
skewcauchytr   triangtruncparetor   r   r   )argusexponpow	exponweibr   r   r%   halfgennormgompertz	johnsonsbr   	kstwobignrecipinvgaussr   r   vonmises_line)MMMLErJ   erlangr8   c               #   F   K   t         D ]  \  } }| t        vs| |f  y wN)r	   skip_fit)distnameargs     </usr/lib/python3/dist-packages/scipy/stats/tests/test_fit.pycases_test_cont_fitr]   V   s-     
 "  #8#C- s   !	!zdistname,argmethodrU   rT   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sizerU   flocr^   zCDifferent results fitting uncensored data wrapped as CensoredData: z: est=z est1=g|=)rtolerr_msg   Gz?r   )\(?)axis)intervalz2Different results fitting interval-censored data: z est2=皙?znan returned in fitzparameter: %s
zestimated: %s
zdiff     : %s
zfit not very good in %s
)%failing_fitsintosenviron	Exceptionpytestxfailgetattrr   nphstackmaxvstackthresh_percentfullnumargs
thresh_min	fit_sizesrandomseederrstatervsnamemle_use_floc0fitCensoredDatar   fail_interval_censoredcolumn_stacksortabsmeananyisnanAssertionErrorrd   str)rZ   r[   r^   rv   msgdistfntrueargdiffthresholdfit_sizer   kwdsestdata1est1nicrm   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 )Nro   z"poor mle fit of (loc, scale) in %s)atolrh   )rw   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)rk   {Gz?r   r   Gz?r   r          @uniformrk   rj   MbP?expongp=
ף?)rx   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   rb   rb   rb   rb   r   )rf   ra   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)rx   concatenatezerosonesru   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)      ?      @)
   g333333?rb   c                 Z   t         j                  j                  d      }t        | d      r| j                  }n| j
                  } | j                  |d|d} ||g| j                          }| j                  ||      }| j                  ||      }t        ||       t        ||       y )Nig:pdfd   re   random_state)rx   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>   rK   r   r   foldnormr   rJ   r   r   >-   r3   rH   r!   r5   ricer,   binomrC   r&   r.   r?   r#   nbinomr'   arcsiner9   lognormrandintr   bradfordr2   rL   r   rO   invgaussrD   r$   r(   r-   r:   rP   r>   rQ   rF   r6   r7   r=   rB   r*   r0   r4   rN   weibull_maxnorminvgaussrR   >   r   rE   r   r    r   r   rI   skellamzipfianr   	betabinomrM   	hypergeomr   	truncnormr   
loguniform
nhypergeom
reciprocalgeninvgaussr   r)   r8   r%   r+   nchypergeom_fishernchypergeom_walleniusztested separatelyreasonmarkstoo slow (>= 0.25s)too slow (>= 1.0s))dictr   r	   
isinstancer   ru   parammarkskipslowxslow)skip_basic_fitslow_basic_fitxslow_basic_fitr   r   s        r\   cases_test_fit_mler     s     L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>   rK   r   r   skewnormr   r   r   r   r   r8   r   >8   rH   r!   r"   r5   waldr,   gammarC   anglitr1   rV   r?   r#   r'   rI   r   r   maxwellr   r   r   r2   rL   r   r   rO   loggammarD   r   	exponnormrM   r:   r   rP   r>   rQ   rF   r6   r7   r=   rB   r   r   r*   r0   r4   genlogisticrJ   r   weibull_minsemicircularrR   rS   r%   r   laplace_asymmetric>   r3   r   rE   r   r    r   r   r&   r.   r   r9   r   r   r<   r   r$   r(   r-   r   r   r   r   rN   r   r)   r+   r   r   r   zFails. Oh well.r   r   r   r   zignore::RuntimeWarning)r   r   r	   r   r   ru   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>   rR   r   )r   r	   itemsr   r   )rZ   shapess     r\   cases_test_fitstartr  D  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   rc   )invaliddividero   )rw   r   rx   r   r   r   	_fitstart	_argcheck)rZ   r  r   r   r   guesss         r\   test_fitstartr  L  s|    5(#D
))

	
*C::b>D	Xh	7 %t$% 4>>5":&&&% %s   BBc                     t        | |      } |||      } |||      }	||	k  s$t        j                  j                  ||	||       y y )N)rg   r   )rw   rx   testingr   )
r   r   params1params0rg   r   	nlff_namenlffnlff1nlff0s
             r\   assert_nlff_less_or_closer&  X  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&ej2                  jN                  d        Z(d Z)d Z*y )!TestFitl   Va   r   r   r   r   r   r   r   nprn   {Gz?)r   rg   c                     t        |ddi|S )Nr   r   r   )selfargsr   s      r\   optzTestFit.optl  s    %t<!<t<<r   c                     d}t        j                  t        |      5  t        j                  d| j
                  | j                         d d d        y # 1 sw Y   y xY w)Nz `dist` must be an instance of...r   r   )ru   r   
ValueErrorr   r   r   shape_bounds_ar1  r   s     r\   test_dist_ivzTestFit.test_dist_ivo  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   rb      z.All elements of `data` must be finite numbers.r   rb   r;  )123)
ru   r   r5  r   r   r   r6  rx   naninfr7  s     r\   test_data_ivzTestFit.test_data_ivt  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   r-  r.  r<  r   z6Each element of a `bounds` sequence must be a tuple...)r   r   r;  z6Each element of `bounds` must be a tuple specifying...)r   r   r   r   r   z7A `bounds` sequence must contain at least 2 elements...z;A `bounds` sequence may not contain more than 3 elements...)r*  r*  r*  r*  z.There are no values for `p` on the interval...)r   r   r,  z.There are no values for `n` on the interval...)r   r   z6There are no integer values for `n` on the interval...)gffffff?g?z0The intersection of user-provided bounds for `n`)ru   r   r   r   r   r   r   r   r5  rx   r@  )r1  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      rD  r   )r  z+Each element of `guess` must be a scalar...hir,  r3   rb   z-A `guess` sequence must contain at least 2...z1A `guess` sequence may not contain more than 3...)r   rb   r;     z"Guess for parameter `n` rounded...g      @g      z$Guess for parameter `loc` rounded...)r)  r   r   z"Guess for parameter `p` clipped...r)  z$Guess for parameter `loc` clipped...)r)  r   r   )
ru   r   r   r   r   r   r   shape_bounds_dr   r5  )r1  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 7%\\.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   rb   )dtypeg      $@ro   r   r   rC  )gؗҜ<r   pmfFr   r   zoverflow encountered)r^   	optimizerr   _penalized_nlpsf)mlemser"  )r   r	   r   rx   r   r   r   rw   r   r   emptylenfloat64signr   listfloorr   nptsuppress_warningsfilterr   r   r3  r&  r   tols)r1  	dist_namer^   N	dist_datar   r   r  rF  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r`  c                 (    | j                  |d       y )NrT  rh  r1  r`  s     r\   test_basic_fit_mlezTestFit.test_basic_fit_mle      Iu-r   c                 (    | j                  |d       y )NrU  rj  rk  s     r\   test_basic_fit_msezTestFit.test_basic_fit_mse	  rm  r   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   )ra   r         @r   皙?r   )r!   rc  rd  rR  )rx   r   r   r   r   rK   r   r   r3  r&  r   r_  r1  ra  r   r   r  r   rE  rf  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   rq  r   rr  )crc  rd  rt  )rx   r   r   r   r   r   r   r   r3  r&  r   r_  ru  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   rr  rK  rt  )rx   r   r   r   r   rJ   r   r   r3  r&  r   r_  ru  s           r\   test_truncparetozTestFit.test_truncpareto)  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   rq  r   rr  r)  rt  )rx   r   r   r   r   r   r   r   r3  r&  r   r_  ru  s           r\   test_truncweibull_minzTestFit.test_truncweibull_min7  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   rc  re   r   r-  r      rt  )gY.?r   )rx   r   r   r   r   r   r   r   r   r3  r   r   r_  	bernoulli)
r1  ra  r   r   r-  r.  rc  r   rE  rf  s
             r\   test_missing_shape_boundsz!TestFit.test_missing_shape_boundsE  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)  rc  rt  )r   r   )rd  re   r   rd  r  r   rc  rd  re   r   rc  rd  )rx   r   r   r   r   normr   r   r3  r   r   r_  )r1  ra  r   r   rc  rd  r   
loc_boundsrF  rf  scale_boundss              r\   test_fit_only_loc_scalezTestFit.test_fit_only_loc_scaleZ  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+  r  r  r  )r   r  )r  r  r,  rt  )rx   r   r   r   r   r  r   r   r   r   r_  r   r3  )r1  ra  r   r   rc  rd  r   rf  rF  r-  r.  rE  s               r\   test_everything_fixedzTestFit.test_everything_fixedw  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)rx   r   r   r   r   r   r   minr   r   
startswithsuccess)	r1  ra  r   r   r  r   rF  rf  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                  | j                        }t        j
                  }d}g d} |j                  |||d}t	        j                  |||| j                        }t        j                  |j                  |fi | j                  rJ t	        j                  ||||| j                        }t        |j                  |fi | j                   y )Ni  )r        r   ))rb      )gffffff?F   )g333333?x   rC  r   rt  )r  rR  )rx   r   r   r   r   r   r   r   r3  allcloser   r_  r   )r1  ra  r   r   r   rF  r   rf  s           r\   
test_guesszTestFit.test_guess  s     ii##DII.;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 )Nrb   rK  )r   r   :0yE>r   r  rT  rF  r^   r;  r   r   rU  gRQ@)r   r   r   r   r   rd  )r1  r   r   rF  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   rC  r  r  rU  r  r   rP  r   -C6?rg   )
rx   r   r   r   r   r   r   r   r   r   )r1  r   r   r-  r   rF  rf  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   rx   r   r   r   r   r   r6  rL  r   rg   r_  r3  r8  rA  rG  rM  rh  ru   r   parametrizer  rl  r  ro  rv  ry  r{  r}  r  r  r  r  r   r  r  r   r   r\   r(  r(  a  s2   ;;DD
))


%C;;??1c#?>Dv&N"0NDD$'D=:
G1:f-N^ 7D [[[*<*>?. @. [[[*<*>?. @.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                   b   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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  ru   r   	TypeErrorr   r5  )r1  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   ddofr  ksknown_paramsr  r   exactr^   {Gzt?r   r  )rx   r   r   
examgradesr   stdr   r   r  kstestcdfr   r  pvaluer1  r   r   r  rf  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  r  r  r  g5;Nѡ?r  r   r  )rx   r   r   r  r   r   r  r   r  r  r  r   r  r  r1  r   r   rf  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  r  cvmr  r  r   r  )rx   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  r  adr  gV-@rn   r  r   
rx   r   r   aranger   r   r  r   r  r  r1  r   r   r  rf  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  rd  g{U=@r  r  guV?rs  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  rc  gfHF@r  r  gZd;@皙?r  r   r  r  s        r\   test_against_anderson_case_2z.TestGoodnessOfFit.test_against_anderson_case_2'  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   rb   r   r  r  r  gS?g333333?r  r   )rx   r   r   r   r  r   r   r  r   r  r  )r1  r   r   rf  s       r\   test_against_anderson_case_3z.TestGoodnessOfFit.test_against_anderson_case_32  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  r  r   r   r  r  gumbel_r)r   r   r   r  r   )rx   r   r   r   r7   r   r   r  andersonr   r  critical_valuesr  significance_level)r1  r   r   rf  r   s        r\   test_against_anderson_gumbel_rz0TestGoodnessOfFit.test_against_anderson_gumbel_r<  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      ro   r)  r   r   r   r  fillibenr  gG=D;?r  r   r   g?gF8y?gh㈵>r  gffffff?Mb`?)	rx   r   r   r   r   r  r   r  r  )r1  r   yr  rf  s        r\   test_against_filliben_normz,TestGoodnessOfFit.test_against_filliben_normH  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   )rc  rd  re   r  r  r   r   r  r  gV瞯<r  )	rx   r   r   normalr   r   r  r   r  r  s         r\   test_filliben_propertyz(TestGoodnessOfFit.test_filliben_property_  s    ii##$78JJ2SsJ3##EJJ.8sL 1-##EJJ.8sLs}}5Ar   case   )gV-?gCl?gffffff?g-?gx?2   )g㥛 ?gzG?gv?$C?g1Zd?_   )r  gS?g~jt?gZd;O?gS?c                 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   r  r  r  )r  r/  r  rn   rs  r   r  r   )
rx   r   r   r   r   r  r   scoreatpercentilenull_distributionr   )	r1  r  r   r-  r   r   r  rf  percentiless	            r\    test_against_filliben_norm_tablez2TestGoodnessOfFit.test_against_filliben_norm_tablej  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_ )re   r  r  r  r  gQ?r   )
rx   r   r   r  r   r   rayleighr   r  r  )r1  r  r-  ref_statistic
ref_pvaluer   r   rf  s           r\   test_against_ppccz#TestGoodnessOfFit.test_against_ppccy  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 )Nl   zV8t g}-r   rb   r  r  rx  g*@rd  g(\u+@rc  g33333+)r  guessed_params
fit_paramsr  r   r  r  )rx  rd  )rx   r   r   r   r  r   r   r  r  
fit_resultr   rx  r   rd  rc  r  )	r1  r   r   r&  r'  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   N)r  r  r  r  r  r  r  r  r   r  r  ru   r   r   r  r  r  r  r  r$  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r   r  c                       e Zd Zd Zy)TestFitResultc                 0   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$ rH d}t        j                  t        |      5  |j                  d       d d d        Y y # 1 sw Y   Y y xY ww xY w)Nl   u!u\xD r   r   r   r   c                  "    t        | i |diS )Nr   r   )r2  kwargsr   s     r\   rR  z-TestFitResult.test_plot_iv.<locals>.optimizer  s    )4D6DDDr   r  r+  rt  z!`plot_type` must be one of \{'...r   llama)	plot_typez2matplotlib must be installed to use method `plot`.)rx   r   r   r   r  r   r   
matplotlibru   r   r5  plotModuleNotFoundErrorImportError)r1  r   rR  rF  rf  r2  r   r   s          @r\   test_plot_ivzTestFitResult.test_plot_iv  s    ii##$78zz~~a3~?	E 6"ii

D&IF	,:Gz9 ,7+, , ,#[1 	,KG2'B ,7+, , ,	,sH   5!B> B2)B> 2B;7B> ;B> >,D*D=DD	DDN)r  r  r  r6  r  r   r\   r,  r,    s    ,r   r,  rX   )gHz>r   r   )4rr   numpyrx   numpy.testingr  r\  r   r   ru   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_fitsrp   r   rY   r]   r   r   r  r   r   r   r   r   r  r   r   r  r  r  r  r&  r(  r  r  r,  r  r   r\   <module>rB     s   	   7   1 + 6 2 '  	
 (
(;
 &4=MN'    )<)>?E4=1GN 2 @ GNTIC/  ::z2 ;;5788 )X9x +-@-BC' D' MN(.Gk4 k4^.
bO bOJ, ,r   