ó
áp7]c           @  s²  d  Z  d d l m Z d d l Z d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d	 „  ƒ  YZ d
 e f d „  ƒ  YZ	 d e f d „  ƒ  YZ
 d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ 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 ƒ ƒ n  d S(   sm   Nonlinear Transformation classes


Created on Sat Apr 16 16:06:11 2011

Author: Josef Perktold
License : BSD
iÿÿÿÿ(   t   print_functionNt   TransformFunctionc           B  s   e  Z d  „  Z RS(   c         C  s   |  j  | ƒ d  S(   N(   t   func(   t   selft   x(    (    sT   lib/python2.7/site-packages/statsmodels/sandbox/distributions/transform_functions.pyt   __call__   s    (   t   __name__t
   __module__R   (    (    (    sT   lib/python2.7/site-packages/statsmodels/sandbox/distributions/transform_functions.pyR      s   t
   SquareFuncc           B  s;   e  Z d  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   s³   class to hold quadratic function with inverse function and derivative

    using instance methods instead of class methods, if we want extension
    to parameterized function
    c         C  s   t  j | d ƒ S(   Ng       @(   t   npt   power(   R   R   (    (    sT   lib/python2.7/site-packages/statsmodels/sandbox/distributions/transform_functions.pyR      s    c         C  s   t  j | ƒ S(   N(   R	   t   sqrt(   R   R   (    (    sT   lib/python2.7/site-packages/statsmodels/sandbox/distributions/transform_functions.pyt   inverseplus"   s    c         C  s   d t  j | ƒ S(   Ng        (   R	   R   (   R   R   (    (    sT   lib/python2.7/site-packages/statsmodels/sandbox/distributions/transform_functions.pyt   inverseminus%   s    c         C  s   d t  j | ƒ S(   Ng      à?(   R	   R   (   R   R   (    (    sT   lib/python2.7/site-packages/statsmodels/sandbox/distributions/transform_functions.pyt	   derivplus(   s    c         C  s   d d t  j | ƒ S(   Ng        g      à?(   R	   R   (   R   R   (    (    sT   lib/python2.7/site-packages/statsmodels/sandbox/distributions/transform_functions.pyt
   derivminus+   s    (   R   R   t   __doc__R   R   R   R   R   (    (    (    sT   lib/python2.7/site-packages/statsmodels/sandbox/distributions/transform_functions.pyR      s   				t   NegSquareFuncc           B  s;   e  Z d  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   s!   negative quadratic function

    c         C  s   t  j | d ƒ S(   Ni   (   R	   R
   (   R   R   (    (    sT   lib/python2.7/site-packages/statsmodels/sandbox/distributions/transform_functions.pyR   5   s    c         C  s   t  j | ƒ S(   N(   R	   R   (   R   R   (    (    sT   lib/python2.7/site-packages/statsmodels/sandbox/distributions/transform_functions.pyR   8   s    c         C  s   d t  j | ƒ S(   Ng        (   R	   R   (   R   R   (    (    sT   lib/python2.7/site-packages/statsmodels/sandbox/distributions/transform_functions.pyR   ;   s    c         C  s   d d t  j | ƒ S(   Ng        g      à?(   R	   R   (   R   R   (    (    sT   lib/python2.7/site-packages/statsmodels/sandbox/distributions/transform_functions.pyR   >   s    c         C  s   d t  j | ƒ S(   Ng      à?(   R	   R   (   R   R   (    (    sT   lib/python2.7/site-packages/statsmodels/sandbox/distributions/transform_functions.pyR   A   s    (   R   R   R   R   R   R   R   R   (    (    (    sT   lib/python2.7/site-packages/statsmodels/sandbox/distributions/transform_functions.pyR   1   s   				t   AbsFuncc           B  s;   e  Z d  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   s,   class for absolute value transformation
    c         C  s   t  j | ƒ S(   N(   R	   t   abs(   R   R   (    (    sT   lib/python2.7/site-packages/statsmodels/sandbox/distributions/transform_functions.pyR   I   s    c         C  s   | S(   N(    (   R   R   (    (    sT   lib/python2.7/site-packages/statsmodels/sandbox/distributions/transform_functions.pyR   L   s    c         C  s   d | S(   Ng        (    (   R   R   (    (    sT   lib/python2.7/site-packages/statsmodels/sandbox/distributions/transform_functions.pyR   O   s    c         C  s   d S(   Ng      ð?(    (   R   R   (    (    sT   lib/python2.7/site-packages/statsmodels/sandbox/distributions/transform_functions.pyR   R   s    c         C  s   d S(   Ng        g      ð?g      ð¿(    (   R   R   (    (    sT   lib/python2.7/site-packages/statsmodels/sandbox/distributions/transform_functions.pyR   U   s    (   R   R   R   R   R   R   R   R   (    (    (    sT   lib/python2.7/site-packages/statsmodels/sandbox/distributions/transform_functions.pyR   E   s   				t   LogFuncc           B  s#   e  Z d  „  Z d „  Z d „  Z RS(   c         C  s   t  j | ƒ S(   N(   R	   t   log(   R   R   (    (    sT   lib/python2.7/site-packages/statsmodels/sandbox/distributions/transform_functions.pyR   _   s    c         C  s   t  j | ƒ S(   N(   R	   t   exp(   R   t   y(    (    sT   lib/python2.7/site-packages/statsmodels/sandbox/distributions/transform_functions.pyt   inverseb   s    c         C  s   d | S(   Ng      ð?(    (   R   R   (    (    sT   lib/python2.7/site-packages/statsmodels/sandbox/distributions/transform_functions.pyt   derive   s    (   R   R   R   R   R   (    (    (    sT   lib/python2.7/site-packages/statsmodels/sandbox/distributions/transform_functions.pyR   ]   s   		t   ExpFuncc           B  s#   e  Z d  „  Z d „  Z d „  Z RS(   c         C  s   t  j | ƒ S(   N(   R	   R   (   R   R   (    (    sT   lib/python2.7/site-packages/statsmodels/sandbox/distributions/transform_functions.pyR   k   s    c         C  s   t  j | ƒ S(   N(   R	   R   (   R   R   (    (    sT   lib/python2.7/site-packages/statsmodels/sandbox/distributions/transform_functions.pyR   n   s    c         C  s   t  j | ƒ S(   N(   R	   R   (   R   R   (    (    sT   lib/python2.7/site-packages/statsmodels/sandbox/distributions/transform_functions.pyR   q   s    (   R   R   R   R   R   (    (    (    sT   lib/python2.7/site-packages/statsmodels/sandbox/distributions/transform_functions.pyR   h   s   		t   BoxCoxNonzeroFuncc           B  s,   e  Z d  „  Z d „  Z d „  Z d „  Z RS(   c         C  s   | |  _  d  S(   N(   t   lamda(   R   R   (    (    sT   lib/python2.7/site-packages/statsmodels/sandbox/distributions/transform_functions.pyt   __init__w   s    c         C  s   t  j | |  j ƒ d |  j S(   Ni   (   R	   R
   R   (   R   R   (    (    sT   lib/python2.7/site-packages/statsmodels/sandbox/distributions/transform_functions.pyR   z   s    c         C  s   |  j  | d |  j  S(   Ni   (   R   (   R   R   (    (    sT   lib/python2.7/site-packages/statsmodels/sandbox/distributions/transform_functions.pyR   }   s    c         C  s   t  j | |  j d ƒ S(   Ni   (   R	   R
   R   (   R   R   (    (    sT   lib/python2.7/site-packages/statsmodels/sandbox/distributions/transform_functions.pyR   €   s    (   R   R   R   R   R   R   (    (    (    sT   lib/python2.7/site-packages/statsmodels/sandbox/distributions/transform_functions.pyR   u   s   			t
   AffineFuncc           B  s,   e  Z d  „  Z d „  Z d „  Z d „  Z RS(   c         C  s   | |  _  | |  _ d  S(   N(   t   constantt   slope(   R   R   R    (    (    sT   lib/python2.7/site-packages/statsmodels/sandbox/distributions/transform_functions.pyR   †   s    	c         C  s   |  j  |  j | S(   N(   R   R    (   R   R   (    (    sT   lib/python2.7/site-packages/statsmodels/sandbox/distributions/transform_functions.pyR   Š   s    c         C  s   | |  j  |  j S(   N(   R   R    (   R   R   (    (    sT   lib/python2.7/site-packages/statsmodels/sandbox/distributions/transform_functions.pyR      s    c         C  s   |  j  S(   N(   R    (   R   R   (    (    sT   lib/python2.7/site-packages/statsmodels/sandbox/distributions/transform_functions.pyR      s    (   R   R   R   R   R   R   (    (    (    sT   lib/python2.7/site-packages/statsmodels/sandbox/distributions/transform_functions.pyR   „   s   			t	   ChainFuncc           B  s,   e  Z d  „  Z d „  Z d „  Z d „  Z RS(   c         C  s   | |  _  | |  _ d  S(   N(   t   finnt   fout(   R   R"   R#   (    (    sT   lib/python2.7/site-packages/statsmodels/sandbox/distributions/transform_functions.pyR   –   s    	c         C  s   |  j  j |  j j | ƒ ƒ S(   N(   R#   R   R"   (   R   R   (    (    sT   lib/python2.7/site-packages/statsmodels/sandbox/distributions/transform_functions.pyR   š   s    c         C  s   |  j  j |  j j | ƒ ƒ S(   N(   t   f1R   R#   (   R   R   (    (    sT   lib/python2.7/site-packages/statsmodels/sandbox/distributions/transform_functions.pyR      s    c         C  s2   |  j  j | ƒ } |  j j | ƒ |  j  j | ƒ S(   N(   R"   R   R#   R   (   R   R   t   z(    (    sT   lib/python2.7/site-packages/statsmodels/sandbox/distributions/transform_functions.pyR       s    (   R   R   R   R   R   R   (    (    (    sT   lib/python2.7/site-packages/statsmodels/sandbox/distributions/transform_functions.pyR!   ”   s   			t   __main__i   iûÿÿÿi   i   g      @(   R   t
   __future__R    t   numpyR	   t   objectR   R   R   R   R   R   R   R   R!   R   t   absfR   R   R   t   chainft   printt   chainf2(    (    (    sT   lib/python2.7/site-packages/statsmodels/sandbox/distributions/transform_functions.pyt   <module>	   s*   
	