
    M/PhS*                     .   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j        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"dS )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                  @   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     b/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/statsmodels/tools/tests/test_tools.pyr   r      s     	qs#qt$r"u%r"u%r"u%J !OJF:..//JYz555FM    c                   V    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dS )	TestToolsc                     t          dd          }t          j        |          }t          j        g dg dg          j        }t          ||           d S 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)   sT    1aLLq!!Jnnn5668Qr"   c                     t          j        dd          }t          j        |          }t          j        g dg dg          j        }t          ||           d S r&   )r   aranger   r-   r   r.   r	   r/   s      r!   test_add_constant_1dzTestTools.test_add_constant_1d/   sV    IaOOq!!Jnnn5668Qr"   c                    t          j        d          }t          j        |d          }t	          |t          j        d                     t          j        t                    5  t          j        |d           d d d            n# 1 swxY w Y   t	          t          j        |d          t          j        d                     d S )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    GAJJqv666Q(((]:&& 	8 	8qw7777	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	qu555rwv	
 	
 	
 	
 	
s   &B		BBc                    t          j        g dg dg          j        }t          j        |d          }t          ||           t          j        t                    5  t          j        |d           d d d            n# 1 swxY w Y   t          t          j        |d          t          j	        t          j
        d          |f                     d S )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   Jnnn5668qv666Q]:&& 	8 	8qw7777	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	qu555ORWQZZO,,	
 	
 	
 	
 	
s   BB	Bc                     t          j        g d          }t          j        |          }t          j        g dd          }t	          ||d                    d S )N)      ?       @      @rG   rG   rG   constr   )r   r   r   r-   r   )r0   soutputexpecteds       r!   test_add_constant_seriesz"TestTools.test_add_constant_seriesN   sW    Iooo&&#A&&9___7;;;HfWo66666r"   c                 ^   t          j        g dg dg dg          }t          j        |          }t          j        g dd          }t          ||d                    |                                }|                    ddt          j	        d                     t          ||           d S )	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   s    \===...:J:J:JKLL#B''9___7;;;HfWo666ggii

1grwqzz***3'''''r"   c                 V   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        |          }|
                                }|                    ddt          j        d
                     t          ||           t          j	        g dg dg dg          }t          j        |          }|
                                }|                    ddt          j        d
                     t          ||           d S )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]   su   HSMM#A&&VAAAqD\273<<000Iooo&&#A&&9___7;;;HfWo666\===...:J:J:JKLL#B''ggii

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

1grwqzz***3'''''r"   c                     t          j        ddgddgg          }t          j        |          }t	          |t          j        ddgddgg                     d S )Nr*   r'   r         ?)r   arrayr   reciprr   r0   XYs      r!   test_reciprzTestTools.test_reciprs   sX    Hq!fr1g&''LOOArx#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                     d S )Nr*   r'   r   rc   g      п)r   rd   r   recipr0r   rf   s      r!   test_recipr0zTestTools.test_recipr0x   sZ    Hq!fr1g&''M!Arx#qE1:(>??@@@@@r"   c                    t          d          }t          j                            |          }t          j                            |dd          }t          |          \  }}t          ||           t          ||           d S )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}   sq    H%%""y}}Q1--)!,,	FF+++L)44444r"   c                 H   t          d          }|d d df         |d d df         z   |d d df<   t          j                            |          }t          j                            |dd          }t          |          \  }}t          ||           t          ||           d S )Nro   r'   r+   r   r   rq   ru   s         r!   test_extendedpinv_singularz$TestTools.test_extendedpinv_singular   s    H%%AAAqD'AaaadG#!!!Q$""y}}Q1--)!,,	FF+++L)44444r"   c                    dd l }|                                5  |                    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
           |                    d           d d d            d S # 1 swxY w Y   d S )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   sT   $$&& 	, 	,!!(+++))A1g!!!Q$'AaaadGq!!A'***1g!!!Q$'AaaadGq!!A'***!!(+++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,s   CC22C69C6N)__name__
__module____qualname__r3   r6   rA   rE   rO   r[   r`   ri   rm   rz   r|   r    r"   r!   r$   r$   (   s            

 

 


 
 
7 7 7( ( (( ( (,= = =
A A A
5 5 55 5 5, , , , ,r"   r$   c                  ~   t           j                            d          } d\  }}|                     ||f          }|                     d|f          }t          j        } |||          sJ  |t          j        |          |          sJ t          j        |          D ]} |||          sJ t          j        d          } |ddg|          sJ  |ddg|          rJ  |ddg|          rJ  |t          j        d          |          r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 |
                                } |t          j        t          j        d          t          j        d          g          |          sJ |                     |df          }t          dd
          D ]R}	t          j        t                    5   |t          j        |	f          |           d d d            n# 1 swxY w Y   St          j        t                    5   |t          j        d
          |           d d d            d S # 1 swxY w Y   d S )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!;rvayy!$$$$$vayy # #{3""""""
A;1vq!!!!!{Aq61%%%%%{Aq61%%%%%{26!99a(((((JJQFJ##E
	5%.!!A{29bfQii&1A1A%BCCQGGGGG{29bhv&6&6q		%BCCQGGGGG;ry"&))RVAYY!788!<<<<<	
B;ry"&))RVAYY!788"=====

A
A1a[[ * *]:&& 	* 	*Kq)))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*	z	"	" " "BF1IIq!!!" " " " " " " " " " " " " " " " " "s$   5 K!!K%	(K%	L22L69L6c                     t          j                    } | j        d         }t          j        |d          }t          d|j        d                    t          |                    d          j	        d         d           d S )NGNPFprependrK   r'   r   
r   load_pandasexogr   r-   r
   columnsr	   varilocdtar    s     r!   test_pandas_const_seriesr      so    



CXe_F666F!2333A#A&*****r"   c                     t          j                    } | j        d         }t          j        |d          }t          d|j        d                    t          |                    d          j	        d         d           d S )Nr   Tr   rK   r   r   r   s     r!    test_pandas_const_series_prependr      so    



CXe_F555F!2333A#A&*****r"   c                      t          j                    j        } t          j        | d          } t          d| j        d                    t          |                     d          j	        d         d           d S )NFr   rK   rb   r   r   r   s    r!   test_pandas_const_dfr      se    




$C

S%
0
0
0CR111$a(((((r"   c                  D   t          j                    j        } | dxx         | d                                         z  cc<   t	          j        | d          } t          d| j        d                    t          | 	                    d          j
        d         d           d S )NUNEMPTr   rK   r   )r   r   r   stdr   r-   r
   r   r	   r   r   r   s    r!   test_pandas_const_df_prependr      s    




$CLLLCL$$&&&LLL

S$
/
/
/CQ000#Q'''''r"   c                   `    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dS )
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          | _        d S )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    f8c3Z#s4558c3Z#s4558c3Z#s4558c3Z#s4558c3Z#s4558c3Z#s455r"   c                     t          j        | j        | j                  }t          j        t          j        t          j        gt          j        dgg          }t          ||           d S )Ng      &@)r   nan_dotr   r   rd   r   r   )r0   test_resexpected_ress      r!   test_11zTestNanDot.test_11   sP    =DI66x"&"&!1BFD> BCC8\22222r"   c                     t           j        }t          j        | j        | j                  }t          j        ||g||gg          }t          ||           d S )N)r   r   r   r   r   r   rd   r   r0   r   r   r   s       r!   test_12zTestNanDot.test_12   P    f=DI66x#sc3Z 8998\22222r"   c                     t           j        }t          j        | j        | j                  }t          j        ddgddgg          }t          ||           d S 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          ||           d S 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          ||           d S )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          ||           d S 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          ||           d S 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          ||           d S 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          ||           d S 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          ||           d S )Ng      @g      $@g      .@g      6@)r   r   r   r   r   rd   r   r   s       r!   test_66zTestNanDot.test_66  sP    f=DI66x#ttTl ;<<8\22222r"   N)r   r   r   classmethodr   r   r   r   r   r   r   r   r   r   r   r   r"   r!   r   r      s        6 6 [63 3 3
3 3 33 3 33 3 33 3 33 3 33 3 33 3 33 3 33 3 3 3 3r"   r   c                   6    e Zd Zed             Zd Zd Zd ZdS )TestEnsure2dc                     t          j        d                              d          }t          j        |g d          | _        | j        j        d d df         | _        || _        d S )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'  s_    Ie$$X..a)=)=)=>>>V[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                    d S )NTr   r'   )r   
_ensure_2drY   r   r   r   r    r0   resultss     r!   test_enfore_numpyzTestEnsure2d.test_enfore_numpy.  s    "47D1171:t|44471:tw777"4;5571:t|AAAsF';<<<71:tw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                    d S )NFr   r'   )	r   r   rY   r   r   r   r    r   r	   r   s     r!   test_pandaszTestEnsure2d.test_pandas6  s    "47E2271:tw///71:tw777"4;6671:tw|AAAsF';<<<WQZ!344444r"   c                 X   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            d S )Nr   r'   )r   r   r   r   r	   r   s     r!   
test_numpyzTestEnsure2d.test_numpy?  s    "4<0071:t|444WQZ&&&"4<1#56671:t|AAAsF';<<<WQZ&&&&&r"   N)r   r   r   r   r   r   r   r   r   r"   r!   r   r   &  sZ          [; ; ;5 5 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 M M M M M M M , , , , , ,      ( ( ( ( ( (                 ( ( ( ( ( ( # # # # # # 1 1 1 1 1 1 h   t, t, t, t, t, t, t, t,n" " "@+ + ++ + +) ) )( ( (D3 D3 D3 D3 D3 D3 D3 D3N '  '  '  '  '  '  '  '  '  'r"   