
    'YHh	                         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 Zd Zej                  dz  Zd	 Zd
 Zedk(  r e        yy)ztests 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                     | dd  \  }}}||j                   z  d   }t        ||z  |j                   d       t        ||z  |j                  d       t        ||j                  j	                         d       y )N   r      )coefr   factorsvaluesravel)pcaresprincompr   evalsevecsmsigns         [/var/www/html/planif/env/lib/python3.12/site-packages/statsmodels/sandbox/tests/test_pca.pycheck_pca_princompr      sj    "12JGUE8== !$EeEk8=="=eGmX-=-=rBeX__%:%:%<bA    c                     | \  }}}}|\  }}}}	t        ||d       ||	z  d   }
t        |
|	z  |d       t        |
|z  |d       t        ||d       y )N   r   r   r   )r   	pcasvdresxreducedr   r   r   xred_svdfactors_svd	evals_svd	evecs_svdr   s              r   check_pca_svdr"      se    '-#Hgue2;/Hk9ii39_a EeIoub9eK/"=h"5r   g     @@c                     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   j                  d      z
        } t        | t               t        t        d dd d f   t        d dd d f   j                  d      z
  d      } t        | t               y )N   r   )demean)r   xfr   r   r   meanr	   )r   s    r   test_pca_princompr(   &   s    WFvy)CRCE^Fvy)CRCE2crc!e9>>!,,-Fvy)CRCE2crc!e9>>!,,Q7Fvy)r   c                  T   t        t              \  } }}}t        j                  |t        j                  |j
                  d   df      f   }t        j                  t        j                  j                  |      t              }t        |j                  d d d df   |d       t        t        d      \  }}}}	t        ||d       ||	z  d   }
t        |
|	z  |d       t        |
|z  |d       t        || d       t        t        d      }t        t        d      }t        ||       y )	Nr   r      r   )keepdimr         )r   r&   npc_onesshapedotlinalgpinvr   Tr   r"   )r   r   r   r   factors_wconstbetar   r   r    r!   r   r   r   s                r   test_pca_svdr8   1   s    '*2w#HgueUU7BGGW]]1-=a,@$AABN66"))..0"5DdffQrrTlE2628Q2G/Hk9ii39_a EeIoub9eK/"=h"5QFr1%I&)$r   __main__)__doc__numpyr.   numpy.testingr   statsmodels.sandbox.toolsr   r   .statsmodels.multivariate.tests.results.datamlwr   r   r	   r
   r   r"   xor&   r(   r8   __name__ r   r   <module>rB      sW     3 1+ +B6 
WWU]*%* zN r   