
    'YHhS*                        d Z ddlmZmZ ddlmZ ddlZddlZddl	m
Z
 ddlmZmZmZmZ ddlZddlZddlmZ ddlmZ dd	lmZ  ej2                  d
      d        Z G d d      Zd Zd Zd Zd Zd Z  G d d      Z! G d d      Z"y)z!
Test functions for models.tools
    )assert_frame_equalassert_series_equal)lrangeN)standard_normal)assert_almost_equalassert_array_equalassert_equalassert_string_equal)longley)tools)pinv_extendedmodule)scopec                  2   t         j                  dd t         j                  dd t         j                  dd t         j                  dd t         j                  dd g} | dz  } t        j                  t	        |             } t        j                  | d      }|S )	Nr      
            
string_varname)stringascii_lowercasenpasarraysortedpdSeries)r   seriess     [/var/www/html/planif/env/lib/python3.12/site-packages/statsmodels/tools/tests/test_tools.pyr   r      s     	q#q$r"%r"%r"%J !OJF:./JYYz5FM    c                   T    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zy)	TestToolsc                     t        dd      }t        j                  |      }t        j                  g dg dg      j
                  }t        ||       y N   r   r'   r'   r'   r'   r'               @)r   r   add_constantr   r   Tr	   selfxys      r!   test_add_constant_listz TestTools.test_add_constant_list)   s@    1aLq!JJn5688Qr"   c                     t        j                  dd      }t        j                  |      }t        j                  g dg dg      j
                  }t        ||       y r&   )r   aranger   r-   r   r.   r	   r/   s      r!   test_add_constant_1dzTestTools.test_add_constant_1d/   sD    IIaOq!JJn5688Qr"   c                    t        j                  d      }t        j                  |d      }t	        |t        j                  d             t        j                  t              5  t        j                  |d       d d d        t	        t        j                  |d      t        j                  d             y # 1 sw Y   >xY w)Nr   skiphas_constant)r   r'   raiseadd)r   r*   )r   onesr   r-   r	   pytestraises
ValueError)r0   r1   s     r!    test_add_constant_has_constant1dz*TestTools.test_add_constant_has_constant1d5   s    GGAJqv6Q(]]:& 	8qw7	8 	qu5rwwv	
	8 	8s   %B::Cc                    t        j                  g dg dg      j                  }t        j                  |d      }t        ||       t        j                  t              5  t        j                  |d       d d d        t        t        j                  |d      t        j                  t        j                  d      |f             y # 1 sw Y   SxY w)Nr(   r)   r8   r9   r;   r<      )r   r   r.   r   r-   r	   r>   r?   r@   column_stackr=   r/   s      r!    test_add_constant_has_constant2dz*TestTools.test_add_constant_has_constant2dA   s    JJn5688qv6Q]]:& 	8qw7	8 	qu5OORWWQZO,	
	8 	8s   "CCc                     t        j                  g d      }t        j                  |      }t        j                  g dd      }t	        ||d          y )N)      ?       @      @rG   rG   rG   constr   )r   r   r   r-   r   )r0   soutputexpecteds       r!   test_add_constant_seriesz"TestTools.test_add_constant_seriesN   s>    IIo&##A&99_7;HfWo6r"   c                 >   t        j                  g dg dg dg      }t        j                  |      }t        j                  g dd      }t        ||d          |j                         }|j                  ddt        j                  d             t        ||       y )	N)rG   arC   )rH   bc	   )rI   def   rJ   rK   r   r   r+   )r   	DataFramer   r-   r   r   copyinsertr   r=   r   )r0   dfrM   rN   dfcs        r!   test_add_constant_dataframez%TestTools.test_add_constant_dataframeT   ss    \\=.:JKL##B'99_7;HfWo6ggi

1grwwqz*3'r"   c                     t        j                  d      }t        j                  |      }t	        |d d df   t        j
                  d             t        j                  g d      }t        j                  |      }t        j                  g dd      }t        ||d          t        j                  g dg dg d	g      }t        j                  |      }|j                         }|j                  ddt        j
                  d
             t        ||       t        j                  g dg dg dg      }t        j                  |      }|j                         }|j                  ddt        j
                  d
             t        ||       y )Nd   r   )        r^   r^   rJ   rK   r   )r^   rQ   rC   )r^   rR   rS   )r^   rT   rU   r+   )rG   rQ   r   )r^   rR   r   )r^   rT   r   )r   zerosr   r-   r	   r=   r   r   r   rV   rW   rX   r   )r0   rQ   rM   rL   rN   rY   rZ   s          r!   test_add_constant_zerosz!TestTools.test_add_constant_zeros]   s   HHSM##A&VAqD\2773<0IIo&##A&99_7;HfWo6\\=.:JKL##B'ggi

1grwwqz*3'\\=./JK##B'ggi

1grwwqz*3'r"   c                     t        j                  ddgddgg      }t        j                  |      }t	        |t        j                  ddgddgg             y )Nr*   r'   r         ?)r   arrayr   reciprr   r0   XYs      r!   test_reciprzTestTools.test_reciprs   sJ    HHq!fr1g&'LLOArxx#qAq6(:;<r"   c                     t        j                  ddgddgg      }t        j                  |      }t	        |t        j                  ddgddgg             y )Nr*   r'   r   rc   g      п)r   rd   r   recipr0r   rf   s      r!   test_recipr0zTestTools.test_recipr0x   sK    HHq!fr1g&'MM!Arxx#qE1:(>?@r"   c                     t        d      }t        j                  j                  |      }t        j                  j	                  |dd      }t        |      \  }}t        ||       t        ||       y )N(   r   r   r   r   linalgpinvsvdr   r   r0   rg   np_invnp_sing_valssm_inv	sing_valss         r!   test_extendedpinvzTestTools.test_extendedpinv}   sW    H%"yy}}Q1-)!,	FF+L)4r"   c                    t        d      }|d d df   |d d df   z   |d d df<   t        j                  j                  |      }t        j                  j	                  |dd      }t        |      \  }}t        ||       t        ||       y )Nro   r'   r+   r   r   rq   ru   s         r!   test_extendedpinv_singularz$TestTools.test_extendedpinv_singular   sy    H%AqD'AadG#!Q$"yy}}Q1-)!,	FF+L)4r"   c                    dd l }|j                         5  |j                  d       t        d      }|d d df   |d d df   z   |d d df<   t	        j
                  |      }t        |j                  d       |d d df   |d d df   z   |d d d	f<   t	        j
                  |      }t        |j                  d
       |j                  d       d d d        y # 1 sw Y   y xY w)Nr   ignorero   r'   r*   )rp   rS   r+   rC   r   )rp      )warningscatch_warningssimplefilterr   r   fullrankr	   shape)r0   r   rg   rh   s       r!   test_fullrankzTestTools.test_fullrank   s    $$& 	,!!(+)A1g!Q$'AadGq!A'*1g!Q$'AadGq!A'*!!(+	, 	, 	,s   B8CCN)__name__
__module____qualname__r3   r6   rA   rE   rO   r[   r`   ri   rm   rz   r|   r    r"   r!   r$   r$   (   s?    


7((,=
A
55,r"   r$   c                  &   t         j                  j                  d      } d\  }}| j                  ||f      }| j                  d|f      }t        j
                  } |||      sJ  |t        j                  |      |      sJ t        j                  |      D ]  } |||      rJ  t        j                  d      } |ddg|      sJ  |ddg|      rJ  |ddg|      rJ  |t        j                  d      |      rJ | j                  |df      }t        j                  ||g      } |t        j                  t        j                  d      t        j                  d	      g      |      rJ  |t        j                  t        j                  d	      t        j                  d      g      |      rJ  |t        j                  t        j                  d      t        j                  d      g      |      sJ |j                         } |t        j                  t        j                  d      t        j                  d      g      |      sJ | j                  |df      }t        dd
      D ]A  }	t        j                  t              5   |t        j                  |	f      |       d d d        C t        j                  t              5   |t        j                  d
      |       d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Ni3ro   )sizer'   )rp   r*   r   r*   r   )r   r   rC   )r   randomRandomStatenormalr   isestimableeyer=   hstackr_   tolistranger>   r?   r@   )
rngNPrg   Cr   rowhalfXXLns
             r!   test_estimabler      s   
))


)CDAq

A
A

A
A##Kq!rvvay!$$$vvay #3"""#
A1vq!!!Aq61%%%Aq61%%%266!9a(((JJQFJ#E
		5%.!A299bffQi&1A%BCQGGG299bhhv&6q	%BCQGGGryy"&&)RVVAY!78!<<<	
Bryy"&&)RVVAY!78"===

A
A1a[ *]]:& 	*q)	* 	** 
z	" "BFF1Iq!" "	* 	*" "s   K;L;L	Lc                      t        j                         } | j                  d   }t        j                  |d      }t        d|j                  d          t        |j                  d      j                  d   d       y )NGNPFprependrK   r'   r   
r   load_pandasexogr   r-   r
   columnsr	   varilocdtar    s     r!   test_pandas_const_seriesr      s_    



CXXe_F6F!23A##A&*r"   c                      t        j                         } | j                  d   }t        j                  |d      }t        d|j                  d          t        |j                  d      j                  d   d       y )Nr   Tr   rK   r   r   r   s     r!    test_pandas_const_series_prependr      s_    



CXXe_F5F!23A##A&*r"   c                      t        j                         j                  } t        j                  | d      } t        d| j                  d          t        | j                  d      j                  d   d       y )NFr   rK   rb   r   r   r   s    r!   test_pandas_const_dfr      sU    




$
$C


S%
0CR1$a(r"   c                  ,   t        j                         j                  } | dxx   | d   j                         z  cc<   t	        j
                  | d      } t        d| j                  d          t        | j                  d      j                  d   d       y )NUNEMPTr   rK   r   )r   r   r   stdr   r-   r
   r   r	   r   r   r   s    r!   test_pandas_const_df_prependr      sp    




$
$CLCL$$&&L


S$
/CQ0#Q'r"   c                   X    e Zd Zed        Zd Zd Zd Zd Zd Z	d Z
d Zd	 Zd
 Zd Zy)
TestNanDotc                    t         j                  }t        j                  |dgddgg      | _        t        j                  ||gddgg      | _        t        j                  ddgddgg      | _        t        j                  ddgddgg      | _        t        j                  ddgddgg      | _        t        j                  ddgddgg      | _        y )NrG   rH   rI   r^   r,   )	r   nanrd   mx_1mx_2mx_3mx_4mx_5mx_6)clsr   s     r!   setup_classzTestNanDot.setup_class   s    ff88c3Z#s4588c3Z#s4588c3Z#s4588c3Z#s4588c3Z#s4588c3Z#s45r"   c                     t        j                  | j                  | j                        }t        j                  t        j
                  t        j
                  gt        j
                  dgg      }t        ||       y )Ng      &@)r   nan_dotr   r   rd   r   r   )r0   test_resexpected_ress      r!   test_11zTestNanDot.test_11   sL    ==DII6xx"&&"&&!1BFFD> BC8\2r"   c                     t         j                  }t        j                  | j                  | j
                        }t        j                  ||g||gg      }t        ||       y )N)r   r   r   r   r   r   rd   r   r0   r   r   r   s       r!   test_12zTestNanDot.test_12   H    ff==DII6xx#sc3Z 898\2r"   c                     t         j                  }t        j                  | j                  | j
                        }t        j                  ddgddgg      }t        ||       y Nr^   )r   r   r   r   r   r   rd   r   r   s       r!   test_13zTestNanDot.test_13   r   r"   c                     t         j                  }t        j                  | j                  | j
                        }t        j                  |dgddgg      }t        ||       y Nr^   g      @)r   r   r   r   r   r   rd   r   r   s       r!   test_14zTestNanDot.test_14   r   r"   c                     t         j                  }t        j                  | j                  | j
                        }t        j                  |dg|dgg      }t        ||       y )NrG   )r   r   r   r   r   r   rd   r   r   s       r!   test_41zTestNanDot.test_41  r   r"   c                     t         j                  }t        j                  | j                  | j
                        }t        j                  ddgddgg      }t        ||       y r   )r   r   r   r   r   r   rd   r   r   s       r!   test_23zTestNanDot.test_23  r   r"   c                     t         j                  }t        j                  | j                  | j
                        }t        j                  ddgddgg      }t        ||       y r   )r   r   r   r   r   r   rd   r   r   s       r!   test_32zTestNanDot.test_32  r   r"   c                     t         j                  }t        j                  | j                  | j
                        }t        j                  |dgddgg      }t        ||       y r   )r   r   r   r   r   r   rd   r   r   s       r!   test_24zTestNanDot.test_24  r   r"   c                     t         j                  }t        j                  | j                  | j
                        }t        j                  d|gddgg      }t        ||       y r   )r   r   r   r   r   r   rd   r   r   s       r!   test_25zTestNanDot.test_25  r   r"   c                     t         j                  }t        j                  | j                  | j                        }t        j
                  ddgddgg      }t        ||       y )Ng      @g      $@g      .@g      6@)r   r   r   r   r   rd   r   r   s       r!   test_66zTestNanDot.test_66  sH    ff==DII6xx#ttTl ;<8\2r"   N)r   r   r   classmethodr   r   r   r   r   r   r   r   r   r   r   r   r"   r!   r   r      sF    6 63
333333333r"   r   c                   .    e Zd Zed        Zd Zd Zd Zy)TestEnsure2dc                     t        j                  d      j                  d      }t        j                  |g d      | _        | j
                  j                  d d df   | _        || _        y )Ng      y@)r]   rC   )rQ   bcd)r   r   )	r   r5   reshaper   rV   rY   r   r    ndarray)r   r1   s     r!   r   zTestEnsure2d.setup_class'  sM    IIe$$X.a)=>VV[[A&
r"   c                    t        j                  | j                  d      }t        |d   | j                         t        |d   | j                  j
                         t        j                  | j                  d      }t        |d   | j                  d d dgf          t        |d   | j                  j
                  d          y )NTr   r'   )r   
_ensure_2drY   r   r   r   r    r0   resultss     r!   test_enfore_numpyzTestEnsure2d.test_enfore_numpy.  s    ""477D171:t||471:tww7""4;;571:t||AsF';<71:twwq'9:r"   c                    t        j                  | j                  d      }t        |d   | j                         t	        |d   | j                  j
                         t        j                  | j                  d      }t        |d   | j                  j                  d d dgf          t        |d   | j                  j
                  d          y )NFr   r'   )	r   r   rY   r   r   r   r    r   r	   r   s     r!   test_pandaszTestEnsure2d.test_pandas6  s    ""477E271:tww/71:tww7""4;;671:tww||AsF';<WQZ!34r"   c                 >   t        j                  | j                        }t        |d   | j                         t	        |d   d        t        j                  | j                  d d df         }t        |d   | j                  d d dgf          t	        |d   d        y )Nr   r'   )r   r   r   r   r	   r   s     r!   
test_numpyzTestEnsure2d.test_numpy?  s~    ""4<<071:t||4WQZ&""4<<1#5671:t||AsF';<WQZ&r"   N)r   r   r   r   r   r   r   r   r   r"   r!   r   r   &  s#     ;5'r"   r   )#__doc__statsmodels.compat.pandasr   r   statsmodels.compat.pythonr   r   numpyr   numpy.randomr   numpy.testingr   r   r	   r
   pandasr   r>   statsmodels.datasetsr   statsmodels.toolsr   statsmodels.tools.toolsr   fixturer   r$   r   r   r   r   r   r   r   r   r"   r!   <module>r      s    N ,   (    ( # 1 h  t, t,n"@++)(D3 D3N '  'r"   