ó
áp7]c           @   sø   d  Z  d d l Z e j e ƒ j Z d e f d „  ƒ  YZ e ƒ  Z	 d e	 _  d e f d „  ƒ  YZ
 e
 ƒ  Z d e _  e
 d	 d
 ƒ Z d e _  e
 d	 d ƒ Z d e _  d e f d „  ƒ  YZ e ƒ  Z d e _  d e f d „  ƒ  YZ e ƒ  Z d e _  d S(   sP   
Variance functions for use with the link functions in statsmodels.family.links
iÿÿÿÿNt   VarianceFunctionc           B   s    e  Z d  Z d „  Z d „  Z RS(   s–  
    Relates the variance of a random variable to its mean. Defaults to 1.

    Methods
    -------
    call
        Returns an array of ones that is the same shape as `mu`

    Notes
    -----
    After a variance function is initialized, its call method can be used.

    Alias for VarianceFunction:
    constant = VarianceFunction()

    See Also
    --------
    statsmodels.genmod.families.family
    c         C   s%   t  j | ƒ } t  j | j t  j ƒ S(   sÔ   
        Default variance function

        Parameters
        ----------
        mu : array-like
            mean parameters

        Returns
        -------
        v : array
            ones(mu.shape)
        (   t   npt   asarrayt   onest   shapet   float64(   t   selft   mu(    (    sC   lib/python2.7/site-packages/statsmodels/genmod/families/varfuncs.pyt   __call__   s    c         C   s   t  j | ƒ S(   s<   
        Derivative of the variance function v'(mu)
        (   R   t
   zeros_like(   R   R   (    (    sC   lib/python2.7/site-packages/statsmodels/genmod/families/varfuncs.pyt   deriv.   s    (   t   __name__t
   __module__t   __doc__R   R
   (    (    (    sC   lib/python2.7/site-packages/statsmodels/genmod/families/varfuncs.pyR       s   	s~   
The call method of constant returns a constant variance, i.e., a vector of
ones.

constant is an alias of VarianceFunction()
t   Powerc           B   s,   e  Z d  Z d d „ Z d „  Z d „  Z RS(   sv  
    Power variance function

    Parameters
    ----------
    power : float
        exponent used in power variance function

    Methods
    -------
    call
        Returns the power variance

    Notes
    -----
    Formulas
       V(mu) = numpy.fabs(mu)**power

    Aliases for Power:
    mu = Power()
    mu_squared = Power(power=2)
    mu_cubed = Power(power=3)
    g      ð?c         C   s   | |  _  d  S(   N(   t   power(   R   R   (    (    sC   lib/python2.7/site-packages/statsmodels/genmod/families/varfuncs.pyt   __init__W   s    c         C   s   t  j t  j | ƒ |  j ƒ S(   så   
        Power variance function

        Parameters
        ----------
        mu : array-like
            mean parameters

        Returns
        -------
        variance : array
            numpy.fabs(mu)**self.power
        (   R   R   t   fabs(   R   R   (    (    sC   lib/python2.7/site-packages/statsmodels/genmod/families/varfuncs.pyR   Z   s    c         C   sJ   |  j  t j | ƒ |  j  d } t j | d k  ƒ } | | c d 9<| S(   s_   
        Derivative of the variance function v'(mu)

        May be undefined at zero.
        i   i    iÿÿÿÿ(   R   R   R   t   flatnonzero(   R   R   t   dert   ii(    (    sC   lib/python2.7/site-packages/statsmodels/genmod/families/varfuncs.pyR
   j   s    !(   R   R   R   R   R   R
   (    (    (    sC   lib/python2.7/site-packages/statsmodels/genmod/families/varfuncs.pyR   >   s   	s>   
Returns np.fabs(mu)

Notes
-----
This is an alias of Power()
R   i   sa   
Returns np.fabs(mu)**2

Notes
-----
This is an alias of statsmodels.family.links.Power(power=2)
i   sa   
Returns np.fabs(mu)**3

Notes
-----
This is an alias of statsmodels.family.links.Power(power=3)
t   Binomialc           B   s5   e  Z d  Z d d „ Z d „  Z d „  Z d „  Z RS(   sä  
    Binomial variance function

    Parameters
    ----------
    n : int, optional
        The number of trials for a binomial variable.  The default is 1 for
        p in (0,1)

    Methods
    -------
    call
        Returns the binomial variance

    Notes
    -----
    Formulas :

       V(mu) = p * (1 - p) * n

    where p = mu / n

    Alias for Binomial:
    binary = Binomial()

    A private method _clean trims the data by machine epsilon so that p is
    in (0,1)
    i   c         C   s   | |  _  d  S(   N(   t   n(   R   R   (    (    sC   lib/python2.7/site-packages/statsmodels/genmod/families/varfuncs.pyR   ¯   s    c         C   s   t  j | t d t ƒ S(   Ni   (   R   t   clipt	   FLOAT_EPS(   R   t   p(    (    sC   lib/python2.7/site-packages/statsmodels/genmod/families/varfuncs.pyt   _clean²   s    c         C   s)   |  j  | |  j ƒ } | d | |  j S(   sò   
        Binomial variance function

        Parameters
        ----------
        mu : array-like
            mean parameters

        Returns
        -------
        variance : array
           variance = mu/n * (1 - mu/n) * self.n
        i   (   R   R   (   R   R   R   (    (    sC   lib/python2.7/site-packages/statsmodels/genmod/families/varfuncs.pyR   µ   s    c         C   s   d d | S(   s<   
        Derivative of the variance function v'(mu)
        i   i   (    (   R   R   (    (    sC   lib/python2.7/site-packages/statsmodels/genmod/families/varfuncs.pyR
   Ç   s    (   R   R   R   R   R   R   R
   (    (    (    sC   lib/python2.7/site-packages/statsmodels/genmod/families/varfuncs.pyR   ‘   s
   		sY   
The binomial variance function for n = 1

Notes
-----
This is an alias of Binomial(n=1)
t   NegativeBinomialc           B   s5   e  Z d  Z d d „ Z d „  Z d „  Z d „  Z RS(   s   
    Negative binomial variance function

    Parameters
    ----------
    alpha : float
        The ancillary parameter for the negative binomial variance function.
        `alpha` is assumed to be nonstochastic.  The default is 1.

    Methods
    -------
    call
        Returns the negative binomial variance

    Notes
    -----
    Formulas :

       V(mu) = mu + alpha*mu**2

    Alias for NegativeBinomial:
    nbinom = NegativeBinomial()

    A private method _clean trims the data by machine epsilon so that p is
    in (0,inf)
    g      ð?c         C   s   | |  _  d  S(   N(   t   alpha(   R   R   (    (    sC   lib/python2.7/site-packages/statsmodels/genmod/families/varfuncs.pyR   ô   s    c         C   s   t  j | t t  j ƒ S(   N(   R   R   R   t   inf(   R   R   (    (    sC   lib/python2.7/site-packages/statsmodels/genmod/families/varfuncs.pyR   ÷   s    c         C   s"   |  j  | ƒ } | |  j | d S(   sò   
        Negative binomial variance function

        Parameters
        ----------
        mu : array-like
            mean parameters

        Returns
        -------
        variance : array
            variance = mu + alpha*mu**2
        i   (   R   R   (   R   R   R   (    (    sC   lib/python2.7/site-packages/statsmodels/genmod/families/varfuncs.pyR   ú   s    c         C   s"   |  j  | ƒ } d d |  j | S(   sH   
        Derivative of the negative binomial variance function.
        i   i   (   R   R   (   R   R   R   (    (    sC   lib/python2.7/site-packages/statsmodels/genmod/families/varfuncs.pyR
     s    (   R   R   R   R   R   R   R
   (    (    (    sC   lib/python2.7/site-packages/statsmodels/genmod/families/varfuncs.pyR   Ø   s
   		sb   
Negative Binomial variance function.

Notes
-----
This is an alias of NegativeBinomial(alpha=1.)
(   R   t   numpyR   t   finfot   floatt   epsR   t   objectR    t   constantR   R   t
   mu_squaredt   mu_cubedR   t   binaryR   t   nbinom(    (    (    sC   lib/python2.7/site-packages/statsmodels/genmod/families/varfuncs.pyt   <module>   s$   -		9				=		<	