
    Џkh#                        d dl Z d dlZd dlmZ d dlmZmZ d dlZd dl	m
Z
 d dlmZ ddlmZ d dlmZ d dlmZ d d	lmZ g d
ZdZdZg dZg dZg dZg dZg dZdgZeez   edZeedZdhZ g dZ!d Z"ejF                  jH                  ejF                  jK                  d e"             ejF                  jK                  dddg      d                      Z&d1dZ'd Z(d Z)d Z*ejF                  jK                  d e
jV                  d!fe
jX                  d"fg      d#        Z-d$ Z.d% Z/d& Z0ejF                  jK                  d' e0             d(        Z1	 	 d2d)Z2 G d* d+      Z3g d,Z4 G d- d.      Z5 G d/ d0      Z6y)3    N)assert_allcloseassert_equal)statsdifferential_evolution   )distcont)FitError)distdiscrete)goodness_of_fit)    i'        ?      ?)dpareto_lognorm
gausshypergenexpongengamma	irwinhallkappa4ksonekstwoncfncx2
truncexpontukeylambdavonmiseslevy_stable	trapezoidtruncweibull_minstudentized_range)
	betaprimecrystalball	exponweibfgeninvgauss	jf_skew_tnctrecipinvgaussrel_breitwignervonmises_line)burrchichi2mielkepearson3genhalflogisticrdistparetopowerlawpowerlognorm
wrapcauchyr*   )4alphar"   r,   burr12cauchyr-   r.   r#   dgammar   dweibullr%   fatiguelifefisk
foldcauchy
genextremer   genhyperbolicgennorm	genpareto
halfcauchyinvgamma
invweibullr   r'   	johnsonsukappa3r   r   landaulevylevy_lr   
loglaplacelomaxr/   nakagamir   r(   r   r3   r5   	powernormr*   
skewcauchytr   triangtruncparetor    r   r!   )argusexponpowr$   r   r   r1   halfgennormgompertz	johnsonsbr   	kstwobignr)   r   r   r+   r6   )MMMLErR   )erlangr@   norminvgaussc               #   F   K   t         D ]  \  } }| t        vs| |f  y wN)r	   skip_fit)distnameargs     V/var/www/teggl/fontify/venv/lib/python3.12/site-packages/scipy/stats/tests/test_fit.pycases_test_cont_fitrc   a   s-     
 "  #8#C- s   !	!zdistname,argmethodrZ   rY   c           	      2   t        t        j                  dd            }t        t        j                  dd            }| t        |   v r|sd}t	        j
                  |       | t        |   v r|sd}t	        j                  |       t        t        |       }t        j                  |ddgg      }t        j                  t        j                  |t        z  t        j                  |j                   d	z   t"              g      d
      }t$        D ]*  }	t        j&                  j)                  d      }
t        j*                  d      5   |j,                  ||	|
d}|dk(  r|j.                  t0        v rdd
i}ni } |j2                  |fd|i|}|dk(  rLt        j4                  |      } |j2                  |fi |}d|j.                   d| d| }t7        ||d|       |dk(  r| t8        vrd}t        j:                  ||f      }|d |d
fxx   dz  cc<   |d |dfxx   dz  cc<   |j=                  d       t        j4                  |      } |j2                  |fi |}d|j.                   d| d| }t7        ||d|       d d d        |z
  }t        j                  t        j>                  jA                               t        z  t"        g      |d <   t        jB                  t        jD                  |            rtG        d!      t        jH                  t        j>                  |      |k        s+ y  d"tK        |       d#}|d$tK               d#z  }|d%tK               d#z  }tG        d&|j.                   d#|z         # 1 sw Y   xY w)'NSCIPY_XFAILF)defaultSCIPY_XSLOWz@Failure expected; set environment variable SCIPY_XFAIL=1 to run.z9Very slow; set environment variable SCIPY_XSLOW=1 to run.g              ?   r   i  ignore)allsizerandom_staterZ   flocrd   zCDifferent results fitting uncensored data wrapped as CensoredData: z: est=z est1=g|=)rtolerr_msg   Gz?r   )\(?axis)intervalz2Different results fitting interval-censored data: z est2=皙?znan returned in fitzparameter: 
zestimated: zdiff     : zfit not very good in )&intosgetenvfailing_fitspytestxfail
xslow_fitsskipgetattrr   nphstackmaxvstackthresh_percentfullnumargs
thresh_min	fit_sizesrandomdefault_rngerrstatervsnamemle_use_floc0fitCensoredDatar   fail_interval_censoredcolumn_stacksortabsmeananyisnanAssertionErrorrl   str)r`   ra   rd   	run_xfail	run_xslowmsgdistfntrueargdiffthresholdfit_sizerngr   kwdsestdata1est1nicrx   data2est2difftxts                         rb   test_cont_fitr   k   sh    BIImU;<IBIImU;<I<''	 QS:f%%iICUH%FiisCj)*GFF299gn&<&(ggfnnQ.>
&K&M NM  3Lii##D)[[X& 	C&**S(sCC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L` CL>,SXJb))SYKr**4V[[MDsJKK_	C 	Cs   D?NN	c                 p    t        t        |       }|j                  |      dd  }t        |||d|         y )Nrz   z poor mle fit of (loc, scale) in )atolrr   )r   r   r   r   )r   datadesiredr   dactuals         rb   _check_loc_scale_mle_fitr      s;    tAUU4[FFG$>tfEG    c                  r    t        j                  g d      } t        d| ddgd       t        d| ddgd       y )N)ru   {Gz?r   r   Gz?r   r          @uniformru   rt   MbP?expongp=
ף?)r   arrayr   )r   s    rb   "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   rj   rj   rj   rj   r   )rp   ri   r   r   N)r   r   r   r   )r   phats     rb   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)r   concatenatezerosonesr   raisesr
   warnsRuntimeWarningr   betar   )r   messages     rb   test_fit_errorr      s~    >>288B<56D@G	xw	/ LL(

t     s$   B25 B&B2&B/	+B22B;zdist, params)      ?      @)
   333333?rj   c                 Z   t         j                  j                  d      }t        | d      r| j                  }n| j
                  } | j                  |d|d} ||g| j                          }| j                  ||      }| j                  ||      }t        ||       t        ||       y )Nig:pdfd   rm   )r   r   r   hasattrlogpdflogpmfr   sumnnlf_penalized_nnlfr   )distparamsr   logpxfxrefres1res2s           rb   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>   r   rS   r   r   foldnormrM   r   	truncnormr   rR   poisson_binomr    r!   >3   r%   rP   r-   r=   ricer7   binomgammarL   r2   r8   r[   rG   r/   nbinomr3   arcsinerA   lognormrandintr   bradfordr;   rT   r   rV   rD   invgaussr0   r4   skewnormr"   	exponnormrB   r'   rW   rF   rX   rN   r>   r?   rE   rK   r6   r#   r<   rU   weibull_maxweibull_minr\   r)   >   r   r(   r,   r   r   rQ   skellamzipfianr   r   	betabinomr$   	hypergeomr   
betanbinomr   
loguniform
nhypergeom
reciprocalr&   r   r5   r@   r   r1   r*   nchypergeom_fishernchypergeom_walleniusztested separatelyreasonmarkstoo slow (>= 0.25s)too slow (>= 1.0s))dictr   r	   
isinstancer   r   parammarkr   slowxslow)skip_basic_fitslow_basic_fitxslow_basic_fitr   r  s        rb   cases_test_fit_mler     s     'N
RN=O \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>   rS   r   r   r2   r   r4   r   r   r   r   r&   r   r   r\   r@   r   r!   >1   rP   r-   r.   r=   waldr7   r   rL   anglitr[   rG   r3   rQ   r   maxwellr   r   r   r;   rT   r   r   rV   loggammar   r   r$   rB   r   rF   rX   rN   r>   r?   rE   rK   r   r   r6   r#   r<   genlogisticrR   r   r   semicircularr)   r1   laplace_asymmetric>"   r%   r   r(   r   r,   r   r   rS   r8   r:   r   r/   rA   r   r   rD   r   rM   r0   r"   r'   rW   r   r   r   r  rU   r5   r+   r   r*   r    r  r  r   zFails. Oh well.r  r  r  r	  zignore::RuntimeWarning)r
  r   r	   r  r   r   r  r  r   r  r  filterwarnings)r  r  r  warns_basic_fitr   r  r  s          rb   cases_test_fit_mser    s
    
NJN$	3O !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>   r)   r!   )r
  r	   itemsr  r   )r`   shapess     rb   cases_test_fitstartr"  U  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   rk   )invaliddividerz   )r   r   r   r   r   r   	_fitstart	_argcheck)r`   r!  r   r   r   guesss         rb   test_fitstartr)  ]  s|    5(#D
))

	
*C::b>D	Xh	7 %t$% 4>>5":&&&% %s   BBc                     t        | |      } |||      } |||      }	||	k  s$t        j                  j                  ||	||       y y )N)rq   r   )r   r   testingr   )
r   r   params1params0rq   r   	nlff_namenlffnlff1nlff0s
             rb   assert_nlff_less_or_closer2  i  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ddZd Zd Zd Zd Zd)dZej2                  j5                  d e             d        Zej2                  j5                  d e             d        Zej2                  j>                  d        Z ej2                  j5                  dd      d        Z!ej2                  jD                  d        Z#d Z$d Z%ej2                  j>                  d        Z&d Z'ej2                  j>                  d         Z(d! Z)d" Z*d# Z+d$ Z,ej2                  jD                  d%        Z-d& Z.d' Z/y()*TestFitl   Va   r   r   rm   r   r   r   r   npry   {Gz?)r   rq   r   r   c                    t        |d|i|S Nr   r   )selfr   argsr   s       rb   optzTestFit.opt}  s    %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   )r   r   
ValueErrorr   r   r   shape_bounds_ar?  r   s     rb   test_dist_ivzTestFit.test_dist_iv  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   rj      z.All elements of `data` must be finite numbers.r   rj   rI  )123)
r   r   rC  r   r   r   rD  r   naninfrE  s     rb   test_data_ivzTestFit.test_data_iv  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...r6  r7  r   r   r9  r:  rJ  r   z6Each element of a `bounds` sequence must be a tuple...)r   r   rI  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...)r6  r6  r6  r6  z.There are no values for `p` on the interval...)r   r   r8  z.There are no values for `n` on the interval...)r   r   z6There are no integer values for `n` on the interval...)gffffff?g?z0The intersection of user-provided bounds for `n`)r   r   r   r   r   r   r   r   rC  r   rN  )r?  r   shape_boundsboundss       rb   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      rR  r   )r(  z+Each element of `guess` must be a scalar...hir8  r%   rj   z-A `guess` sequence must contain at least 2...z1A `guess` sequence may not contain more than 3...)r   rj   rI     zCGuess for parameter `n` rounded.*|Guess for parameter `p` clipped.*g      @g      z$Guess for parameter `loc` rounded...)r5  r   r   z"Guess for parameter `p` clipped...r5  z$Guess for parameter `loc` clipped...)r5  r   r   )
r   r   r   r   r   r   r   shape_bounds_dr   rC  )r?  r   r(  s      rb   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   rj   )dtypeg      $@rz   r   r   rQ  )gؗҜ<r   pmfFrm   r   zoverflow encounteredrd   	optimizerr   _penalized_nlpsfmlemser.  )r
  r	   r   r   r   r   seedr   r   r   emptylenfloat64signr   listfloorr   nptsuppress_warningsfilterr   r   rA  r2  r   tols)r?  	dist_namerd   r   N	dist_datar   r!  rT  locscaler   r   supres
nlff_namesr.  s                    rb   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rq  c                 ,    | j                  |dd       y )Nrd  r5  r<  ry  r?  rq  s     rb   test_basic_fit_mlezTestFit.test_basic_fit_mle      Iu!4r   c                 ,    | j                  |dd       y )Nre  rj   r<  r{  r|  s     rb   test_basic_fit_msezTestFit.test_basic_fit_mse  r~  r   c                 @   d}t         j                  j                  | j                        }t        j
                  }d} |j                  |||d}ddd}t	        j                  |||d| j                        }t        |||j                  |fdd	i| j                   y )
Nr   )ri   r   rm   皙?r   rt  ru  re  r`  r.  rb  )r   r   r   rf  r   r   r   r   rA  r2  r   rp  r?  rr  r   r   r!  r   rS  rw  s           rb   test_arcsinezTestFit.test_arcsine  s    
 ii##DII.}}txxac:(9=iidL$((S!$cjj& 	M,>	MBF))	Mr   rd   rc  c                 V   d}t         j                  j                  | j                        }t        j
                  }d} |j                  |||d}dddd}t	        j                  |||| j                  |      }ddd	|   }	t        |||j                  |fi | j                  d
|	i y )Nr   )ri   r         @rm   r  )r-   rt  ru  )ra  rd   r   rb  rc  r.  )r   r   r   rf  r   rS   r   r   rA  r2  r   rp  )
r?  rd   rr  r   r   r!  r   rS  rw  r.  s
             rb   
test_arguszTestFit.test_argus-  s    
 ii##DII.{{txxac:(YOiidLDHHVT"+=>vF	!$cjj& 	7DII 	7,5	7r   c                 D   d}t         j                  j                  | j                        }t        j
                  }d} |j                  |||d}ddddd}t	        j                  |||d| j                        }t        |||j                  |fdd	i| j                   y )
Nr   )gdsz@g@e?ri   r   rm   r  )abrt  ru  rd  r`  r.  r   )r   r   r   rf  r   r   r   r   rA  r2  r   rp  r  s           rb   	test_betazTestFit.test_beta=  s    
 ii##DII.zzBtxxac:&I(9>iidL$((S!$cjj& 	A,2	A6:ii	A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   )g);?r   r  rm   r  )crt  ru  ra  )r   r   r   rf  r   r   r   r   rA  r2  r   rp  r  s           rb   test_foldnormzTestFit.test_foldnormM  s     ii##DII.~~,txxac:&y9MiidLDHHE!$cjj&NDIINr   c                 B   d}t         j                  j                  | j                        }t        j
                  }d} |j                  |||d}dddd}t	        j                  |||d| j                        }t        |||j                  |fdd	i| j                   y )
Nr   )g7h@ri   r   rm   r  )nurt  ru  rd  r`  r.  r   )r   r   r   rf  r   rM   r   r   rA  r2  r   rp  r  s           rb   test_nakagamizTestFit.test_nakagami[  s     ii##DII.~~-txxac:&y9MiidL$((S!$cjj& 	A,2	A6:ii	Ar   c                 B   d}t         j                  j                  | j                        }t        j
                  }d} |j                  |||d}dddd}t	        j                  |||d| j                        }t        |||j                  |fdd	i| j                   y )
Nr   )gk?ri   r   rm   r  )r  rt  ru  re  r`  r.  rb  )r   r   r   rf  r   r4   r   r   rA  r2  r   rp  r  s           rb   test_powerlawzTestFit.test_powerlawi  s    
 ii##DII.~~-txxac:&y9MiidL$((S!$cjj& 	M,>	MBF))	Mr   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@rm   r  rY  r  )r   r   r   rf  r   rR   r   r   rA  r2  r   rp  r  s           rb   test_truncparetozTestFit.test_truncparetox  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  rm   r  r5  r  )r   r   r   rf  r   r    r   r   rA  r2  r   rp  r  s           rb   test_truncweibull_minzTestFit.test_truncweibull_min  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   rt  rn   ro   r9  r      r  )gY.?r   )r   r   r   rf  r   r   r   r   r   rA  r   r   rp  	bernoulli)
r?  rr  r   r   r9  r:  rt  r   rS  rw  s
             rb   test_missing_shape_boundsz!TestFit.test_missing_shape_bounds  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   r5  rt  r  )r   r   )ru  rn   ro   )r;  r5  ru  r  r   rt  ru  rn   ro   r  )r   r   r   rf  r   normr   r   rA  r   r   rp  )r?  rr  r   r   rt  ru  r   
loc_boundsrT  rw  scale_boundss              rb   test_fit_only_loc_scalezTestFit.test_fit_only_loc_scale  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  r7  r  r  r  )r   r  )r  r  r8  r  )r   r   r   rf  r   r  r   r   r   r   rp  r   rA  )r?  rr  r   r   rt  ru  r   rw  rT  r9  r:  rS  s               rb   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   )r5  r   rm   r   )r      r7  )r   r   z3Optimization converged to parameter values that areF)r   r   r   rf  r   r   r   minr   r   
startswithsuccess)	r?  rr  r   r   r!  r   rT  rw  r   s	            rb   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   ^s )r        r   ))rj      )ffffff?F   )g333333?x   rQ  rm   r  )r(  ra  )r   r   r   r   r   r   r   rA  allcloser   rp  r   )r?  rr  r   r   r   rT  r   rw  s           rb   
test_guesszTestFit.test_guess  s     ii##L1;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 )Nrj   rY  )r   r   :0yE>r   r  rd  rT  rd   rI  r   r   re  gRQ@)r   r   r   r   r   ru  )r?  r   r   rT  res_mleres_mses         rb   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   rI     rm   rQ  r  r  re  r  r   r^  r   -C6?rq   )
r   r   r   r   r   r   r   r   r   r   )r?  r   r   r9  r   rT  rw  r   r  r  r   s              rb   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)r   )0__name__
__module____qualname__r   r   r   rf  r   r   r   r   r   r   rD  rZ  r   rq   rp  rA  rF  rO  rU  r[  ry  r   r  parametrizer  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   rb   r4  r4  r  s   ;;DD
))


%C;;??1c#?>Dv&N"0NDD$'D >:
G1:f-N^ 7D [[[*<*>?5 @5 [[[*<*>?5 @5 [[M M [[X~67 77 [[A AOA [[M MO [[O O;*?:>2$  [[9 9"	@4r   r4  )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)NrH  z.`dist` must be a \(non-frozen\) instance of...r   z2`data` must be a one-dimensional array of numbers.z`statistic` must be one of...mm)	statisticz"`n_mc_samples` must be an integer.g     D@)n_mc_samplesz$SeedSequence expects int or sequenceherringr<  )r   r  r   r   	TypeErrorr   rC  )r?  r   r   r   s       rb   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	: 9]]9G4 	4D!3	4 	4!	- 	-	/ 	/	5 	5	: 	:	4 	4s;   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rd   {Gzt?r   r  )r   r   r   
examgradesr   stdr   r   r  kstestcdfr   r  pvaluer?  r   r   r   rw  r   s         rb   test_against_ksz!TestGoodnessOfFit.test_against_ksE  s    ii##$78!wwqzBFF114EFejj!,(,#7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  ro   r   r  r  r  r  g5;Nѡ?r  r   r  )r   r   r   r  r   r   r  r   r  r  r  r   r  r  r?  r   r   rw  r   r   s         rb   test_against_lillieforsz)TestGoodnessOfFit.test_against_lillieforsO  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  )r   r   r   r  r   r  r   r   r  cramervonmisesr  r   r  r  r	  s         rb   test_against_cvmz"TestGoodnessOfFit.test_against_cvmY  s    ii##$78!wwqzBFF114EFejj!,(-38""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-@ry   r  r   
r   r   r   aranger   r   r  r   r  r  r?  r   r   r   rw  s        rb   test_against_anderson_case_0z.TestGoodnessOfFit.test_against_anderson_case_0c  sh    ii##$78IIa02>ejj!,(,#7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  ru  g{U=@r  r  guV?r  r  r   r  r  s        rb   test_against_anderson_case_1z.TestGoodnessOfFit.test_against_anderson_case_1n  si    ii##$78IIa!34ejj!,(,#7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  rt  gfHF@r  r  gZd;@皙?r  r   r  r  s        rb   test_against_anderson_case_2z.TestGoodnessOfFit.test_against_anderson_case_2y  si    ii##$67IIa/0ejj!,(,#7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   rj   r   r  r  r  r   gS?g333333?r  r   )r   r   r   r   r   r   r   r  r   r  r  )r?  r   r   rw  s       rb   test_against_anderson_case_3z.TestGoodnessOfFit.test_against_anderson_case_3  sn    ii##$78NN1q,/  1ejj!tE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   rm   r  r  gumbel_r)r   r   r   r  r   )r   r   r   r   r?   r   r   r"  andersonr   r  critical_valuesr  significance_level)r?  r   r   rw  r   s        rb   test_against_anderson_gumbel_rz0TestGoodnessOfFit.test_against_anderson_gumbel_r  s    ii##$451s#&((+C(H 	
enna4"%'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      rz   r5  r   r   r   r  fillibenr  gG=D;?r  r   r   ?gF8y?gh㈵>r  gffffff?Mb`?)	r   r   r   r   r   r  r   r  r  )r?  r   yr   rw  s        rb   test_against_filliben_normz,TestGoodnessOfFit.test_against_filliben_norm  s    ii##$78# 1-##EJJ.8cC
 	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   )rt  ru  rn   r*  r  r   r   r  r  gV瞯<r  )	r   r   r   normalr   r   r  r   r  r  s         rb   test_filliben_propertyz(TestGoodnessOfFit.test_filliben_property  s    ii##$78JJ2SsJ3##EJJ.8cC 1-##EJJ.8cCs}}5Ar   case   )gV-?gCl?ffffff?g-?gx?2   )g㥛 ?gzG?gv?$C?g1Zd?_   )r6  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  ry   r  r   r,  r   )
r   r   r   r   r   r  r   scoreatpercentilenull_distributionr   )	r?  r2  r   r9  r   r   r   rw  percentiless	            rb    test_against_filliben_norm_tablez2TestGoodnessOfFit.test_against_filliben_norm_table  s    
 ii##$673JJqM 1-##EJJ.8cChh>?%%c&;&;[_MSt,r   ))r5  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_ )rn   r*  r  r  r  gQ?r   )
r   r   r   r0  r   r   rayleighr   r  r  )r?  r2  r9  ref_statistic
ref_pvaluer   r   rw  s           rb   test_against_ppccz#TestGoodnessOfFit.test_against_ppcc  sr     (,$=*ii##$78JJAJ##ENNA(+-}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   rj   r5  r  r  g*@ru  g(\u+@rt  g33333+)r  guessed_params
fit_paramsr   r   r  r  )r  ru  )r   r   r   r   r   r   r   r   r  
fit_resultr   r  r   ru  rt  r:  )	r?  r   r   rD  rE  r   r   r   res3s	            rb   test_params_effectsz%TestGoodnessOfFit.test_params_effects  s    ii##$78NN1q,/  1
 tu%
vii##$78u00!!.<*4,8cC ;;t5577>>>T__++1159T__++//8 qii##$78u00!!.<*4,8cC ;;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,8cC 	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 )Nrv   r   r   )rw   prependappendrj   )r   r   r  r   r   )r   r   rw   r   r-  r   s         rb   	greenwoodz:TestGoodnessOfFit.test_custom_statistic.<locals>.greenwood  sH    4(AAa:A66!q&t,,r   rC  r5  rm   r   r   r  r  )r;  ry   r  g?r   g?r   g333333?r  g?r+  r4  rt   )g҈?gxܙ	?g&)?gW>?gR?gEկt><?gw-?gL1=B?gi?g1cg?gV(?g?Qٰ?ghsۄ?r  r   )
r   r   r   r   r   r   r   quantiler:  r   )r?  rM  r   r   resultr:  exact_quantilessimulated_quantiless           rb   test_custom_statisticz'TestGoodnessOfFit.test_custom_statistic  s    	- ii##$78{{AC8 d67!.D+4#? EB !kk&*B*BAF+_5Ir   N)r  r  r  r  r
  r  r  r  r  r  r   r   r  r  r&  r.  r1  r  r<  rA  rH  rR  r  r   rb   r  r  +  s    40;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                 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   rm   c                  "    t        | i |diS r>  r   )r@  kwargsr   s     rb   ra  z-TestFitResult.test_plot_iv.<locals>.optimizer5  s    )4C6CsCCr   r  r7  r  z!`plot_type` must be one of \{'...r   llama)	plot_typez2matplotlib must be installed to use method `plot`.)r   r   r   r   r  r   r   
matplotlibr   r   rC  plotModuleNotFoundErrorImportError)r?  r   ra  rT  rw  rZ  r   r   s          @rb   test_plot_ivzTestFitResult.test_plot_iv1  s    ii##$78zz~~a3~?	D 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  r^  r  r   rb   rT  rT  0  s    ,r   rT  r^   )gHz>r   r   )7r}   numpyr   numpy.testingr+  rm  r   r   r   scipyr   scipy.optimizer   test_continuous_basicr	   !scipy.stats._distn_infrastructurer
   scipy.stats._distr_paramsr   scipy.statsr   r   r   r   mle_failing_fitsmle_Xslow_fitsr   mm_failing_fitsmm_XXslow_fitsmm_Xslow_fitsr   r   r   r_   rc   r  r  r  r   r   r   r   r   r  r   r   r  r  r"  r)  r2  r4  r  r  rT  r  r   rb   <module>rl     s   	   7   1 + 6 2 '  	
 *#
(= %6?OP!.9
'   )<)>?E4=1HL 2 @ HLVGC/  ::z2 ;;5788 +\<~ +-@-BC' D' MN(.Gk4 k4^.
CJ CJJ, ,r   