U
    Ãmœd-  ã                   @   sØ  d dl Z d dlmZ d dl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mZmZmZ d dlZzd dlmZ dZe d¡ W n ek
rš   dZY nX ejdd	d
ddd gdd	ddddgdddddd gddddddgdddddd gddddddgddd dd!d gdd"d#dd$dgdddd%d&d gdd'd(d%d)dgd*dd+d,d-d gd*d.d/d0d1dgd*d2d3d,d4d ggd5d6d7d8d9d:gd;�Zd<d=„ Zd>d?„ Zd@dA„ ZdBdC„ Zejj edDdE�dFdG„ ƒZ!ejj"dHdI„ ƒZ#dJdK„ Z$dLdM„ Z%ejj"dNdO„ ƒZ&dS )Pé    N)Ú	PD_LT_1_4)ÚFactor)Úassert_equalÚassert_array_almost_equalÚassert_Úassert_raisesÚassert_array_equalÚassert_array_lessÚassert_allcloseFZAggTzMinas Graesg%�•C‹ @g�Âõ(\� @gHáz®Gù?é   gd;ßO�— @goƒÀÊ¡ù?é   g¸…ëQ¸ @g+‡ÙÎù?é   g-²�ï§Æ @gX9´Èv¾ @é   gV-²�ï @g      @gÏ÷Sã¥›ú?é   g…ëQ¸@g^ºI+@gL7‰A`åú?é   zMatto Grossog\�Âõ(\ @g;ßO�—n @é   gÏ÷Sã¥› @gNbX9´ @é   g}?5^ºIú?é	   gÙÎ÷Sã @g¶óýÔxé @é
   z
Santa CruzgbX9´È @g¦›Ä °rú?é   gÍÌÌÌÌÌ @g+‡Ù @g+‡ÙÎ÷ù?é   g¢E¶óýÔ @g+‡ÙÎ @é   ZLocÚBasalÚOccÚMaxÚidZalt)Úcolumnsc                  C   s>   t d dt d¡d dd�} t| jddddd	d
dddddgƒ d S )Nr   r   F)ÚcorrÚendog_namesÚsmcZvar00Zvar01Zvar02Zvar03Zvar04Zvar05Zvar06Zvar07Zvar08Zvar09Zvar10)r   ÚnpÚeyer   r   ©Úmod© r$   úc/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/statsmodels/multivariate/tests/test_factor.pyÚtest_auto_col_name+   s    ÿ    ÿÿr&   c               	   C   sÀ   t d dtjtjd d …dd…f dd�dd�} | jdd	�}t d
dgddgddgddgg¡}t|j|dd� tjd d …dd…f j	| _
t| j
ddddgƒ ttt| dtjd d …d d…f j	ƒ d S )Nr   r   éÿÿÿÿr   )ZrowvarF)r   r   ç»½×Ùß|Û=©ZtolçÊWÄ~äî?çâŸâL¨éÌ?ç|øUyöî?ç9¯­;Ë?ç¼HŽØªÁí?çvS¶¸(ÄC¿çi´7(ß?çOCˆW+Ôë¿r   ©Údecimalr   r   r   r   r   )r   r    ZcorrcoefÚXÚilocÚfitÚarrayr   Úloadingsr   r   r   r   Ú
ValueErrorÚsetattr)r#   ÚresultsÚar$   r$   r%   Útest_direct_corr_matrix4   s    $ÿ
ý
ÿr=   c                  C   s0   t tjd d …dd…f ddd�} tt| jƒ d S )Nr   r'   r   Úab©Úmethod)r   r4   r5   r   r9   r6   r"   r$   r$   r%   Útest_unknown_fa_method_errorG   s     rA   c                  C   sÊ  t tjd d …dd…f ddd�} | jdd�}t dd	gd
dgddgddgg¡}t|j|dd� t tjd d …dd…f ddd�} |  ¡ }t ddgddgddgddgg¡}t|j|dd� | d¡ t ddgddgd d!gd"d#gg¡}t|j|dd� | d$¡ t d%d&d'd(gd)d*d+d,gg¡}t|j|j	dd� | d-¡ | d.¡ | d/¡ | d0¡ t d1d2d3d4gd5d6d7d8gg¡}t|j|j	dd� | d¡ d9}| 
¡  ¡ }d: d;d<„ | ¡ D ƒ¡d: }t||ƒ d S )=Nr   r'   r   F©r   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r   r2   Tg†ë¬q‘6ï?g–^z¬õÉ?gIC«“ï?g/8A£�Æ?gá–�¤¤Çî?g½uY§É¿g%q^µ•Ø?gÛ¨î_SÝ¿Úvarimaxg?6 ï?g˜_�À¿g1ÎB¯ý,ï?g8Èû£5§Ã¿g ÇAÏ‡ë?g¹§«;à¿gñ“r×^Ê?g±ƒï¢TÇá¿Z	quartimaxgwFßÍ¨ï?g 
pï?gú
óî?gÜw5/gÕ?g£#ßÃ* ¾?g²¨ò·éA¶?g[®ˆ "Ò¿g†íÓcNß¿ZequamaxZpromaxZbiquartiminÚobliming¾¡žmtð?gµ©?FSð?gÕ&*üåûæ?gh2[I8µ!¿gNärQgÍ°?g× £n-´Ÿ?g¤}AE´aÙ¿g@Ã8½öâ¿aJ     Factor analysis results
=============================
      Eigenvalues
-----------------------------
 Basal   Occ    Max      id
-----------------------------
 2.9609 0.3209 0.0000 -0.0000
-----------------------------

-----------------------------
      Communality
-----------------------------
  Basal   Occ    Max     id
-----------------------------
  0.9926 0.9727 0.9654 0.3511
-----------------------------

-----------------------------
   Pre-rotated loadings
-----------------------------------
            factor 0       factor 1
-----------------------------------
Basal         0.9754         0.2028
Occ           0.9711         0.1721
Max           0.9619        -0.2004
id            0.3757        -0.4582
-----------------------------

-----------------------------
   varimax rotated loadings
-----------------------------------
            factor 0       factor 1
-----------------------------------
Basal         0.9883        -0.1259
Occ           0.9742        -0.1535
Max           0.8442        -0.5027
id            0.2060        -0.5556
=============================
Ú
c                 s   s   | ]}|  ¡ V  qd S )N)Úrstrip)Ú.0Úliner$   r$   r%   Ú	<genexpr>À   s     z3test_example_compare_to_R_output.<locals>.<genexpr>)r   r4   r5   r6   r    r7   r   r8   ÚrotateÚTÚsummaryZas_textÚjoinÚ
splitlinesr   )r#   r;   r<   ZdesiredÚactualr$   r$   r%   Ú test_example_compare_to_R_outputM   sX     
ý 
ý

ý

ÿ




ÿ
þ
ÿ(rP   zmatplotlib not available)Úreasonc                 C   sP   t tjd d …dd …f dƒ}| ¡ }| d¡ | ¡ }| ¡ }tdt|ƒƒ d S )Nr   r   rD   )	r   r4   r5   r6   rJ   Z
plot_screeZplot_loadingsr   Úlen)Zclose_figuresr#   r;   ZfigZfig_loadingsr$   r$   r%   Ú
test_plotsÄ   s    
rS   c               	   C   sL  t tjd d …dd…f ddd�} |  ¡ }|jdd�}tt|tjƒƒ |jdd	d
d�}zddl	m
} W n tk
rz   Y d S X tr¨t ¡ � t d¡ | ¡  W 5 Q R X n
|j ¡  zddlm} W n  tk
râ   ddlm} Y nX |jdd�}tt||jjƒƒ tt|jtjƒƒ |jdd	dd� |jdd	dd� |jdd	dddd� d S )Nr   r'   r   TrB   Úraw)ÚstyleÚstringsr   g333333Ó?)rU   ÚdecimalsÚ	thresholdr   )ÚTemplateÚalways)ÚformatsÚdisplaygš™™™™™É?Z	GAINSBORO)rU   rW   Z	color_maxgÍÌÌÌÌÌÜ?F)rU   rW   rX   Zhighlight_maxZsort_)r   r4   r5   r6   Zget_loadings_framer   Ú
isinstanceÚpdÚ	DataFrameZjinja2rY   ÚImportErrorr   ÚwarningsÚcatch_warningsÚsimplefilterZto_latexrU   Z	pandas.ior[   ÚpandasZStylerÚdata)r#   ÚresZdfZldsrY   Z
pd_formatsZldfr$   r$   r%   Útest_getframe_smokeÏ   s0     


rg   c                  C   sp   t jd d …dd…f  ¡ } | j\}}tj| jd< t| dƒ}t|j|d ƒ t|j	|ƒ t|j
j|d |fƒ d S )Nr   r'   )r   r   r   )r4   r5   ÚcopyÚshaper    Únanr   r   ÚnobsÚk_endogÚendog)Zxmrk   rl   r#   r$   r$   r%   Útest_factor_missingú   s    

rn   c                 C   s   | |   d¡ |  d¡ S )Nr   )ÚmeanZstd)Úxr$   r$   r%   Ú_zscore  s    rq   c                  C   s  t j t¡} t j | ¡}t j |dd¡}t |¡}t j |dd¡}t |¡}t|dƒ}|j	dd�}| 
d¡ |jdd	�}t|dd
g |ddg jddd� | ¡ }t|dd
g |ddg jddd� |jdd	�}	|jdd	�}
t|ƒ}t|	ƒ}t|
ƒ}td||  d¡ƒ td||  d¡ƒ | 
d¡ t| ¡ d ddd� |jdd	�}t|dd
g |ddg jddd� | ¡ }t|dd
g |ddg jddd� |jdd	�}	|jdd	�}
t|ƒ}t|	ƒ}t|
ƒ}td||  d¡ƒ td||  d¡ƒ |jd|jjd �}t||	d!d� d S )"Nr;   zfactor_data.csvzfactors_stata.csvr   r   )ÚmaxiterrC   Úregr?   r'   Úf1Úf2g-Cëâ6?gü©ñÒMbP?)ZatolÚrtolZf1bZf2bZolsZglsg\�Âõ(\ï?r   g+‡ÙÎ÷ï?rD   )r   r   gð�xªjÐ¿)rv   Zf1oZf2oZf1obZf2obg
×£p=
ï?)r@   rm   g‚vIhÂ%<=)ÚosÚpathÚabspathÚ__file__ÚdirnamerM   r^   Zread_csvr   r6   rJ   Zfactor_scoringr
   Úvaluesrq   r	   ro   Z_corr_factorsÚmodelrm   )rx   Zdir_pathZcsv_pathÚyZf_sr#   rf   Zf_regZf_bartZf_olsZf_glsZf_reg_zZf_ols_zZf_gls_zZf_ols2r$   r$   r%   Útest_factor_scoring	  s^    



 ÿ ÿ
 ÿ ÿr   )'ra   Zstatsmodels.compat.pandasr   rw   Únumpyr    rd   r^   Zstatsmodels.multivariate.factorr   Znumpy.testingr   r   r   r   r   r	   r
   ZpytestZmatplotlib.pyplotZpyplotZpltZmissing_matplotlibZswitch_backendr`   r_   r4   r&   r=   rA   rP   ÚmarkZskipifrS   Zsmokerg   rn   rq   r   r$   r$   r$   r%   Ú<module>   sR   $
ôó	w


*
