
    !g                         d Z ddlZddlmZ ddlmZ ddlmZm	Z	m
Z
  G d de      Z G d d	      Z G d
 de      Z G d de      Z G d de      Z G d d      Zy)z>

Created on Fri Jun 28 14:19:26 2013

Author: Josef Perktold
    N)stats)GenericLikelihoodModel)assert_array_lessassert_almost_equalassert_allclosec                   4     e Zd ZdZ fdZd Zd Zd Z xZS )MyParetozmMaximum Likelihood Estimation pareto distribution

    first version: iid case, with constant parameters
    c                     t         |           g d}| j                  |       t        j                  d| j
                  j                         dz
  dg      | _        y )Nshapelocscale      ?      ?)super
initialize_set_extra_params_namesnparrayendogminstart_params)selfextra_params_names	__class__s     j/var/www/dash_apps/app1/venv/lib/python3.12/site-packages/statsmodels/miscmodels/tests/test_generic_mle.pyr   zMyPareto.initialize   sM    6$$%78 HHc4::>>+;c+A2%FG    c                     ||| dz
  z  z  S )N    )r   xbs      r   pdfzMyPareto.pdf    s    1r!t9}r   c                 D    | j                  |      j                  d       S )Nr   )nloglikeobssumr   paramss     r   loglikezMyPareto.loglike#   s!      (,,Q///r   c                 *   | j                   | j                  |      }|d   }|d   }|d   }| j                  }||z
  |z  }t        j                  |      |dz   t        j                  |      z  z
  }|t        j                  |      z  }d||dk  <   | S )Nr   r      r   i)fixed_paramsexpandparamsr   r   log)r   r(   r"   r   r   r   r!   logpdfs           r   r%   zMyPareto.nloglikeobs,   s    (&&v.F1IQiq	

S[%adBFF1I--"&&- qswr   )	__name__
__module____qualname____doc__r   r#   r)   r%   __classcell__r   s   @r   r	   r	      s    
H0r   r	   c                   *    e Zd Zd Zd Zd Zd Zd Zy)CheckGenericMixinc                     | j                   j                         }| j                   j                  rdnd}|t        |      v sJ y )NP>|t|zP>|z|)res1summaryuse_tstr)r   summ	check_strs      r   test_summaryzCheckGenericMixin.test_summaryC   s7    yy  "#yyGG	CI%%%r   c                     | j                   j                  }d| j                   _        | j                   j                         }dt        |      v sJ || j                   _        y )NTr9   )r:   r<   r;   r=   )r   orig_valr>   s      r   test_use_t_summaryz$CheckGenericMixin.test_use_t_summaryH   sI    99??		yy  "#d)###"		r   c                     | j                   j                  t        j                  t	        | j                   j
                                     y N)r:   t_testr   eyelenr(   )r   s    r   
test_ttestzCheckGenericMixin.test_ttestO   s,    		DII$4$4 567r   c                    | j                   j                  }t        j                  g d      }| j                   j                  j
                  #|| j                   j                  j
                     }t        ||d       t        |t        j                  t        |            d       t        | j                   j                  t        j                  t        |            d       | j                  sot        | j                   j                  | j                   j                  dd       t        | j                   j                  | j                   j                  dd       y y )	Nr+   r   r+   r   )atol   g      ?g?g333333?)rtolrL   )r:   r(   r   r   modelfixed_paramsmaskr   zerosrH   bseskip_bsejacbsejacbsejhj)r   r(   params_trues      r   test_paramszCheckGenericMixin.test_paramsR   s    !!hhw'99??++7%diioo&F&FGK#6V 5A>		rxxF'<3GDIIMM499+;+;$!%' DII,,dii.>.>!%C1  r   c                    | j                   }t        | dd      }|j                  j                  &|j                  j                  j                  \  }}d}n'|j                  j
                  j                  d   d}}d}|j                  ||z
  |z
  k(  sJ |j                  ||z
  k(  sJ t        |j                        ||z   k(  sJ y )Nk_extrar   r   )
r:   getattrrO   exogr   r   df_residdf_modelrH   r(   )r   resrY   nobsk_vars
k_constants         r   test_dfzCheckGenericMixin.test_dfd   s    ii$	1-99>>%99>>//LD&J99??003Q&DJ||tf}w6666||v
22223::&7"2222r   N)r0   r1   r2   r@   rC   rI   rW   rb   r    r   r   r7   r7   @   s    &
#81$3r   r7   c                   "    e Zd Zed        Zd Zy)TestMyPareto1c                    g d}d}t         j                  j                  d       t        j                  j
                  |i t        |      }t        |      }d |_        d |_	        d|_
        dx|_        }|j                  j                  d   |j                  z
  |z
  |_        g d|j                  _        || _        |j%                  d       | _        || _        d	| _        y )
NrK   d     sizer      r   dispT)r   randomseedr   paretorvsdictr	   r,   rP   r]   rY   r   r   r\   dataxnamesmodfitr:   rS   )clsr(   r_   rp   mod_parrY   s         r   setup_classzTestMyPareto1.setup_classt   s    
		tll:$D/:3-##' $%%'"==..q1G4D4DDO7;;D;) r   c                     | j                   j                  }| j                   j                  j                         }|d   |d   z   }t	        ||       t        ||d       y )Nr   r+   )decimal)r:   r(   r   r   r   r   )r   r(   x_minp_mins       r   test_minsupportzTestMyPareto1.test_minsupport   sO    !!		##%q	F1I%%'E5!4r   N)r0   r1   r2   classmethodrx   r}   r    r   r   rd   rd   r   s     ,5r   rd   c                       e Zd Zed        Zy)TestMyParetoRestrictionc                    g d}d}t         j                  j                  d       t        j                  j
                  |i t        |      }t        |      }t         j                  t        j                  d      z  }d|d<   ||_
        t        j                  |      |_        |j                  |j                     |_        d|_        d	x|_        }|j                   j"                  d   |j                  z
  |z
  |_        d
dg|j&                  _        || _        |j-                  d       | _        || _        d| _        y )NrK   2   rg   rh   rj   gr   r   r+   r   r   rk   F)r   rm   rn   r   ro   rp   rq   r	   nanonesr,   isnanrP   r   r]   rY   r   r   r\   rr   rs   rt   ru   r:   rS   )rv   r(   r_   rp   rw   fixdfrY   s          r   rx   z#TestMyParetoRestriction.setup_class   s   
		tll:$D/:3-#a$#%88E? &33G4L4LM$%%'"==..q1G4D4DDwN&0;;D;)  r   N)r0   r1   r2   r~   rx   r    r   r   r   r      s        r   r   c                   T     e Zd ZdZddgZg dZddgZdgZd fd	Zd	 Z	d
 Z
d Z xZS )TwoPeakLLHNoExogz*Fit height of signal peak over background.
   i  )r   signal
backgroundn_signaln_backgroundalphac                 \    || _         || _        t        |   |||| j                  d| y )N)r   r[   r   )r   r   r   __init__
exog_names)r   r   r[   r   r   argskwargsr   s          r   r   zTwoPeakLLHNoExog.__init__   s>     $  #		
 	r   c                 &    | j                  |       S rE   )nlogliker'   s     r   r)   zTwoPeakLLHNoExog.loglike   s    f%%%r   c                 >    | j                   }| j                  ||      S rE   )r   nlnlike)r   r(   r   s      r   r   zTwoPeakLLHNoExog.nloglike   s    

||FE**r   c                 6   |d   }|d   }|dk  s|dk  rt         j                  S ||z   }|}| j                  j                  |      }| j                  j                  |      }t        j
                  t        j                  ||z  ||z  z               }	|	|z  }	|	 S )Nr   r   )r   infr   r#   r   r&   r.   )
r   r(   r   n_sign_bkgn_totr   sigbkgsumlogls
             r   r   zTwoPeakLLHNoExog.nlnlike   s    q	q	AI%!)66Mkkooe$oo!!%(&& =>?5xr   )NNN)r0   r1   r2   r3   r   	cloneattrr   endog_namesr   r)   r   r   r4   r5   s   @r   r   r      s9    4:L8In-J)K&+r   r   c                   "    e Zd Zed        Zd Zy)TestTwoPeakLLHNoExogc                 ~   t         j                  j                  d       t        j                  dd      }t        j
                  dd      }d}d}||g}t        j                  |j                  |      |j                  |      g      d d t         j                  f   }|| _	        || _
        || _        || _        y )	N*   r   r   )r   r   rf   r      rh   )r   rm   rn   r   
halfcauchyuniformconcatenaterp   newaxisXr(   pdf_apdf_b)rv   r   r   n_an_br(   r   s          r   rx   z TestTwoPeakLLHNoExog.setup_class   s    
		r  Qa0!3/sNNEII3I/!II3I/  "**}. 
		r   c                    t         j                  j                  d       t        | j                  | j
                  | j                        }|j                         }t        |j                  | j                  d       |j                  dk(  sJ |j                  dk(  sJ |j                  d      }t        |d	   j                  d      | j                  d       |j                          y )
Nr   )r   r   g?)rN      r   r   )nrepr+   )r   rm   rn   r   r   r   r   ru   r   r(   r\   r]   	bootstrapmeanr;   )r   
llh_noexogr^   res_bss       r   test_fitzTestTwoPeakLLHNoExog.test_fit   s    
		r%dff-1ZZ15=
 nn

DKKd;||s"""||q   B'q	q)4;;TBr   N)r0   r1   r2   r~   rx   r   r    r   r   r   r      s     "r   r   )r3   numpyr   scipyr   statsmodels.base.modelr   numpy.testingr   r   r   r	   r7   rd   r   r   r   r    r   r   <module>r      sk      9, ,-% -`/3 /3d5% 5B /  :'- 'T" "r   