U
    md-                     @   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(\ @gHzG?   gd;O @goʡ?   gQ @g+?   g- @gX9v @   gV- @g      @gS㥛?   gQ@g^I+@gL7A`?   zMatto Grossog\(\ @g;On @   gS㥛 @gNbX9 @   g}?5^I?	   gS @gx @
   z
Santa CruzgbX9 @g r?   g @g+ @g+?   gE @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tolW~?L?|Uy?9;?Hت?vS(Ci7(?OCW+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   Tgq6?g^z?gIC?g/8A?gᖏ?guYɿg%q^?g_Sݿvarimaxg?6?g_g1B,?g85ÿg Aχ?g;gr^?gTZ	quartimaxgwFͨ?g
p?g
?gw5/g?g#* ?gA?g[ "ҿgcN߿ZequamaxZpromaxZbiquartiminoblimingmt?g?FS?g&*?gh2[I8!gNrQgͰ?g n-?g}AEaٿ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rt  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?gMbP?)ZatolrtolZf1bZf2bZolsZglsg\(\?r   g+?rD   )r   r   gxjп)rv   Zf1oZf2oZf1obZf2obg
ףp=
?)r@   rm   gvIh%<=)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


*
