
    M/Ph                         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dS )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}|                     |           t          j        d| j                                        dz
  dg          | _        d S )Nshapelocscale      ?      ?)super
initialize_set_extra_params_namesnparrayendogminstart_params)selfextra_params_names	__class__s     m/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/statsmodels/miscmodels/tests/test_generic_mle.pyr   zMyPareto.initialize   sl    666$$%7888 Hc4:>>+;+;c+A2%FGG    c                     ||| dz
  z  z  S )N    )r   xbs      r   pdfzMyPareto.pdf    s    1r!t9}r   c                 T    |                      |                              d           S )Nr   )nloglikeobssumr   paramss     r   loglikezMyPareto.loglike#   s'      ((,,Q////r   c                 ,   | 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dBF1II--"&-- qswr   )	__name__
__module____qualname____doc__r   r#   r)   r%   __classcell__r   s   @r   r	   r	      st         
H H H H H  0 0 0      r   r	   c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )CheckGenericMixinc                 ~    | j                                         }| j         j        rdnd}|t          |          v sJ d S )NP>|t|zP>|z|)res1summaryuse_tstr)r   summ	check_strs      r   test_summaryzCheckGenericMixin.test_summaryC   sD    y  ""#y;GGG	CII%%%%%%r   c                     | j         j        }d| j         _        | j                                         }dt          |          v sJ || j         _        d S )NTr9   )r:   r<   r;   r=   )r   orig_valr>   s      r   test_use_t_summaryz$CheckGenericMixin.test_use_t_summaryH   sK    9?	y  ""#d))####"	r   c                     | j                             t          j        t	          | j         j                                       d S N)r:   t_testr   eyelenr(   )r   s    r   
test_ttestzCheckGenericMixin.test_ttestO   s5    	DI$4 5 56677777r   c                 D   | 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
        sPt          | j         j	        | j         j        dd           t          | j         j        | j         j        dd           d S d S )	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   !hwww''9?+7%dio&FGK#6666V 5 5A>>>>	rxF'<'<3GGGG 	1DIM49+;$!%' ' ' ' DI,di.>!%C1 1 1 1 1 1	1 	1r   c                 2   | 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 d S )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    i$	1--9>%9>/LD&JJ9?03Q&DJ|tf}w66666|v
222223:&7"2222222r   N)r0   r1   r2   r@   rC   rI   rW   rb   r    r   r   r7   r7   @   s_        & & &
# # #8 8 81 1 1$3 3 3 3 3r   r7   c                   *    e Zd Zed             Zd ZdS )TestMyPareto1c                    g d}d}t           j                            d           t          j        j        |i t          |          }t          |          }d |_        d |_	        d|_
        dx|_        }|j        j        d         |j
        z
  |z
  |_        g d|j        _        || _        |                    d           | _        || _        d	| _        d S )
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l:$D///::3--##' $%%'"=.q1G4DDO777;;D;)) r   c                     | j         j        }| j         j                                        }|d         |d         z   }t	          ||           t          ||d           d S )Nr   r+   )decimal)r:   r(   r   r   r   r   )r   r(   x_minp_mins       r   test_minsupportzTestMyPareto1.test_minsupport   s^    !	##%%q	F1I%%'''E5!444444r   N)r0   r1   r2   classmethodrx   r}   r    r   r   rd   rd   r   s<          [,5 5 5 5 5r   rd   c                   $    e Zd Zed             ZdS )TestMyParetoRestrictionc                 P   g d}d}t           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        _        || _        |                    d           | _        || _        d| _        d S )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l:$D///::3--#a$#%8E?? &3G4LM$%%'"=.q1G4D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alphaNc                 h    || _         || _         t                      j        |||| j        d| d S )N)r   r[   r   )r   r   r   __init__
exog_names)r   r   r[   r   r   argskwargsr   s          r   r   zTwoPeakLLHNoExog.__init__   sY     $  #		 	
 	 	 	 	 	r   c                 .    |                      |           S rE   )nlogliker'   s     r   r)   zTwoPeakLLHNoExog.loglike   s    f%%%%r   c                 <    | 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                            |          }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	AII%!))6Mkooe$$o!!%((& =>>??5xr   )NNN)r0   r1   r2   r3   r   	cloneattrr   endog_namesr   r)   r   r   r4   r5   s   @r   r   r      s        44:L888In-J)K     & & &+ + +      r   r   c                   *    e Zd Zed             Zd ZdS )TestTwoPeakLLHNoExogc                    t           j                            d           t          j        dd          }t          j        dd          }d}d}||g}t          j        |                    |          |                    |          g          d d t           j        f         }|| _	        || _
        || _        || _        d S )	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00!3///sNEII3I//!II3I//   qq"*}. 
				r   c                    t           j                            d           t          | j        | j        | j                  }|                                }t          |j	        | j	        d           |j
        dk    sJ |j        dk    sJ |                    d          }t          |d	                             d          | j	        d           |                                 d S )
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%df-1Z15= = =
 nn
DKd;;;;|s""""|q    B''q	q))4;TBBB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      s}              9 9 9 9 9 9, , , , , , , , , ,- - - - -% - - -`/3 /3 /3 /3 /3 /3 /3 /3d5 5 5 5 5% 5 5 5B         /      :' ' ' ' '- ' ' 'T" " " " " " " " " "r   