
    e!h                        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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   nctr   r2   r4   	powernormr)   
skewcauchytr   triangtruncparetor    r   r!   )argusexponpowr$   r   r   r0   halfgennormgompertz	johnsonsbr   	kstwobignr(   r   r   r*   r5   )MMMLErR   )erlangr?   norminvgaussc               #   F   K   t         D ]  \  } }| t        vs| |f  y wN)r	   skip_fit)distnameargs     b/var/www/html/diagnosisapp-backend/venv/lib/python3.12/site-packages/scipy/stats/tests/test_fit.pycases_test_cont_fitrc   `   s-     
 "  #8#C- s   !	!zdistname,argmethodrZ   rY   c           	      0   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|	i}
|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sizerZ   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seed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_sizer   kwdsestdata1est1nicrv   data2est2difftxts                        rb   test_cont_fitr   j   se    BIImU;<IBIImU;<I<''	 QS:f%%iICUH%FiisCj)*GFF299gn&<&(ggfnnQ.>
&K&M NM  3L
		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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 )Nrx   z poor mle fit of (loc, scale) in )atolrp   )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)rs   {Gz?r   r   Gz?r   r          @uniformrs   rr   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   )rn   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   random_state)r   r   default_rnghasattrlogpdflogpmfr   sumnnlf_penalized_nnlfr   )distparamsrng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   foldnormrL   r   	truncnormr   rR   poisson_binomr    r!   >3   r%   rP   r,   r<   ricer6   binomgammarK   r1   r7   r[   rF   r.   nbinomr2   arcsiner@   lognormrandintr   bradfordr:   rT   r   rV   rC   invgaussr/   r3   skewnormr"   	exponnormrA   r'   rW   rE   rX   rN   r=   r>   rD   rJ   r5   r#   r;   rU   weibull_maxweibull_minr\   r(   >   r   rM   r+   r   r   rQ   skellamzipfianr   r   	betabinomr$   	hypergeomr   
betanbinomr   
loguniform
nhypergeom
reciprocalr&   r   r4   r?   r   r0   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   r1   r   r3   r   r   r   r   r&   r   r   r\   r?   r   r!   >1   rP   r,   r-   r<   waldr6   r   rK   anglitr[   rF   r2   rQ   r   maxwellr   r   r   r:   rT   r   r   rV   loggammar   r   r$   rA   r   rE   rX   rN   r=   r>   rD   rJ   r  r   r5   r#   r;   genlogisticrR   r   r   semicircularr(   r0   laplace_asymmetric>"   r%   r   rM   r   r+   r   r   rS   r7   r9   r   r.   r@   r   r   rC   r   rL   r/   r"   r'   rW   r   r   r   r  rU   r4   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#  T  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dividerx   )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)ro   r   )r   r   testingr   )
r   r   params1params0ro   r   	nlff_namenlffnlff1nlff0s
             rb   assert_nlff_less_or_closer3  h  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   r   r   r   r   r   nprw   {Gz?)r   ro   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   rJ  )123)
r~   r   rD  r   r   r   rE  r   naninfrF  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...r7  r8  r   r   r:  r;  rK  r   z6Each element of a `bounds` sequence must be a tuple...)r   r   rJ  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...)r7  r7  r7  r7  z.There are no values for `p` on the interval...)r   r   r9  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   rD  r   rO  )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      rS  r   )r)  z+Each element of `guess` must be a scalar...hir9  r%   rj   z-A `guess` sequence must contain at least 2...z1A `guess` sequence may not contain more than 3...)r   rj   rJ     zCGuess for parameter `n` rounded.*|Guess for parameter `p` clipped.*g      @g      z$Guess for parameter `loc` rounded...)r6  r   r   z"Guess for parameter `p` clipped...r6  z$Guess for parameter `loc` clipped...)r6  r   r   )
r~   r   r   r   r   r   r   shape_bounds_dr   rD  )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      $@rx   r   r   rR  )gؗҜ<r   pmfFr   r   zoverflow encounteredrd   	optimizerr   _penalized_nlpsfmlemser/  )r  r	   r   r   r   r   r   r   r   r   emptylenfloat64signr   listfloorr   nptsuppress_warningsfilterr   r   rB  r3  r   tols)r@  	dist_namerd   r   N	dist_datar   r"  rU  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 )Nre  r6  r=  ry  r@  rq  s     rb   test_basic_fit_mlezTestFit.test_basic_fit_mle      Iu!4r   c                 ,    | j                  |dd       y )Nrf  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   r   皙?r   rt  ru  rf  ra  r/  rc  )r   r   r   r   r   r   r   r   rB  r3  r   rp  r@  rr  r   r   r"  r   rT  rw  s           rb   test_arcsinezTestFit.test_arcsine  s    
 ii##DII.}}txxac:(9=iidL$((S!$cjj& 	M,>	MBF))	Mr   rd   rd  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         @r   r  )r,   rt  ru  )rb  rd   r   rc  rd  r/  )r   r   r   r   r   rS   r   r   rB  r3  r   rp  )
r@  rd   rr  r   r   r"  r   rT  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   r   r  )abrt  ru  re  ra  r/  r   )r   r   r   r   r   r   r   r   rB  r3  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  r   r  )crt  ru  rb  )r   r   r   r   r   r   r   r   rB  r3  r   rp  r  s           rb   test_foldnormzTestFit.test_foldnormL  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   r   r  )nurt  ru  re  ra  r/  r   )r   r   r   r   r   rL   r   r   rB  r3  r   rp  r  s           rb   test_nakagamizTestFit.test_nakagamiZ  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   r   r  )r  rt  ru  rf  ra  r/  rc  )r   r   r   r   r   r3   r   r   rB  r3  r   rp  r  s           rb   test_powerlawzTestFit.test_powerlawh  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@r   r  rZ  r  )r   r   r   r   r   rR   r   r   rB  r3  r   rp  r  s           rb   test_truncparetozTestFit.test_truncparetow  s     ii##DII.  %txxac:!{1}iidLDHHE!$cjj&NDIINr   c                 <   d}t         j                  j                  | j                        }t        j
                  }d} |j                  |||d}dgdz  }t	        j                  |||| j                        }t        |||j                  |fi | j                   y )Nr   )r   r   g      ?r   r  r   r  r6  r  )r   r   r   r   r   r    r   r   rB  r3  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  rm   r   r:  r      r  )gY.?r   )r   r   r   r   r   r   r   r   r   rB  r   r   rp  	bernoulli)
r@  rr  r   r   r:  r;  rt  r   rT  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   r6  rt  r  )r   r   )ru  rm   r   )r<  r6  ru  r  r   rt  ru  rm   r   r  )r   r   r   r   r   normr   r   rB  r   r   rp  )r@  rr  r   r   rt  ru  r   
loc_boundsrU  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  r8  r  r  r  )r   r  )r  r  r9  r  )r   r   r   r   r   r  r   r   r   r   rp  r   rB  )r@  rr  r   r   rt  ru  r   rw  rU  r:  r;  rT  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   )r6  r   r   r   )r      r8  )r   r   z3Optimization converged to parameter values that areF)r   r   r   r   r   r   r   minr   r   
startswithsuccess)	r@  rr  r   r   r"  r   rU  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   rR  r   r  )r)  rb  )r   r   r   r   r  r   r   rB  allcloser   rp  r   )r@  rr  r   r   r   rU  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   rZ  )r   r   :0yE>r   r  re  rU  rd   rJ  r   r   rf  gRQ@)r   r   r   r   r   ru  )r@  r   r   rU  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   rJ     r   rR  r  r  rf  r  r   r_  r   -C6?ro   )
r   r   r   r   r   r   r   r   r   r   )r@  r   r   r:  r   rU  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   r   r   r   r   r   r   r   rE  r[  r   ro   rp  rB  rG  rP  rV  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   r5  r5  q  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   r5  )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)NrI  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   rD  )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_ksD  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  r   r   r  r  r  r  g5;Nѡ?r  r   r  )r   r   r   r  r   r   r  r   r  r  r  r   r  r  r@  r   r   rw  r   r   s         rb   test_against_lillieforsz)TestGoodnessOfFit.test_against_lillieforsN  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_cvmX  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-@rw   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_0b  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_1m  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_2x  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   r   r  r  gumbel_r)r   r   r   r  r   )r   r   r   r   r>   r   r   r"  andersonr   r  critical_valuesr  significance_level)r@  r   r   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      rx   r6  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  rm   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  rw   r  r   r,  r   )
r   r   r   r   r   r  r   scoreatpercentilenull_distributionr   )	r@  r2  r   r:  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   ))r6  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_ )rm   r*  r  r  r  gQ?r   )
r   r   r   r0  r   r   rayleighr   r  r  )r@  r2  r:  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 )Nrt   r   r   )ru   prependappendrj   )r   r   r  r   r   )r   r   ru   r   r-  r   s         rb   	greenwoodz:TestGoodnessOfFit.test_custom_statistic.<locals>.greenwood  sH    4(AAa:A66!q&t,,r   rC  r6  r   r   r   r  r  )r<  rw   r  g?r   g?r   g333333?r  g?r+  r4  rr   )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   r   c                  "    t        | i |diS r?  r   )rA  kwargsr   s     rb   rb  z-TestFitResult.test_plot_iv.<locals>.optimizer4  s    )4C6CsCCr   r  r8  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   rD  plotModuleNotFoundErrorImportError)r@  r   rb  rU  rw  rZ  r   r   s          @rb   test_plot_ivzTestFitResult.test_plot_iv0  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  /  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*  r3  r5  r  r  rT  r  r   rb   <module>rl     s   	   7   1 + 6 2 '  	
 *T

(= %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   