
p7]c           @   s{  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 d  d l m Z d  d l Z y& d  d l j Z e Z e j d  Wn e k
 r e Z n Xe 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. d/ d0 d
 g d) d1 d2 d+ d3 d g g d4 d5 d6 d7 d8 d9 d: g Z d;   Z d<   Z d=   Z d>   Z e j j  e d? d@ dA    Z! e j j" dB    Z# dC   Z$ dD   Z% e j j" dE    Z& d S(F   iN(   t   Factor(   t   assert_equalt   assert_array_almost_equalt   assert_raisest   assert_array_equalt   assert_t   assert_array_less(   t   assert_allcloset   Aggs   Minas Graesg%C @g(\ @gHzG?i   i    gd;O @goʡ?i   gQ @g+?i   g- @gX9v @i   gV- @g      @gS㥛?i   gQ@g^I+@gL7A`?i   s   Matto Grossog\(\ @g;On @i   gS㥛 @gNbX9 @i   g}?5^I?i	   gS @gx @i
   s
   Santa CruzgbX9 @g r?i   g @g+ @g+?i   gE @g+ @i   t   columnst   Loct   Basalt   Occt   Maxt   idt   altc          C   s_   t  d  d d t j d  d d  d t }  t |  j d d d d	 d
 d d d d d d g  d  S(   Ni   t   corri   t   endog_namest   smct   var00t   var01t   var02t   var03t   var04t   var05t   var06t   var07t   var08t   var09t   var10(   R    t   Nonet   npt   eyet   FalseR   R   (   t   mod(    (    sI   lib/python2.7/site-packages/statsmodels/multivariate/tests/test_factor.pyt   test_auto_col_name(   s
    !		c       	   C   s  t  d  d d t j t j d  d   d d  f d d d t }  |  j d d	  } t j 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(   Ni   R   i   it   rowvari    R   t   tolg|=gW~?gL?g|Uy?g9;?gHت?gvS(Cgi7(?gOCW+t   decimali   R   R   R   R   R   (   R    R   R   t   corrcoeft   Xt   ilocR!   t   fitt   arrayR   t   loadingsR	   R   R   R   t
   ValueErrort   setattr(   R"   t   resultst   a(    (    sI   lib/python2.7/site-packages/statsmodels/multivariate/tests/test_factor.pyt   test_direct_corr_matrix1   s    :			%c          C   sB   t  t j d  d   d d  f d d d }  t t |  j  d  S(   Ni   ii   t   methodt   ab(   R    R(   R)   R   R-   R*   (   R"   (    (    sI   lib/python2.7/site-packages/statsmodels/multivariate/tests/test_factor.pyt   test_unknown_fa_method_errorD   s    .c          C   s  t  t j d  d   d d  f d d t }  |  j d d  } t j 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 t	 }  |  j   } t j d d g d d g d d g d d g g  } t | j | d d | j
 d  t j d d g d d g d d g d  d! g g  } t | j | d d | j
 d"  t j d# d$ d% d& g d' d( d) d* g g  } t | j | j d d | j
 d+  | j
 d,  | j
 d-  | j
 d.  t j d/ d0 d1 d2 g d3 d4 d5 d6 g g  } t | j | j d d | j
 d  d7 } | j   j   } d8 j d9   | j   D  d8 } t | |  d  S(:   Ni   ii   R   R%   g|=gW~?gL?g|Uy?g9;?gHت?gvS(Cgi7(?gOCW+R&   i   gq6?g^z?gIC?g/8A?gᖏ?guYɿg%q^?g_Sݿt   varimaxg?6?g_g1B,?g85ÿg Aχ?g;gr^?gTt	   quartimaxgwFͨ?g
p?g
?gw5/g?g#* ?gA?g[ "ҿgcN߿t   equamaxt   promaxt   biquartimint   oblimingmt?g?FS?g&*?gh2[I8!gNrQgͰ?g n-?g}AEaٿg@8sJ     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
=============================
s   
c         s   s   |  ] } | j    Vq d  S(   N(   t   rstrip(   t   .0t   line(    (    sI   lib/python2.7/site-packages/statsmodels/multivariate/tests/test_factor.pys	   <genexpr>   s    (   R    R(   R)   R!   R*   R   R+   R   R,   t   Truet   rotatet   Tt   summaryt   as_textt   joint
   splitlinesR   (   R"   R/   R0   t   desiredt   actual(    (    sI   lib/python2.7/site-packages/statsmodels/multivariate/tests/test_factor.pyt    test_example_compare_to_R_outputJ   sJ    .		.				(#t   reasons   matplotlib not availablec         C   sp   t  t j d  d   d d   f d  } | j   } | j d  | j   } | j   } t d t |   d  S(   Ni   i   R:   (	   R    R(   R)   R*   R?   t
   plot_screet   plot_loadingsR   t   len(   t   close_figuresR"   R/   t   figt   fig_loadings(    (    sI   lib/python2.7/site-packages/statsmodels/multivariate/tests/test_factor.pyt
   test_plots   s    (c          C   s  t  t j d  d   d d  f d d t }  |  j   } | j d d  } t t | t j	   | j d d d d	 d
 d  } | j
   y d d l m } Wn t k
 r d  SXy d d l m } Wn! t k
 r d d l m } n X| j d d  } t t | | j j   t t | j t j	   | j d d d d	 d
 d  | j d d d d	 d d  | j d d d d	 d
 d d t d t  d  S(   Ni   ii   R   t   stylet   rawt   stringst   decimalsi   t	   thresholdg333333?(   t   Template(   t   formatst   displayg?t	   color_maxt	   GAINSBOROg?t   highlight_maxt   sort_(   R    R(   R)   R>   R*   t   get_loadings_frameR   t
   isinstancet   pdt	   DataFramet   to_latext   jinja2RU   t   ImportErrort	   pandas.ioRV   t   pandasRP   t   Stylert   dataR!   (   R"   t   rest   dft   ldsRU   t
   pd_formatst   ldf(    (    sI   lib/python2.7/site-packages/statsmodels/multivariate/tests/test_factor.pyt   test_getframe_smoke   s(    .
c          C   s   t  j d  d   d d  f j   }  |  j \ } } t j |  j d <t |  d  } t | j | d  t | j	 |  t | j
 j | d | f  d  S(   Ni   ii   (   i   i   (   R(   R)   t   copyt   shapeR   t   nanR    R   t   nobst   k_endogt   endog(   t   xmRp   Rq   R"   (    (    sI   lib/python2.7/site-packages/statsmodels/multivariate/tests/test_factor.pyt   test_factor_missing   s    %c         C   s   |  |  j  d  |  j d  S(   Ni    (   t   meant   std(   t   x(    (    sI   lib/python2.7/site-packages/statsmodels/multivariate/tests/test_factor.pyt   _zscore   s    c          C   s  t  j j t  }  t  j j |   } t  j j | d d  } t j |  } t  j j | d d  } t j |  } t | d  } | j	 d d  } | j
 d  | j d d	  } t | d d
 g | d d g j d d d d | j   } t | d d
 g | d d g j d d d d | j d d  }	 | j d d  }
 t |  } t |	  } t |
  } t d | | j d   t d | | j d   | j
 d  t | j   d! d" d d | j d d	  } t | d d
 g | d d g j d d d d | j   } t | d d
 g | d d g j d d d d | j d d  }	 | j d d  }
 t |  } t |	  } t |
  } t d | | j d   t d | | j d   | j d d d | j j  } t | |	 d d  d  S(#   NR/   s   factor_data.csvs   factors_stata.csvi   t   maxiteri   R5   R2   t   regit   f1t   f2t   atolg-C6?t   rtolgMbP?t   f1bt   f2bt   olst   glsg\(\?i    g+?R:   gxj?t   f1ot   f2ot   f1obt   f2obg
ףp=
?Rr   gvIh%<=(   i    i   gxjп(   t   ost   patht   abspatht   __file__t   dirnameRC   R^   t   read_csvR    R*   R?   t   factor_scoringR   t   valuesRx   R   Ru   t   _corr_factorst   modelRr   (   R   t   dir_patht   csv_patht   yt   f_sR"   Rg   t   f_regt   f_bartt   f_olst   f_glst   f_reg_zt   f_ols_zt   f_gls_zt   f_ols2(    (    sI   lib/python2.7/site-packages/statsmodels/multivariate/tests/test_factor.pyt   test_factor_scoring   sN    ####('   R   t   numpyR   Rd   R^   t   statsmodels.multivariate.factorR    t   numpy.testingR   R   R   R   R   R   t   numpy.testing.utilsR   t   pytestt   matplotlib.pyplott   pyplott   pltR!   t   missing_matplotlibt   switch_backendRb   R>   R_   R(   R#   R1   R4   RG   t   markt   skipifRO   t   smokeRl   Rt   Rx   R   (    (    (    sI   lib/python2.7/site-packages/statsmodels/multivariate/tests/test_factor.pyt   <module>   sF   .
					w!#	
	