U
    Ãmœd¯	  ã                   @   s|   d Z ddlZddlmZ ddlmZmZ ddlm	Z	m
Z
mZmZ dd„ Zdd	„ Zejd
 Zdd„ Zdd„ Zedkrxeƒ  dS )zótests for pca and arma to ar and ma representation

compared with matlab princomp, and garchar, garchma

TODO:
* convert to generators with yield to have individual tests
* incomplete: test relationship of pca-evecs and pinv (adding constant)
é    N©Úassert_array_almost_equal)ÚpcaÚpcasvd)Ú	princomp1Ú	princomp2Ú	princomp3Údatac                 C   sZ   | dd … \}}}||j  d }t|| |j dƒ t|| |jdƒ t||j ¡ dƒ d S )Né   r   é   )Zcoefr   ÚfactorsÚvaluesZravel)ÚpcaresZprincompr   ÚevalsÚevecsÚmsign© r   ú[/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/statsmodels/sandbox/tests/test_pca.pyÚcheck_pca_princomp   s
    r   c                 C   s`   | \}}}}|\}}}}	t ||dƒ ||	 d }
t |
|	 |dƒ t |
| |dƒ t ||dƒ d S )Né   r   r   r   )r   Ú	pcasvdresÚxreducedr   r   r   Úxred_svdÚfactors_svdÚ	evals_svdÚ	evecs_svdr   r   r   r   Úcheck_pca_svd   s    r   g     @�@c                  C   s´   t tƒ} t| tƒ t td d…d d …f ƒ} t| tƒ t td d…d d …f td d…d d …f  d¡ ƒ} t| tƒ t td d…d d …f td d…d d …f  d¡ dd�} t| tƒ d S )Né   r   )Zdemean)r   Úxfr   r   r   Zmeanr   )r   r   r   r   Útest_pca_princomp&   s    

2
6r   c                  C   sÞ   t tƒ\} }}}tj|t |jd df¡f }t tj |¡t¡}t	|j
d d …d d…f |dƒ ttdd�\}}}}	t	||dƒ ||	 d }
t	|
|	 |dƒ t	|
| |dƒ t	|| dƒ t tdd�}ttdd�}t||ƒ d S )	Nr   r
   é   r   )Zkeepdimr   é   é   )r   r   ÚnpZc_ZonesÚshapeÚdotZlinalgZpinvr   ÚTr   r   )r   r   r   r   Zfactors_wconstÚbetar   r   r   r   r   r   r   r   r   r   Útest_pca_svd1   s    r(   Ú__main__)Ú__doc__Únumpyr#   Znumpy.testingr   Zstatsmodels.sandbox.toolsr   r   Z.statsmodels.multivariate.tests.results.datamlwr   r   r   r	   r   r   Zxor   r   r(   Ú__name__r   r   r   r   Ú<module>   s   	

