
    !g'                     B   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j                  d      dk(   ej                  d      dk(   ej                  d      dk(   ej!                  d      dk(    e e
dd       e	d            Z eej                  d              e e	d       e
dd            Z eej                  d             yy)zmNonlinear Transformation classes


Created on Sat Apr 16 16:06:11 2011

Author: Josef Perktold
License : BSD
    Nc                       e Zd Zd Zy)TransformFunctionc                 &    | j                  |       y N)funcselfxs     r/var/www/dash_apps/app1/venv/lib/python3.12/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                   .    e Zd ZdZd Zd Zd Zd Zd Zy)
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    xx2r   c                 ,    t        j                  |      S r   r   sqrtr   s     r   inversepluszSquareFunc.inverseplus    s    wwqzr   c                 2    dt        j                  |      z
  S N        r   r   s     r   inverseminuszSquareFunc.inverseminus#   s    RWWQZr   c                 2    dt        j                  |      z  S N      ?r   r   s     r   	derivpluszSquareFunc.derivplus&   s    2771:~r   c                 8    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      s      $r   r   c                   .    e Zd ZdZd Zd Zd Zd Zd Zy)NegSquareFuncz!negative quadratic function

    c                 0    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    wwr{r   c                 4    dt        j                  |       z
  S r   r   r   s     r   r   zNegSquareFunc.inverseminus9   s    RWWaR[  r   c                 :    ddt        j                  |       z  z
  S r%   r   r   s     r   r#   zNegSquareFunc.derivplus<   s    S!_$$r   c                 4    dt        j                  |       z  S r!   r   r   s     r   r&   zNegSquareFunc.derivminus?   s    277A2;r   Nr'   r   r   r   r*   r*   /   s     !%r   r*   c                   .    e Zd ZdZd Zd Zd Zd Zd Zy)AbsFuncz,class for absolute value transformation
    c                 ,    t        j                  |      S r   )r   absr   s     r   r   zAbsFunc.funcG       vvay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                      yNg      ?r   r   s     r   r#   zAbsFunc.derivplusP   s    r   c                      y)Ng      r   r   s     r   r&   zAbsFunc.derivminusS   s    r   Nr'   r   r   r   r2   r2   C   s     r   r2   c                       e Zd Zd Zd Zd Zy)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<   [   s    r   r<   c                       e Zd Zd Zd Zd Zy)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   s    r   rJ   c                   $    e Zd Zd Zd Zd Zd Zy)BoxCoxNonzeroFuncc                     || _         y r   lamda)r	   rR   s     r   __init__zBoxCoxNonzeroFunc.__init__u   s	    
r   c                 b    t        j                  || j                        dz
  | j                  z  S N   r   r   rR   r   s     r   r   zBoxCoxNonzeroFunc.funcx   s%    DJJ'!+TZZ77r   c                 @    | j                   |z  dz   | j                   z  S rU   rQ   rC   s     r   rE   zBoxCoxNonzeroFunc.inverse{   s    

Q"DJJ..r   c                 H    t        j                  || j                  dz
        S rU   rW   r   s     r   rG   zBoxCoxNonzeroFunc.deriv~   s    xx4::>**r   Nr   r   r   rS   r   rE   rG   r   r   r   rO   rO   s   s    8/+r   rO   c                   $    e Zd Zd Zd Zd Zd Zy)
AffineFuncc                      || _         || _        y 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    }}tzzA~--r   c                 :    || j                   z
  | j                  z  S r   r^   rC   s     r   rE   zAffineFunc.inverse   s    DMM!TZZ//r   c                     | j                   S r   )r`   r   s     r   rG   zAffineFunc.deriv   s    zzr   NrZ   r   r   r   r\   r\      s    .0r   r\   c                   $    e Zd Zd Zd Zd Zd Zy)	ChainFuncc                      || _         || _        y r   )finnfout)r	   rg   rh   s      r   rS   zChainFunc.__init__   s    		r   c                 j    | j                   j                  | j                  j                  |            S r   )rh   r   rg   r   s     r   r   zChainFunc.func   s"    yy~~diinnQ/00r   c                 j    | j                   j                  | j                  j                  |            S r   )f1rE   rh   rC   s     r   rE   zChainFunc.inverse   s$    wwtyy00344r   c                     | j                   j                  |      }| j                  j                  |      | j                   j                  |      z  S r   )rg   r   rh   rG   )r	   r
   zs      r   rG   zChainFunc.deriv   s9    IINN1yyq!DIIOOA$666r   NrZ   r   r   r   re   re      s    15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> z9DIIaLAIIbMQQ1aBz!A(9!(<=F	&++b/)!,j1o>G	&++b/ r   