
p7]c        
   @   s9  d  Z  d d l m Z d d l Z d d l m Z m Z d d l j	 j
 Z
 d d l m Z e
 j Z e j   Z e j   Z e j   Z e j   Z e j   Z e j   Z e j   Z e j   Z e j   Z e j   Z e e e e e e e e e e g
 Z d   Z d   Z d   Z d	   Z  d
   Z! d   Z" d S(   s*   
Test functions for genmod.families.links
i(   t   rangeN(   t   assert_allcloset   assert_equal(   t   numdiffc         C   sc   t  j t  j j d d   } t |  t j  rC t | d  } n t |  t j  r_ | } n  | S(   s7   
    Get a value in the domain for a given family.
    i    i   i   (	   t   npt   logt   randomt   uniformt
   isinstancet   linkst   CLogLogt   mint   NegativeBinomial(   t   linkt   z(    (    sJ   lib/python2.7/site-packages/statsmodels/genmod/families/tests/test_link.pyt   get_domainvalue   s    
c       
   C   s   t  j j d  x t D] }  x t d  D] } t  j j d d  } |  j |  |   } t | | d d d t |   t	 |   } |  |  j |   } t | | d d d t |   q* Wq Wd  S(   Ni  i
   i    i   t   atolg:0yE>t   err_msg(
   R   R   t   seedt   LinksR    R   t   inverseR   t   strR   (   R   t   kt   pt   dR   (    (    sJ   lib/python2.7/site-packages/statsmodels/genmod/families/tests/test_link.pyt   test_inverse)   s    c          C   s   t  j j d  x t D] }  xv t d  D]h } t  j j d d  } |  j |  } t j t  j	 | |   } t
 | | d d d d d t |   q* Wq Wd  S(	   Ni^  i
   i    i   t   rtolgư>R   R   (   R   R   R   R   R    R   t   derivt   ndt   approx_fprimet   r_R   R   (   R   R   R   R   t   da(    (    sJ   lib/python2.7/site-packages/statsmodels/genmod/families/tests/test_link.pyt
   test_deriv9   s    c          C   s   t  j j d  x t D] }  t |  t j  r5 q n  x t d  D] } t  j j d d  } t  j	 | d d  } t |  t j
  r t  j	 | d d  } n  |  j |  } t j t  j | |  j  } t | | d	 d
 d d
 d t |   qB Wq Wd  S(   Ni^  i
   i    i   g{Gz?gGz?gQ?g
ףp=
?R   gư>R   R   (   R   R   R   R   R   R	   t   probitR    R   t   clipt   cauchyt   deriv2R   R   R   R   R   R   (   R   R   R   R   R   (    (    sJ   lib/python2.7/site-packages/statsmodels/genmod/families/tests/test_link.pyt   test_deriv2G   s    c          C   s   t  j j d  x t D] }  x} t d  D]o } t  j t  j j    } |  j |  } d |  j |  j	 |   } t
 | | d d d d d t |   q* Wq Wd  S(	   Ni^  i
   i   R   g:0yE>R   g|=R   (   R   R   R   R   R    R   R   t   inverse_derivR   R   R   R   (   R   R   R   R   t   f(    (    sJ   lib/python2.7/site-packages/statsmodels/genmod/families/tests/test_link.pyt   test_inverse_deriv[   s    c       &   C   s   d d d d d d d d d	 d
 d d d d d d d d d d d d d d d d d d d d d d  d! d" d# d$ d% d& g& }  t  j |   } t | t j |    d  S('   Ng~F@gp",/@g^Op@g@g'՚?@g9@g[za@g7Nl@gF͘@g'Dȅ@gj֔@gd(@gD`@gH@gWAڐ@gȎv~@gHKBb@gzٰ@gg雱@gy@gb@gAȓ@g_f=R@gQ7@gFH@gb
*@g.j?+@grӑ)@gyȉ[@g`?Ie}@g2JO@gItT@geDbQ@g?@g-U@gD*`@ga@gV0~@(   t   logitR   R   R   t	   ones_like(   R   t   zinv(    (    sJ   lib/python2.7/site-packages/statsmodels/genmod/families/tests/test_link.pyt   test_invlogit_stabilityi   s    												(#   t   __doc__t   statsmodels.compat.pythonR    t   numpyR   t   numpy.testingR   R   t   statsmodels.genmod.familiest   genmodt   familiest   statsmodels.toolsR   R   R	   t   LogitR)   t   inverse_powert   sqrtt   inverse_squaredt   identityR   R!   R#   R
   t   cloglogR   t   negbinomR   R   R   R    R%   R(   R,   (    (    (    sJ   lib/python2.7/site-packages/statsmodels/genmod/families/tests/test_link.pyt   <module>   s0   						