
    M/Ph	                         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             dS dS )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                                        d           d S )N   r      )coefr   factorsvaluesravel)pcaresprincompr   evalsevecsmsigns         b/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/statsmodels/sandbox/tests/test_pca.pycheck_pca_princompr      s~    "122JGUE8= !$EeEk8="===eGmX-=rBBBeX_%:%:%<%<bAAAAA    c                     | \  }}}}|\  }}}}	t          ||d           ||	z  d         }
t          |
|	z  |d           t          |
|z  |d           t          ||d           d S )N   r   r   r   )r   	pcasvdresxreducedr   r   r   xred_svdfactors_svd	evals_svd	evecs_svdr   s              r   check_pca_svdr"      s    '-#Hgue2;/Hk9ii3339_a EeIoub999eK/"===h"55555r   g     @@c                  6   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          z
            } t          | t                     t          t          d dd d f         t          d dd d f                             d          z
  d          } t          | t                     d S )N   r   )demean)r   xfr   r   r   meanr	   )r   s    r   test_pca_princompr(   &   s    WWFvy)))CRCE^^Fvy)))CRCE2crc!!!e9>>!,,,--Fvy)))CRCE2crc!!!e9>>!,,,Q777Fvy)))))r   c                     t          t                    \  } }}}t          j        |t          j        |j        d         df          f         }t          j        t          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          ||           d S )	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   s4   '*2ww#HgueU7BGW]1-=a,@$A$AABN6")..00"55DdfQQQrrTlE266628Q2G2G2G/Hk9ii3339_a EeIoub999eK/"===h"55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      s         3 3 3 3 3 3 1 1 1 1 1 1 1 1+ + + + + + + + + + + +B B B6 6 6 
WU]* * *% % %* zLNNNNN r   