U
    Kvf-                     @   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   npZeyer   r   mod r#   N/tmp/pip-unpacked-wheel-2v6byqio/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   r3   r4   r   r8   r5   r!   r#   r#   r$   test_unknown_fa_method_errorG   s     r@   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.   r/   r0   r   r1   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   r3   r4   r5   r    r6   r   r7   rotateTsummaryZas_textjoin
splitlinesr   )r"   r:   r;   Zdesiredactualr#   r#   r$    test_example_compare_to_R_outputM   sX     
 











(rO   zmatplotlib not available)reasonc                 C   sP   t tjd d dd f d}| }|d | }| }tdt| d S )Nr   r   rC   )	r   r3   r4   r5   rI   Z
plot_screeZplot_loadingsr   len)Zclose_figuresr"   r:   ZfigZfig_loadingsr#   r#   r$   
test_plots   s    
rR   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   TrA   raw)stylestringsr   g333333?)rT   decimals	thresholdr   )Templatealways)formatsZdisplayg?Z	GAINSBORO)rT   rV   Z	color_maxg?F)rT   rV   rW   Zhighlight_maxZsort_)r   r3   r4   r5   Zget_loadings_framer   
isinstancepd	DataFrameZjinja2rX   ImportErrorr   warningscatch_warningssimplefilterZto_latexrT   Z	pandas.iorZ   pandasZStylerdata)r"   resZdfZldsrX   Z
pd_formatsZldfr#   r#   r$   test_getframe_smoke   s0     


re   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   )r3   r4   copyshaper    nanr   r   nobsk_endogendog)Zxmri   rj   r"   r#   r#   r$   test_factor_missing   s    

rl   c                 C   s   | |  d | d S )Nr   )meanZstd)xr#   r#   r$   _zscore  s    ro   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   )maxiterrB   regr>   r&   f1f2g-C6?gMbP?)ZatolrtolZf1bZf2bZolsZglsg\(\?r   g+?rC   )r   r   gxjп)rt   Zf1oZf2oZf1obZf2obg
ףp=
?)r?   rk   gvIh%<=)ospathabspath__file__dirnamerL   r\   Zread_csvr   r5   rI   Zfactor_scoringr
   valuesro   r	   rm   Z_corr_factorsmodelrk   )rv   Zdir_pathZcsv_pathyZf_sr"   rd   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}   )'r_   Zstatsmodels.compat.pandasr   ru   Znumpyr    rb   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]   r3   r%   r<   r@   rO   markZskipifrR   Zsmokere   rl   ro   r}   r#   r#   r#   r$   <module>   sR   $
	w


*
