
    M/Ph'                        d Z ddlZ G d d          Z G d de          Z G d de          Z G d	 d
e          Z G d de          Z G d de          Z G d de          Z	 G d de          Z
 G d de          Zedk    r e            Ze                    d          dk     e                    d          dk     e                    d          dk     e                    d          dk      e e
dd           e	d                    Z ee                    d                      e e	d           e
dd                    Z ee                    d                     dS dS )zmNonlinear Transformation classes


Created on Sat Apr 16 16:06:11 2011

Author: Josef Perktold
License : BSD
    Nc                       e Zd Zd ZdS )TransformFunctionc                 0    |                      |           d S N)funcselfxs     u/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/statsmodels/sandbox/distributions/transform_functions.py__call__zTransformFunction.__call__   s    		!    N)__name__
__module____qualname__r    r   r   r   r      s#            r   r   c                   0    e Zd ZdZd Zd Zd Zd Zd ZdS )
SquareFunczclass to hold quadratic function with inverse function and derivative

    using instance methods instead of class methods, if we want extension
    to parametrized function
    c                 ,    t          j        |d          S )Ng       @nppowerr   s     r   r   zSquareFunc.func   s    x2r   c                 *    t          j        |          S r   r   sqrtr   s     r   inversepluszSquareFunc.inverseplus    s    wqzzr   c                 0    dt          j        |          z
  S N        r   r   s     r   inverseminuszSquareFunc.inverseminus#   s    RWQZZr   c                 0    dt          j        |          z  S N      ?r   r   s     r   	derivpluszSquareFunc.derivplus&   s    271::~r   c                 6    ddt          j        |          z  z
  S Nr   r"   r   r   s     r   
derivminuszSquareFunc.derivminus)   s    S^##r   N	r   r   r   __doc__r   r   r   r#   r&   r   r   r   r   r      si                    $ $ $ $ $r   r   c                   0    e Zd ZdZd Zd Zd Zd Zd ZdS )NegSquareFuncz!negative quadratic function

    c                 .    t          j        |d           S )N   r   r   s     r   r   zNegSquareFunc.func3   s    1~r   c                 ,    t          j        |           S r   r   r   s     r   r   zNegSquareFunc.inverseplus6   s    wr{{r   c                 2    dt          j        |           z
  S r   r   r   s     r   r   zNegSquareFunc.inverseminus9   s    RWaR[[  r   c                 8    ddt          j        |           z  z
  S r%   r   r   s     r   r#   zNegSquareFunc.derivplus<   s    S!_$$r   c                 2    dt          j        |           z  S r!   r   r   s     r   r&   zNegSquareFunc.derivminus?   s    27A2;;r   Nr'   r   r   r   r*   r*   /   si             ! ! !% % %    r   r*   c                   0    e Zd ZdZd Zd Zd Zd Zd ZdS )AbsFuncz,class for absolute value transformation
    c                 *    t          j        |          S r   )r   absr   s     r   r   zAbsFunc.funcG       vayyr   c                     |S r   r   r   s     r   r   zAbsFunc.inverseplusJ   s    r   c                     d|z
  S r   r   r   s     r   r   zAbsFunc.inverseminusM   s    Qwr   c                     dS Ng      ?r   r   s     r   r#   zAbsFunc.derivplusP   s    sr   c                     dS )Ng      r   r   s     r   r&   zAbsFunc.derivminusS   s    yr   Nr'   r   r   r   r2   r2   C   si                     r   r2   c                        e Zd Zd Zd Zd ZdS )LogFuncc                 *    t          j        |          S r   r   logr   s     r   r   zLogFunc.func]   r5   r   c                 *    t          j        |          S r   r   expr	   ys     r   inversezLogFunc.inverse`   r5   r   c                     d|z  S r9   r   r   s     r   derivzLogFunc.derivc   s    !tr   Nr   r   r   r   rE   rG   r   r   r   r<   r<   [   sA                r   r<   c                        e Zd Zd Zd Zd ZdS )ExpFuncc                 *    t          j        |          S r   rA   r   s     r   r   zExpFunc.funci   r5   r   c                 *    t          j        |          S r   r>   rC   s     r   rE   zExpFunc.inversel   r5   r   c                 *    t          j        |          S r   rA   r   s     r   rG   zExpFunc.derivo   r5   r   NrH   r   r   r   rJ   rJ   f   sA                r   rJ   c                   &    e Zd Zd Zd Zd Zd ZdS )BoxCoxNonzeroFuncc                     || _         d S r   lamda)r	   rR   s     r   __init__zBoxCoxNonzeroFunc.__init__u   s    


r   c                 L    t          j        || j                  dz
  | j        z  S N   r   r   rR   r   s     r   r   zBoxCoxNonzeroFunc.funcx   s"    DJ''!+TZ77r   c                 ,    | j         |z  dz   | j         z  S rU   rQ   rC   s     r   rE   zBoxCoxNonzeroFunc.inverse{   s    
Q"DJ..r   c                 <    t          j        || j        dz
            S rU   rW   r   s     r   rG   zBoxCoxNonzeroFunc.deriv~   s    x4:>***r   Nr   r   r   rS   r   rE   rG   r   r   r   rO   rO   s   sP          8 8 8/ / /+ + + + +r   rO   c                   &    e Zd Zd Zd Zd Zd ZdS )
AffineFuncc                 "    || _         || _        d S r   constantslope)r	   r_   r`   s      r   rS   zAffineFunc.__init__   s     


r   c                 &    | j         | j        |z  z   S r   r^   r   s     r   r   zAffineFunc.func   s    }tzA~--r   c                 &    || j         z
  | j        z  S r   r^   rC   s     r   rE   zAffineFunc.inverse   s    DM!TZ//r   c                     | j         S r   )r`   r   s     r   rG   zAffineFunc.deriv   s
    zr   NrZ   r   r   r   r\   r\      sP          . . .0 0 0    r   r\   c                   &    e Zd Zd Zd Zd Zd ZdS )	ChainFuncc                 "    || _         || _        d S r   )finnfout)r	   rg   rh   s      r   rS   zChainFunc.__init__   s    				r   c                 f    | j                             | j                            |                    S r   )rh   r   rg   r   s     r   r   zChainFunc.func   s$    y~~dinnQ//000r   c                 f    | j                             | j                            |                    S r   )f1rE   rh   rC   s     r   rE   zChainFunc.inverse   s&    wty0033444r   c                     | j                             |          }| j                            |          | j                             |          z  S r   )rg   r   rh   rG   )r	   r
   zs      r   rG   zChainFunc.deriv   s<    INN1yq!!DIOOA$6$666r   NrZ   r   r   r   re   re      sP          1 1 15 5 57 7 7 7 7r   re   __main__   rV   r,   g      @)r(   numpyr   r   r   r*   r2   r<   rJ   rO   r\   re   r   absfr   r   r   chainfprintchainf2r   r   r   <module>rv      s              $ $ $ $ $" $ $ $2    %   (       0	 	 	 	 	 	 	 	
 
 
 
 
 
 
 
+ + + + +) + + +    "    7 7 7 7 7! 7 7 7> z799DIIaLLAIIbMMQQ1aBYzz!A(9(9!(<(<==F	E&++b//i))!,,jj1oo>>G	E&++b// r   