ó
áp7]c           @   sú   d  Z  d d l Z d d l m Z m Z d d l Z d d l j j	 Z
 d d l m Z m 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 S(   sL   
Created on Wed May 16 22:21:26 2018

Author: Josef Perktold
License: BSD-3
iÿÿÿÿN(   t   assert_allcloset   assert_equal(   t   approx_fprimet   approx_hesst   CheckPenaltyc           B   s   e  Z d  „  Z d „  Z RS(   c         C   s—   |  j  } |  j } t j g  | D] } | j t j | ƒ ƒ ^ q ƒ } t | | d  d  d … d d ƒt | j d t j | d ƒ ƒ d d d ƒd  S(   Niÿÿÿÿt   rtolg»½×Ùß|Û=i    (   t   pent   paramst   npt   arrayt   funct
   atleast_1dR    (   t   selfR   t   xt   xit   p(    (    sD   lib/python2.7/site-packages/statsmodels/base/tests/test_penalties.pyt   test_symmetry   s
    		4 c   	      C   s[  |  j  } |  j } t j g  | D] } | j t j | ƒ ƒ ^ q ƒ } t j g  | D]! } t t j | ƒ | j ƒ ^ qS ƒ } t | | d d d d ƒt j g  | D] } | j	 t j | ƒ ƒ ^ q£ ƒ } t j g  | D]! } t
 t j | ƒ | j ƒ ^ q× ƒ } | j d k r>t j g  | D] } t j | ƒ ^ qƒ } n  t | | d d d d ƒd  S(   NR   gH¯¼šò×z>t   atolg:Œ0âŽyE>i   (   R   R   R   R	   t   derivR   R   R
   R    t   deriv2R   t   ndimt   diag(	   R   R   R   R   t   pst   psnt   pht   phnt   phi(    (    sD   lib/python2.7/site-packages/statsmodels/base/tests/test_penalties.pyt   test_derivatives   s    		4747.(   t   __name__t
   __module__R   R   (    (    (    sD   lib/python2.7/site-packages/statsmodels/base/tests/test_penalties.pyR      s   		t   TestL2Constraints0c           B   s    e  Z e d  „  ƒ Z d „  Z RS(   c         C   s@   t  j d d d ƒ } t  j | | f ƒ |  _ t j ƒ  |  _ d  S(   Ngš™™™™™É¿gš™™™™™É?i   (   R   t   linspacet   column_stackR   t   smpent   L2ContraintsPenaltyR   (   t   clst   x0(    (    sD   lib/python2.7/site-packages/statsmodels/base/tests/test_penalties.pyt   setup_class2   s    c         C   s_  |  j  } |  j } | j d } t j d t j | ƒ ƒ } t j d t j | ƒ ƒ } | j | j	 ƒ } | j
 | j	 ƒ } t j g  | D] } | j t j | ƒ ƒ ^ q† ƒ }	 x« | | g D] }
 t |
 j | j	 ƒ | d d d d ƒt |
 j
 | j	 ƒ | d d d d ƒt j g  | D] } | j t j | ƒ ƒ ^ qƒ } t | |	 d d d d ƒqº Wd  S(	   Ni   t   weightst   restrictionR   gH¯¼šò×z>R   g:Œ0âŽyE>g»½×Ùß|Û=(   R   R   t   shapeR!   R"   R   t   onest   eyeR
   t   TR   R	   R   R   R    (   R   R   R   t   kt   pen2t   pen3t   ft   dR   t   d2t   pen_t   d2_(    (    sD   lib/python2.7/site-packages/statsmodels/base/tests/test_penalties.pyt   test_equivalence8   s    		4%%4(   R   R   t   classmethodR%   R4   (    (    (    sD   lib/python2.7/site-packages/statsmodels/base/tests/test_penalties.pyR   0   s   t   TestL2Constraints1c           B   s    e  Z e d  „  ƒ Z d „  Z RS(   c         C   sX   t  j d d d ƒ } t  j | | f ƒ |  _ t j d d d g d d g g ƒ |  _ d  S(   Ngš™™™™™É¿gš™™™™™É?i   R'   i   i    (   R   R   R    R   R!   R"   R   (   R#   R$   (    (    sD   lib/python2.7/site-packages/statsmodels/base/tests/test_penalties.pyR%   L   s    c         C   sc   |  j  } |  j } | j } | j | j ƒ d j d ƒ } t | j | j ƒ | d d d d ƒd  S(   Ni   i    R   gH¯¼šò×z>R   g:Œ0âŽyE>(   R   R   R'   t   dotR+   t   sumR    R
   (   R   R   R   t   rR/   (    (    sD   lib/python2.7/site-packages/statsmodels/base/tests/test_penalties.pyt   test_valuesR   s
    			(   R   R   R5   R%   R:   (    (    (    sD   lib/python2.7/site-packages/statsmodels/base/tests/test_penalties.pyR6   J   s   t   TestSmoothedSCADc           B   s   e  Z e d  „  ƒ Z RS(   c         C   sL   t  j d d d ƒ } t  j | | f ƒ |  _ t j d d d d ƒ |  _ d  S(   Ngš™™™™™É¿gš™™™™™É?i   t   taugš™™™™™©?t   c0(   R   R   R    R   R!   t   SCADSmoothedR   (   R#   R$   (    (    sD   lib/python2.7/site-packages/statsmodels/base/tests/test_penalties.pyR%   \   s    (   R   R   R5   R%   (    (    (    sD   lib/python2.7/site-packages/statsmodels/base/tests/test_penalties.pyR;   Z   s   t   TestPseudoHuberc           B   s2   e  Z e d  „  ƒ Z d „  Z d „  Z d „  Z RS(   c         C   sC   t  j d d d ƒ } t  j | | f ƒ |  _ t j d ƒ |  _ d  S(   Ngš™™™™™É¿gš™™™™™É?i   gš™™™™™¹?(   R   R   R    R   R!   t   PseudoHuberR   (   R#   R$   (    (    sD   lib/python2.7/site-packages/statsmodels/base/tests/test_penalties.pyR%   e   s    c         C   sE   d g } t  j ƒ   t j d d | ƒ} Wd  QXt | j | ƒ d  S(   Ng      à?gš™™™™™¹?t   wts(   t   pytestt   deprecated_callR!   R@   R   R&   (   R   RA   R   (    (    sD   lib/python2.7/site-packages/statsmodels/base/tests/test_penalties.pyt   test_backward_compatibilityk   s    	c      
   C   sT   d g } d g } t  j ƒ    t j d d | d | ƒ} Wd  QXt | j | ƒ d  S(   Ng      ð?g      à?gš™™™™™¹?R&   RA   (   RB   RC   R!   R@   R   R&   (   R   R&   RA   R   (    (    sD   lib/python2.7/site-packages/statsmodels/base/tests/test_penalties.pyt   test_deprecated_priorityq   s
    		!c         C   s5   d d g } t  j d d | ƒ} t | j | ƒ d  S(   Ng      ð?g       @gš™™™™™¹?R&   (   R!   R@   R   R&   (   R   R&   R   (    (    sD   lib/python2.7/site-packages/statsmodels/base/tests/test_penalties.pyt   test_weights_assignmentx   s    (   R   R   R5   R%   RD   RE   RF   (    (    (    sD   lib/python2.7/site-packages/statsmodels/base/tests/test_penalties.pyR?   c   s   		t   TestL2c           B   s2   e  Z e d  „  ƒ Z d „  Z d „  Z d „  Z RS(   c         C   s@   t  j d d d ƒ } t  j | | f ƒ |  _ t j ƒ  |  _ d  S(   Ngš™™™™™É¿gš™™™™™É?i   (   R   R   R    R   R!   t   L2R   (   R#   R$   (    (    sD   lib/python2.7/site-packages/statsmodels/base/tests/test_penalties.pyR%   €   s    c         C   sB   d g } t  j ƒ   t j d | ƒ } Wd  QXt | j | ƒ d  S(   Ng      à?RA   (   RB   RC   R!   RH   R   R&   (   R   RA   R   (    (    sD   lib/python2.7/site-packages/statsmodels/base/tests/test_penalties.pyRD   †   s    	c      	   C   sQ   d g } d g } t  j ƒ   t j d | d | ƒ } Wd  QXt | j | ƒ d  S(   Ng      ð?g      à?R&   RA   (   RB   RC   R!   RH   R   R&   (   R   R&   RA   R   (    (    sD   lib/python2.7/site-packages/statsmodels/base/tests/test_penalties.pyRE   Œ   s
    		c         C   s2   d d g } t  j d | ƒ } t | j | ƒ d  S(   Ng      ð?g       @R&   (   R!   RH   R   R&   (   R   R&   R   (    (    sD   lib/python2.7/site-packages/statsmodels/base/tests/test_penalties.pyRF   “   s    (   R   R   R5   R%   RD   RE   RF   (    (    (    sD   lib/python2.7/site-packages/statsmodels/base/tests/test_penalties.pyRG   ~   s   		t   TestNonePenaltyc           B   s   e  Z e d  „  ƒ Z RS(   c         C   s@   t  j d d d ƒ } t  j | | f ƒ |  _ t j ƒ  |  _ d  S(   Ngš™™™™™É¿gš™™™™™É?i   (   R   R   R    R   R!   t   NonePenaltyR   (   R#   R$   (    (    sD   lib/python2.7/site-packages/statsmodels/base/tests/test_penalties.pyR%   ›   s    (   R   R   R5   R%   (    (    (    sD   lib/python2.7/site-packages/statsmodels/base/tests/test_penalties.pyRI   ™   s   (   t   __doc__t   numpyR   t   numpy.testingR    R   RB   t   statsmodels.base._penaltiest   baset
   _penaltiesR!   t   statsmodels.tools.numdiffR   R   t   objectR   R   R6   R;   R?   RG   RI   (    (    (    sD   lib/python2.7/site-packages/statsmodels/base/tests/test_penalties.pyt   <module>   s   	