o
    gp                     @   s  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ee edZddgZdd Zejjej de ej dddgdd Z!d<ddZ"dd Z#dd  Z$d!d" Z%ej d#e
j&d$fe
j'd%fgd&d' Z(d(d) Z)d*d+ Z*d,d- Z+ej d.e+ d/d0 Z,	 	2d=d3d4Z-G d5d6 d6Z.g d7Z/G d8d9 d9Z0G d:d; d;Z1dS )>    N)assert_allcloseassert_equal)statsdifferential_evolution   )distcont)FitError)distdiscrete)goodness_of_fit)    i'        ?g      ?)burrchi2
gausshypergenexpongengammakappa4ksonekstwomielkencfncx2pearson3powerlognorm
truncexpontruncparetotukeylambdavonmiseslevy_stable	trapezoidtruncweibull_minstudentized_range)/alpha	betaprimer   burr12cauchychir   crystalballdgammadweibullffatiguelifefisk
foldcauchy
genextremer   genhyperbolicgennorm	genpareto
halfcauchyinvgamma
invweibull	johnsonsukappa3r   r   levylevy_lr    
loglaplacelomaxr   nakagamir   nctr   paretor   	powernorm
skewcauchytr!   triangr   r"   r   r#   )argusexponpow	exponweibr   r   genhalflogistichalfgennormgompertz	johnsonsbr   	kstwobignrecipinvgaussr   r   vonmises_line)MMMLEerlangr1   c                  c   s&    t D ]\} }| tvr| |fV  qd S N)r   skip_fit)distnamearg rU   X/home/ubuntu/cloudmapper/venv/lib/python3.10/site-packages/scipy/stats/tests/test_fit.pycases_test_cont_fitI   s   
rW   zdistname,argmethodrO   rN   c              	   C   s  | t | v r+z
ttjd  }W n ty   d}Y nw |r+d|  }|d7 }t| tt| }t	
|ddgg}t	t	|t t	|jd tgd}tD ]Z}t	jd	 t	jd
d |j|d|i}	|j|	|d}
W d    n1 sww   Y  |
| }t	t	|	 t tg|d< t	t	|
rtdt	t	||kr d S qOdt| }|dt|
 7 }|dt| 7 }td|j | )NSCIPY_XFAILTz$Fitting %s doesn't work reliably yetzH [Set environment variable SCIPY_XFAIL=1 to run this test nevertheless.]g              ?   r   i  ignore)allsizerX   znan returned in fitzparameter: %s
zestimated: %s
zdiff     : %s
zfit not very good in %s
)failing_fitsintosenviron	Exceptionpytestxfailgetattrr   nphstackmaxvstackthresh_percentfullnumargs
thresh_min	fit_sizesrandomseederrstatervsfitabsmeananyisnanAssertionErrorr]   strname)rS   rT   rX   rg   msgdistfntrueargdiffthresholdfit_sizeru   estdifftxtrU   rU   rV   test_cont_fitS   sH   


r   c                 C   s4   t t| }||dd  }t|||d|  d d S )Nr`   z"poor mle fit of (loc, scale) in %s)atolerr_msg)rh   r   rv   r   )r}   datadesiredr   dactualrU   rU   rV   _check_loc_scale_mle_fit   s
   

r   c                  C   s6   t g d} td| ddgd td| ddgd d S )N))\(?{Gz?r   r   Gz?r   r          @uniformr   gGz?MbP?expongp=
ף?)ri   arrayr   )r   rU   rU   rV   "test_non_default_loc_scale_mle_fit   s   r   c                  C   s.   g d} t jj| dd}t|ddgdd dS )zgh-6167)r   r   r   r   r[   r[   r[   r[   r   )flocrZ   r   r   N)r   r   rv   r   )r   phatrU   rU   rV   test_expon_fit   s   r   c               	   C   s   t t dt dg} d}tjt|d, tt t	j
|  W d    n1 s-w   Y  W d    d S W d    d S 1 sEw   Y  d S )N      z0Optimization converged to parameters that are...match)ri   concatenatezerosonesrf   raisesr	   warnsRuntimeWarningr   betarv   )r   messagerU   rU   rV   test_fit_error   s   Pr   zdist, params)      ?      @)
   g333333?r[   c                 C   s|   t jd}t| dr| j}n| j}| j|d|d}||g|R    }| ||}| 	||}t
|| t
|| d S )Nig:pdfd   r^   random_state)ri   rr   default_rnghasattrlogpdflogpmfru   sumnnlf_penalized_nnlfr   )distparamsrnglogpxfxrefres1res2rU   rU   rV   test_nnlf_and_related_methods   s   

r   c                  c   s    h d} h d}h d}t tt D ]F}|| v st|ts.d}tj|tjj|ddV  q||v rBd}tj|tjj	|ddV  q||v rVd}tj|tjj
|ddV  q|V  qd S )	N>   rD   r   r   foldnormr    r   r"   r#   >,   r,   rB   r(   r.   ricer$   binomr<   rdistr&   r8   r   nbinomr?   arcsiner2   lognormrandintr   bradfordr+   rE   rI   invgaussr=   r   powerlawr%   r3   rJ   r7   rK   r@   r/   r0   r6   r;   
wrapcauchyr)   r-   rH   weibull_maxnorminvgaussrL   >   r   r>   r   r   r   r   rC   skellamzipfianr   r   	betabinomrF   	hypergeomr!   	truncnormr   
loguniform
nhypergeom
reciprocalgeninvgaussr   r   r1   rG   nchypergeom_fishernchypergeom_walleniusztested separatelyreasonmarkstoo slow (>= 0.25s)too slow (>= 1.0s))dictr
   r   
isinstancer|   rf   parammarkskipslowxslow)skip_basic_fitslow_basic_fitxslow_basic_fitr   r   rU   rU   rV   cases_test_fit_mle   s    
	r   c                  c   s    h d} h d}h d}dh}t tt D ]Y}|| v s!t|ts1d}tj|tjj|ddV  q||v rEd}tj|tjj	|ddV  q||v rYd	}tj|tjj
|ddV  q||v rltjd
}tj||dV  q|V  qd S )N>   rD   r   r   skewnormr   r   r   r    r   r1   r#   >7   rB   r(   r   r.   waldr$   gammar<   anglitr*   rP   r8   r   r?   rC   r   r   maxwellr   r   r   r+   rE   r   rI   loggammar=   r   	exponnormrF   r3   r   rJ   r7   rK   r@   r/   r0   r6   r;   r   r   r   r)   r-   genlogisticr   r   weibull_minsemicircularrL   rM   rG   r"   laplace_asymmetric>   r,   r   r>   r   r   r   r   r   r&   r   r2   r   r   r   r5   r   r   r   r%   r!   r   r   r   rH   r   r   r   r   r   zFails. Oh well.r   r   r   r   zignore::RuntimeWarning)r   r
   r   r   r|   rf   r   r   r   r   r   filterwarnings)r   r   r   warns_basic_fitr   r   r   rU   rU   rV   cases_test_fit_mse   s(   r   c                  c   s:    t t D ]\} }t| tr| dv rq| |fV  qd S )N>   rL   r#   )r   r   itemsr   r|   )rS   shapesrU   rU   rV   cases_test_fitstart	  s   
r   zdistname, shapesc                 C   sr   t t| }tjd}|d}tjddd ||}W d    n1 s'w   Y  |j|d d  s7J d S )NiV r   r\   )invaliddivider`   )rh   r   ri   rr   r   rt   	_fitstart	_argcheck)rS   r   r   r   r   guessrU   rU   rV   test_fitstart  s   

r   Hz>r   c           
      C   sB   t | |}|||}|||}	||	k stjj||	||d d S d S )N)rtolr   )rh   ri   testingr   )
r   r   params1params0r  r   	nlff_namenlffnlff1nlff0rU   rU   rV   assert_nlff_less_or_close  s   


r	  c                   @   s  e Zd ZejZdZej	eZ
ejjddde
dZddgZdddZd	Zd
ZeedZdd Zdd Zdd Zdd Zdd Zdd Zejde dd Zejde dd Zdd Zdd  Z d!d" Z!d#d$ Z"d%d& Z#d'd( Z$d)d* Z%d+d, Z&ejj'd-d. Z(d/d0 Z)d1d2 Z*d3S )4TestFitl   Va   r   r   r   r   r   r   r   np皙?g{Gz?)r   r  c                 O   s   t |ddi|S )Nrs   r   r   )selfargskwdsrU   rU   rV   opt1  s   zTestFit.optc                 C   sJ   d}t jt|d td| j| j W d    d S 1 sw   Y  d S )Nz `dist` must be an instance of...r   r   )rf   r   
ValueErrorr   rv   r   shape_bounds_ar  r   rU   rU   rV   test_dist_iv4  s   "zTestFit.test_dist_ivc                 C   s,  d}t jt|d t| jg dg| j W d    n1 s w   Y  d}t jt|d t| jdddtjg| j W d    n1 sGw   Y  t jt|d t| jdddtj	g| j W d    n1 slw   Y  t jt|d t| jg d| j W d    d S 1 sw   Y  d S )	Nz'`data` must be exactly one-dimensional.r   r   r[      z.All elements of `data` must be finite numbers.r   r[   r  )123)
rf   r   r  r   rv   r   r  ri   naninfr  rU   rU   rV   test_data_iv9  s   "zTestFit.test_data_ivc                 C   sP  d}dddd}t jt|d t| j| j| W d    n1 s#w   Y  d}ddg}t jt|d t| j| j| W d    n1 sIw   Y  d	}dd
g}t jt|d t| j| j| W d    n1 sow   Y  ddg}t jt|d t| j| j| W d    n1 sw   Y  d}dg}t jt|d t| j| j| W d    n1 sw   Y  d}g d}t jt|d t| j| j| W d    n1 sw   Y  d}ddd}t jt|d t| j| j| W d    n	1 sw   Y  d}ddg}t jt|d t| j| j| W d    n	1 s-w   Y  d}ddg}t jt|d t| j| j| W d    n	1 sTw   Y  d}t jt|d t| j| j W d    n	1 svw   Y  t	j
 t	j
fdg}t jt|d t| j| j| W d    d S 1 sw   Y  d S )Nz1Bounds provided for the following unrecognized...r  r  r   r   r  r  r  r   z6Each element of a `bounds` sequence must be a tuple...)r   r   r  z6Each element of `bounds` must be a tuple specifying...)r   r   r   r   r   z7A `bounds` sequence must contain at least 2 elements...z;A `bounds` sequence may not contain more than 3 elements...)r  r  r  r  z.There are no values for `p` on the interval...)r   r   r  z.There are no values for `n` on the interval...)r   r   z6There are no integer values for `n` on the interval...)gffffff?g?z0The intersection of user-provided bounds for `n`)rf   r   r   r   rv   r   r   r   r  ri   r   )r  r   shape_boundsboundsrU   rU   rV   test_bounds_ivF  sh   
$zTestFit.test_bounds_ivc                 C   sD  d}dddd}t jt|d tj| j| j| j|d W d    n1 s&w   Y  d}dd	d
}t jt	|d tj| j| j| j|d W d    n1 sPw   Y  ddg}t jt	|d tj| j| j| j|d W d    n1 sww   Y  ddgg}t jt	|d tj| j| j| j|d W d    n1 sw   Y  d}dg}t jt	|d tj| j| j| j|d W d    n1 sw   Y  d}g d}t jt	|d tj| j| j| j|d W d    n1 sw   Y  d}ddd
}t jt|d tj| j| j| j|d W d    n	1 sw   Y  d}g d}t jt|d tj| j| j| j|d W d    n	1 sEw   Y  d}ddd
}t jt|d tj| j| j| j|d W d    n	1 spw   Y  d}g d}t jt|d tj| j| j| j|d W d    d S 1 sw   Y  d S )Nz2Guesses provided for the following unrecognized...r   r      r#  r   )r   z+Each element of `guess` must be a scalar...hir  r,   r[   z-A `guess` sequence must contain at least 2...z1A `guess` sequence may not contain more than 3...)r   r[   r     z"Guess for parameter `n` rounded...g      @g      z$Guess for parameter `loc` rounded...)r  r   r   z"Guess for parameter `p` clipped...r  z$Guess for parameter `loc` clipped...)r  r   r   )
rf   r   r   r   rv   r   r   shape_bounds_dr   r  )r  r   r   rU   rU   rV   test_guess_ivy  s`   



$zTestFit.test_guess_ivc                 C   s  d}t tt }tj| j}tt|}t	|| }tj
t|d dftjd}|dt|  |d ddf< |dt|  |d ddf< d|d< d	|d
< |j|d  }	|j|d
  }
t|| |	|
g }t|ddr|d d
 }t|	|d
< |j|||d}|d d
 }t|ddr|j|||d}t }|td tj||||| jd}W d    n1 sw   Y  ddd}|| }t|||j|fi | jd|i d S )Nr   r[   )dtypeg      $@r`   r   r   r"  )gؗҜ<r   pmfFr   r   zoverflow encountered)rX   	optimizerr   _penalized_nlpsf)mlemser  )r   r   r
   ri   rr   r   rs   rh   r   r   emptylenfloat64signr   listfloorru   nptsuppress_warningsfilterr   rv   r  r	  r   tols)r  	dist_namerX   N	dist_datar   r   r   r%  locscaler   r   supres
nlff_namesr  rU   rU   rV   basic_fit_test  s>   


zTestFit.basic_fit_testr=  c                 C      |  |d d S )Nr1  rE  r  r=  rU   rU   rV   test_basic_fit_mle     zTestFit.test_basic_fit_mlec                 C   rF  )Nr2  rG  rH  rU   rU   rV   test_basic_fit_mse  rJ  zTestFit.test_basic_fit_msec                 C   l   d}t j| j}tj}d}|j|||d}dddd}tj|||| jd}t	|||j
|fi | j d S )Nr   )rZ   r         @r   皙?r   )r(   r@  rA  r/  )ri   rr   r   rs   r   rD   ru   rv   r  r	  r   r<  r  r>  r   r   r   r   r$  rC  rU   rU   rV   
test_argus     zTestFit.test_argusc                 C   rL  )Nr   )g);?r   rM  r   rN  )cr@  rA  rP  )ri   rr   r   rs   r   r   ru   rv   r  r	  r   r<  rQ  rU   rU   rV   test_foldnorm  rS  zTestFit.test_foldnormc                 C   j   d}t j| j}tj}d}|j|||d}dgd }tj|||| jd}t	|||j
|fi | j d S )Nr   )g?g333333@gffffff@gffffff@r   rN  r)  rP  )ri   rr   r   rs   r   r   ru   rv   r  r	  r   r<  rQ  rU   rU   rV   test_truncpareto     
zTestFit.test_truncparetoc                 C   rV  )Nr   )r   r   g      ?r   rM  r   rN  r  rP  )ri   rr   r   rs   r   r"   ru   rv   r  r	  r   r<  rQ  rU   rU   rV   test_truncweibull_min  rX  zTestFit.test_truncweibull_minc           
      C   s   d}t j| j}tj}d\}}}|j|||||d}dt ddgi}tj|||| j	d}	t
|	j|||ffi | j tj}d\}}|j||||d}tj||| j	d}	t
|	j||ffi | j d S )	Nr   r   ?r   r@  r^   r   r  r      rP  )gY.?r   )ri   rr   r   rs   r   r   ru   r   rv   r  r   r   r<  	bernoulli)
r  r>  r   r   r  r  r@  r   r$  rC  rU   rU   rV   test_missing_shape_bounds
  s   
z!TestFit.test_missing_shape_boundsc                 C   s  d}t j| j}tj}d\}}|j|||d}d}d|i}tj|||| jd}	t	|	j
||ffi | j d\}}|j|||d}d}
d	|
i}tj|||| jd}	t	|	j
||ffi | j tj}d
\}}|j||||d}||
d}tj|||| jd}	t	|	j
||ffi | j d S )Nr   )      ?r   r\  )r   r  r@  rP  )r   r   )rA  r^   r   rA  r`  r   r@  rA  r^   r   r@  rA  )ri   rr   r   rs   r   normru   rv   r  r   r   r<  )r  r>  r   r   r@  rA  r   
loc_boundsr%  rC  scale_boundsrU   rU   rV   test_fit_only_loc_scale  s*   
zTestFit.test_fit_only_loc_scalec                 C   s   d}t j| j}tj}d\}}|j||||d}t||}t|j	dfi | j
 ||f||fd}t|||}t|j	||ffi | j
 tj}d\}	}
}|j|	|
|||d}dd	d
}tj|||| jd}t|j	|	|
|ffi | j
 d S )Nr   ra  rb  r  rc  rZ  r\  )r   r]  )r[  r[  r  rP  )ri   rr   r   rs   r   rd  ru   rv   r   r   r<  r   r  )r  r>  r   r   r@  rA  r   rC  r%  r  r  r$  rU   rU   rV   test_everything_fixed<  s    

 zTestFit.test_everything_fixedc           	      C   sz   d}t j| j}tj}d}|j|||d}| dksJ g d}t|||}d}|j	
|s4J |jdu s;J d S )Nr   )r  r   r   r   )r      r  )r   r   z3Optimization converged to parameter values that areF)ri   rr   r   rs   r   r   ru   minrv   r   
startswithsuccess)	r  r>  r   r   r   r   r%  rC  r   rU   rU   rV   test_failureU  s   zTestFit.test_failurec                 C   s   d}t j| j}tj}d}g d}|j|||d}tj|||| jd}t j	|j
|fi | jr3J tj||||| jd}t|j
|fi | j d S )Ni  )r]        r   ))r[      )gffffff?F   )g333333?x   r"  r   rP  )r   r/  )ri   rr   r   rs   r   r   ru   rv   r  allcloser   r<  r   )r  r>  r   r   r   r%  r   rC  rU   rU   rV   
test_guesse  s   zTestFit.test_guessc                 C   sd   ddg}t j}ddd}t j|||dd}t|jjdd	d
 t j|||dd}t|jjdd	d
 d S )Nr[   r)  )r   r   :0yE>r   rc  r1  r%  rX   r  r   r   r2  gRQ@)r   r   rv   r   r   rA  )r  r   r   r%  res_mleres_mserU   rU   rV   test_mse_accuracy_1v  s   
zTestFit.test_mse_accuracy_1c                 C   s   t jd}tj}d}|ddj||d}ddd}tj|||d	d
}t |}||d  |d  |d  }||d  |d  |d  }	||	| f}
t|j	|
dd d S )Nl   4gcvD r   r     r   r"  rv  rc  r2  rx  r   r-  r   g-C6?r  )
ri   rr   r   r   r   ru   rv   sortr   r   )r  r   r   r  r   r%  rC  r   abr   rU   rU   rV   test_mse_accuracy_2  s   

zTestFit.test_mse_accuracy_2N)+__name__
__module____qualname__r   r   r   rs   ri   rr   r   r   ru   r   r  r*  r   r  r<  r  r  r!  r&  r+  rE  rf   r   parametrizer   rI  r   rK  rR  rU  rW  rY  r_  rg  rh  rn  r   ru  r{  r  rU   rU   rU   rV   r
  &  s@    

3/"


r
  )xA   =   Q   X   E   Y   7   T   V   r  G   r  r  r  N   C   `   B   I   K   ;   r  r  ?   O   L   r  U   W   r  P   r  r  r  r  r  r  r  @   r  r  M   rr  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  ]   rr  r  r  r  r  r  <   r  r  r  r  r  r  r  r  r  r  r  r  r  H   c                   @   sd   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
ejjdd Zdd ZdS )TestGoodnessOfFitc                 C   sV  t j}g d}d}tjt|d tt  | W d    n1 s"w   Y  d}tjt|d t|g dg W d    n1 sCw   Y  d}tjt|d t||dd W d    n1 scw   Y  d}tjt|d t||d	d
 W d    n1 sw   Y  d}tjt|d t||dd W d    d S 1 sw   Y  d S )Nr  z.`dist` must be a \(non-frozen\) instance of...r   z2`data` must be a one-dimensional array of numbers.z`statistic` must be one of...mm)	statisticz"`n_mc_samples` must be an integer.g     D@)n_mc_samplesz"'herring' cannot be used to seed aherring)r   )r   rd  rf   r   	TypeErrorr   r  )r  r   r   r   rU   rU   rV   test_gof_iv  s,   "zTestGoodnessOfFit.test_gof_ivc                 C   s   t jd}t}t |t j|ddd}ttj||d|d}tj	|tjdi |j
dd}t|j|j t|j|jd	d
 d S )Nl   H]Vh1 r   ddofrc  ksknown_paramsr  r   exactr_   {Gzt?r   rU   )ri   rr   r   
examgradesrx   stdr   r   rd  kstestcdfr   r  pvaluer  r   r   r  rC  r   rU   rU   rV   test_against_ks  s   
z!TestGoodnessOfFit.test_against_ksc                 C   s|   t jd}t}ttj|d|d}t |t j|ddd}tj	|tjdi |j
dd}t|j|j t|jd	d
d d S )Nl   8<*}p~ r  r  r   r   r  rc  r  r_   g5;Nѡ?r  r   rU   )ri   rr   r   r  r   r   rd  rx   r  r  r  r   r  r  )r  r   r   rC  r  r   rU   rU   rV   test_against_lilliefors  s   z)TestGoodnessOfFit.test_against_lillieforsc                 C   s|   t jd}t}t |t j|ddd}ttj||d|d}t	|tjd	i |j
}t|j|j t|j|jdd d S )
Nl   vj!$'C r   r  rc  cvmr  r  r   rU   )ri   rr   r   r  rx   r  r   r   rd  cramervonmisesr  r   r  r  r  rU   rU   rV   test_against_cvm  s   
z"TestGoodnessOfFit.test_against_cvmc                 C   sV   t jd}t dd}ddd}ttj||d|d}t|jd	 t|j	d
dd d S )Nl   jHJE3 r   e   gF6F@rj  rc  adr  gV-@r  r  r   
ri   rr   r   aranger   r   rd  r   r  r  r  r   r   r  rC  rU   rU   rV   test_against_anderson_case_0  s   

z.TestGoodnessOfFit.test_against_anderson_case_0c                 C   T   t jd}t dd}ddi}ttj||d|d}t|jd t|j	d	d
d d S )Nl   H'b4:/ r   r  rA  g{U=@r  r  guV?rO  r  r   r  r  rU   rU   rV   test_against_anderson_case_1     
z.TestGoodnessOfFit.test_against_anderson_case_1c                 C   r  )Nl   P^QqPr   r  r@  gfHF@r  r  gZd;@g?r  r   r  r  rU   rU   rV   test_against_anderson_case_2  r  z.TestGoodnessOfFit.test_against_anderson_case_2c                 C   sT   t jd}tjjdddd|d}ttj|d|d}t|j	d	 t|j
d
dd d S )Nl   iUn gBQ_ *?r   r[   r   rb  r  r  gS?g333333?r  r   )ri   rr   r   r   r   ru   r   rd  r   r  r  )r  r   r   rC  rU   rU   rV   test_against_anderson_case_3  s   z.TestGoodnessOfFit.test_against_anderson_case_3c                 C   sv   t jd}tjddddjd|d}ttj|d|d	}tj|d
d}t	|j
|jd  t	|j|jd d dd d S )Nl   /JG gQ8?r   r`  rc  r   r   r  r  gumbel_r)r   r   r   r  r   )ri   rr   r   r   r0   ru   r   r  andersonr   r  critical_valuesr  significance_level)r  r   r   rC  r   rU   rU   rV   test_against_anderson_gumbel_r  s   
z0TestGoodnessOfFit.test_against_anderson_gumbel_rc           	   	   C   s  t jd}tjjdddd|d}ddi}d	d
i}ddi}t jd}ttj|d||||d}t |j	j
jdr:J t|j	j
jd
 t|j	j
jd ddi}t jd}ttj|d||||d}t j|j	j
j|j	j
jddrpJ t j|j|jddr|J t|j	j
jd
 t|j	j
jd dd
d}t jd}ttj|d||||d}t|j	j
jd t|j	j
jd
 t|j	j
jd t |j|jrJ d S )Nl   zV8t g}-r   r[   2   rb  rT  g*@rA  g(\u+@r@  g33333+)r  guessed_params
fit_paramsr  r   rw  r}  )rT  rA  )ri   rr   r   r   r   ru   r   r   rt  
fit_resultr   rT  r   rA  r@  null_distribution)	r  r   r   r  r  r  r   r   res3rU   rU   rV   test_params_effects  sT   






z%TestGoodnessOfFit.test_params_effectsN)r  r  r  r  r  r  r  r  r  r  r  rf   r   r   r  r  rU   rU   rU   rV   r    s    
	


r  c                   @   s   e Zd Zdd ZdS )TestFitResultc                    s   t jd tjjddd d} fdd}dd	g}tjtj|||d
}z(dd l}d}tj	t
|d |jdd W d    W d S 1 sEw   Y  W d S  ttfyy   d}tj	t|d |jdd W d    Y d S 1 sqw   Y  Y d S w )Nl   u!u\xD r   r   r   r   c                     s   t | i |d iS )Nrs   r   )r  kwargsr   rU   rV   r/  E  s   z-TestFitResult.test_plot_iv.<locals>.optimizerri  r  rP  z!`plot_type` must be one of \{'...r   llama)	plot_typez2matplotlib must be installed to use method `plot`.)ri   rr   r   r   rd  ru   rv   
matplotlibrf   r   r  plotModuleNotFoundErrorImportError)r  r   r/  r%  rC  r  r   rU   r  rV   test_plot_ivA  s"   &&zTestFitResult.test_plot_ivN)r  r  r  r  rU   rU   rU   rV   r  @  s    r  rQ   )r   r   r   )2rc   numpyri   numpy.testingr  r9  r   r   rf   scipyr   scipy.optimizer   test_continuous_basicr   !scipy.stats._distn_infrastructurer	   scipy.stats._distr_paramsr
   scipy.statsr   rq   rm   rp   mle_failing_fitsmm_failing_fitsmm_slow_fitsra   rR   rW   r   r   r  r   r   r   r   r   rd  r   r   r   r   r   r   r	  r
  r  r  r  rU   rU   rU   rV   <module>   sf    

.
%1

	  q
 "