
    M/PhO                        d Z ddlZddlmZmZ ddlmc mZ	 ddl
mZm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dS )zL
Created on Wed May 16 22:21:26 2018

Author: Josef Perktold
License: BSD-3
    N)assert_allcloseassert_equal)approx_fprimeapprox_hessc                       e Zd Zd Zd ZdS )CheckPenaltyc           	         | j         | j        }t          j        fd|D                       }t	          ||d d d         d           t	                              dt          j        |d                   z            dd           d S )Nc                 ^    g | ])}                     t          j        |                    *S  )funcnp
atleast_1d.0xipens     e/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/statsmodels/base/tests/test_penalties.py
<listcomp>z.CheckPenalty.test_symmetry.<locals>.<listcomp>   s/    >>>bchhr}R0011>>>    绽|=)rtolr   )r   paramsr   arrayr   r   r   )selfxpr   s      @r   test_symmetryzCheckPenalty.test_symmetry   s    hKH>>>>A>>>??1TTrT7////R]1Q4%8%8!89915IIIIIIr   c                    | j         | j        }t          j        fd|D                       }t          j        fd|D                       }t	          ||dd           t          j        fd|D                       }t          j        fd|D                       }|j        dk    rt          j        d	 |D                       }t	          ||dd           d S )
Nc                 ^    g | ])}                     t          j        |                    *S r   )derivr   r   r   s     r   r   z1CheckPenalty.test_derivatives.<locals>.<listcomp>   s/    @@@syyr!2!233@@@r   c                 ^    g | ])}t          t          j        |          j                  *S r   )r   r   r   r   r   s     r   r   z1CheckPenalty.test_derivatives.<locals>.<listcomp>   s/    OOOrbmB&7&7BBOOOr   Hz>:0yE>r   atolc                 ^    g | ])}                     t          j        |                    *S r   deriv2r   r   r   s     r   r   z1CheckPenalty.test_derivatives.<locals>.<listcomp>"   s/    AAAszz"-"3"344AAAr   c                 ^    g | ])}t          t          j        |          j                  *S r   )r   r   r   r   r   s     r   r   z1CheckPenalty.test_derivatives.<locals>.<listcomp>#   s/    MMMRBM"$5$5sx@@MMMr      c                 6    g | ]}t          j        |          S r   )r   diag)r   phis     r   r   z1CheckPenalty.test_derivatives.<locals>.<listcomp>'   s     666C273<<666r   )r   r   r   r   r   ndim)r   r   pspsnphphnr   s         @r   test_derivativeszCheckPenalty.test_derivatives   s    hKX@@@@a@@@AAhOOOOQOOOPPCd6666XAAAAqAAABBhMMMM1MMMNN7a<< 66266677BCd666666r   N)__name__
__module____qualname__r   r4   r   r   r   r   r      s5        J J J7 7 7 7 7r   r   c                   *    e Zd Zed             Zd ZdS )TestL2Constraints0c                     t          j        ddd          }t          j        ||f          | _        t	          j                    | _        d S N皙ɿ皙?   r   linspacecolumn_stackr   smpenL2ConstraintsPenaltyr   clsx0s     r   setup_classzTestL2Constraints0.setup_class-   s>    [sB''_b"X..
,..r   c                   
 | j         
| j        }|j        d         }t          j        t          j        |                    }t          j        t          j        |                    }
                    |j	                  }

                    |j	                  }t          j        
fd|D                       }||fD ]}t          |                    |j	                  |dd           t          |
                    |j	                  |dd           t          j        
fd|D                       }	t          |	|d	d           d S )
N   weightsrestrictionc                 ^    g | ])}                     t          j        |                    *S r   r(   r   s     r   r   z7TestL2Constraints0.test_equivalence.<locals>.<listcomp>=   s/    BBB"

2=#4#455BBBr   r#   r$   r%   c                 ^    g | ])}                     t          j        |                    *S r   r(   r   s     r   r   z7TestL2Constraints0.test_equivalence.<locals>.<listcomp>A   s/    GGGrSZZb(9(9::GGGr   r   )r   r   shaperB   rC   r   oneseyer   Tr!   r   r   )r   r   kpen2pen3fdd2pen_d2_r   s             @r   test_equivalencez#TestL2Constraints0.test_equivalence3   s9   hKGAJ)"'!**===)bfQii@@@HHQSMMIIacNNhBBBBBBBCC4L 	< 	<DDIIacNNADtDDDDDJJqsOOQTEEEE8GGGGQGGGHHCC%d;;;;;		< 	<r   N)r5   r6   r7   classmethodrG   r\   r   r   r   r9   r9   +   s<        / / [/
< < < < <r   r9   c                   *    e Zd Zed             Zd ZdS )TestL2Constraints1c                     t          j        ddd          }t          j        ||f          | _        t	          j        ddgddgg          | _        d S )Nr<   r=   r>   rI   r   rL   r?   rD   s     r   rG   zTestL2Constraints1.setup_classG   sO    [sB''_b"X..
,1Q%!QIIIr   c                     | j         }| j        }|j        }|                    |j                  dz                      d          }t          |                    |j                  |dd           d S )Nr+   r   r#   r$   r%   )r   r   rM   dotrS   sumr   r   )r   r   r   rrW   s        r   test_valueszTestL2Constraints1.test_valuesM   sc    hKOUU13ZZ]""qt$??????r   N)r5   r6   r7   r]   rG   re   r   r   r   r_   r_   E   sD        J J [J
@ @ @ @ @r   r_   c                   $    e Zd Zed             ZdS )TestSmoothedSCADc                     t          j        ddd          }t          j        ||f          | _        t	          j        dd          | _        d S )Nr<   r=   r>   g?)tauc0)r   r@   rA   r   rB   SCADSmoothedr   rD   s     r   rG   zTestSmoothedSCAD.setup_classW   sE    [sB''_b"X..
$$777r   Nr5   r6   r7   r]   rG   r   r   r   rg   rg   U   s-        8 8 [8 8 8r   rg   c                   6    e Zd Zed             Zd Zd Zd ZdS )TestPseudoHuberc                     t          j        ddd          }t          j        ||f          | _        t	          j        d          | _        d S )Nr<   r=   r>   皙?)r   r@   rA   r   rB   PseudoHuberr   rD   s     r   rG   zTestPseudoHuber.setup_class`   s@    [sB''_b"X..
#C((r   c                 b    dg}t          j        d|          }t          |j        |           d S )N      ?rp   rJ   rB   rq   r   rK   r   wtsr   s      r   test_backward_compatibilityz+TestPseudoHuber.test_backward_compatibilityf   s6    eS111S[#&&&&&r   c                 b    dg}t          j        d|          }t          |j        |           d S )N      ?rp   rJ   rt   r   rK   r   s      r   test_deprecated_priorityz(TestPseudoHuber.test_deprecated_priorityk   s6    %W555S['*****r   c                 d    ddg}t          j        d|          }t          |j        |           d S )Nry          @rp   rJ   rt   rz   s      r   test_weights_assignmentz'TestPseudoHuber.test_weights_assignmentq   s8    *W555S['*****r   Nr5   r6   r7   r]   rG   rw   r{   r~   r   r   r   rn   rn   ^   sZ        ) ) [)
' ' '
+ + ++ + + + +r   rn   c                   6    e Zd Zed             Zd Zd Zd ZdS )TestL2c                     t          j        ddd          }t          j        ||f          | _        t	          j                    | _        d S r;   )r   r@   rA   r   rB   L2r   rD   s     r   rG   zTestL2.setup_classy   s;    [sB''_b"X..
(**r   c                 `    dg}t          j        |          }t          |j        |           d S )Nrs   rJ   rB   r   r   rK   ru   s      r   rw   z"TestL2.test_backward_compatibility   s3    ehs###S[#&&&&&r   c                 `    dg}t          j        |          }t          |j        |           d S )Nry   rJ   r   rz   s      r   r{   zTestL2.test_deprecated_priority   s3    %hw'''S['*****r   c                 b    ddg}t          j        |          }t          |j        |           d S )Nry   r}   rJ   r   rz   s      r   r~   zTestL2.test_weights_assignment   s5    *hw'''S['*****r   Nr   r   r   r   r   r   w   sZ          [
' ' '
+ + +
+ + + + +r   r   c                   $    e Zd Zed             ZdS )TestNonePenaltyc                     t          j        ddd          }t          j        ||f          | _        t	          j                    | _        d S r;   )r   r@   rA   r   rB   NonePenaltyr   rD   s     r   rG   zTestNonePenalty.setup_class   s>    [sB''_b"X..
#%%r   Nrl   r   r   r   r   r      s-        & & [& & &r   r   )__doc__numpyr   numpy.testingr   r   statsmodels.base._penaltiesbase
_penaltiesrB   statsmodels.tools.numdiffr   r   r   r9   r_   rg   rn   r   r   r   r   r   <module>r      s        7 7 7 7 7 7 7 7 + + + + + + + + + @ @ @ @ @ @ @ @7 7 7 7 7 7 7 78< < < < < < < <4@ @ @ @ @ @ @ @ 8 8 8 8 8| 8 8 8+ + + + +l + + +2+ + + + +\ + + +0& & & & &l & & & & &r   