
    "g,                        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	 d dlmZ dZ ej.                  d        ej2                  g dg d	g d
g dg dg dg dg dg dg dg dg dg dgg d      Zd Zd Zd Zd Zej>                  jA                  ed      d        Z!ej>                  jD                  d        Z#d Z$d  Z%ej>                  jD                  d!        Z&y# e$ r dZY w xY w)"    N)	PD_LT_1_4)Factor)assert_equalassert_array_almost_equalassert_assert_raisesassert_array_equalassert_array_lessassert_allcloseFAggT)Minas Graes%C @g(\ @HzG?   r   )r   r   gd;O @oʡ?   r   )r   Q @r   +?   r   )r   g- @X9v @r      r   )r   gV- @g      @gS㥛?   r   )r   gQ@g^I+@gL7A`?   r   )Matto Grossog\(\ @g;On @r      r   )r   gS㥛 @gNbX9 @r      r   )r   r   r   }?5^I?	   r   )r   gS @gx @r   
   r   )
Santa Cruzr   gbX9 @禛 r?   r   )r    g @g+ @g+?   r   )r    gE @g+ @r!      r   )LocBasalOccMaxidalt)columnsc                  z    t        d dt        j                  d      d d      } t        | j                  g d       y )Nr   r"   F)correndog_namessmc)var00var01var02var03var04var05var06var07var08var09var10)r   npeyer	   r.   mods    g/var/www/dash_apps/app1/venv/lib/python3.12/site-packages/statsmodels/multivariate/tests/test_factor.pytest_auto_col_namer@   *   s4    
qrvvbztCsEF    c            
          t        d dt        j                  t        j                  d d ddf   d      d      } | j                  d	      }t        j                  d
dgddgddgddgg      }t        |j                  |d       t        j                  d d ddf   j                  | _
        t        | j                  g d       t        t        t        | dt        j                  d d d df   j                         y )Nr   r   r   )rowvarF)r-   r/   绽|=tolW~?L?|Uy?9;?Hت?vS(Ci7(?OCW+r   decimal)r&   r'   r(   r)   r.   )r   r;   corrcoefXilocfitarrayr   loadingsr+   r.   r	   r   
ValueErrorsetattr)r>   resultsas      r?   test_direct_corr_matrixr\   3   s    
qr{{166!QrT'?1ECgg%g G
>#45!#45!#56!#568 	9A g..1=ffQ"Wo--COs(EF *gsM&&BQB-'')rA   c                      t        t        j                  d d ddf   dd      } t        t        | j
                         y )Nr   rC   r   abmethod)r   rS   rT   r   rX   rU   r=   s    r?   test_unknown_fa_method_errorra   F   s.    
1R4!D
1C*cgg&rA   c                     t        t        j                  d d ddf   dd      } | j                  d      }t	        j
                  dd	gd
dgddgddgg      }t        |j                  |d       t        t        j                  d d ddf   dd      } | j                         }t	        j
                  ddgddgddgddgg      }t        |j                  |d       |j                  d       t	        j
                  ddgddgd d!gd"d#gg      }t        |j                  |d       |j                  d$       t	        j
                  g d%g d&g      }t        |j                  |j                  d       |j                  d'       |j                  d(       |j                  d)       |j                  d*       t	        j
                  g d+g d,g      }t        |j                  |j                  d       |j                  d       d-}|j                         j                         }d.j                  d/ |j                         D              d.z   }t        ||       y )0Nr   rC   r   Fr/   rE   rF   rH   rI   rJ   rK   rL   rM   rN   rO   r   rP   Tgq6?g^z?gIC?g/8A?gᖏ?guYɿg%q^?g_Sݿvarimaxg?6?g_g1B,?g85ÿg Aχ?g;gr^?gT	quartimax)gwFͨ?g
p?g
?gw5/g?)g#* ?gA?g[ "ҿgcN߿equamaxpromaxbiquartiminoblimin)gm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              3   <   K   | ]  }|j                           y w)N)rstrip).0lines     r?   	<genexpr>z3test_example_compare_to_R_output.<locals>.<genexpr>   s     Et{{}Es   )r   rS   rT   rU   r;   rV   r   rW   rotateTsummaryas_textjoin
splitlinesr   )r>   rZ   r[   desiredactuals        r?    test_example_compare_to_R_outputrx   L   s?   : 1R4!
/Cgg%g G
>#45!#45!#56!#568 	9A g..1= 1R4!
.CggiG
:z*z*j){+- 	.A g..1= NN9
:{+{+y){+- 	.A g..1=NN;
BHJ 	KAg..Q?NN9NN8NN=!NN9
 #DF 	GA g..Q? NN9& P __&&(FYYE1B1B1DEELF!rA   zmatplotlib not available)reasonc                     t        t        j                  d d dd f   d      }|j                         }|j	                  d       |j                         }|j                         }t        dt        |             y )Nr   r   ri   )	r   rS   rT   rU   rp   
plot_screeplot_loadingsr   len)close_figuresr>   rZ   figfig_loadingss        r?   
test_plotsr      s^    
12
"CggiGNN9



C((*LC%&rA   c                     t        t        j                  d d ddf   dd      } | j                         }|j	                  d      }t        t        |t        j                               |j	                  dd	d
      }	 ddl	m
} t        rCt        j                         5  t        j                  d       |j!                          d d d        n|j"                  j!                          	 ddlm} |j	                  d      }t        t        ||j"                  j*                               t        t        |j,                  t        j                               |j	                  dd	d       |j	                  dd	d       |j	                  dd	ddd       y # t        $ r Y y w xY w# 1 sw Y   xY w# t        $ r	 ddlm} Y w xY w)Nr   rC   r   Trc   raw)stylestringsr   g333333?)r   decimals	thresholdr   )Templatealways)formatsdisplayg?	GAINSBORO)r   r   	color_maxg?F)r   r   r   highlight_maxsort_)r   rS   rT   rU   get_loadings_framer   
isinstancepd	DataFramejinja2r   ImportErrorr   warningscatch_warningssimplefilterto_latexr   	pandas.ior   pandasStylerdata)r>   resdfldsr   
pd_formatsldfs          r?   test_getframe_smoker      s    1R4!
.C
'')C			e		,BJr2<<()

 
 y1
 
LC# $$& 	!!(+LLN	 	
 			13 
 
 y
 
1CJsJ,,3345Jsxx./Q#FQ+NQ$V[chi3  	 	  101s0    F  &F&*F2 	F#"F#&F/2GGc                  j   t         j                  d d ddf   j                         } | j                  \  }}t        j
                  | j                  d<   t        | d      }t        |j                  |dz
         t        |j                  |       t        |j                  j                  |dz
  |f       y )Nr   rC   )r   r   r   )rS   rT   copyshaper;   nanr   r   nobsk_endogendog)xmr   r   r>   s       r?   test_factor_missingr      s    	
1R4			BHHMD'66BGGCL
Q-C4!8$g&4!8W"56rA   c                 N    | | j                  d      z
  | j                  d      z  S )Nr   )meanstd)xs    r?   _zscorer     s!    q	MQUU1X%%rA   c                  ,   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      }|j                  d       |j                  d	      }t        |dd
gz  |ddg   j                  dd       |j                         }t        |dd
gz  |ddg   j                  dd       |j                  d	      }	|j                  d	      }
t        |      }t        |	      }t        |
      }t        d||z  j!                  d             t        d||z  j!                  d             |j                  d       t        |j#                         d   dd       |j                  d	      }t        |dd
gz  |ddg   j                  dd       |j                         }t        |dd
gz  |ddg   j                  dd       |j                  d	      }	|j                  d	      }
t        |      }t        |	      }t        |
      }t        d||z  j!                  d             t        d||z  j!                  d             |j                  d|j$                  j&                         }t        ||	d!       y )"NrZ   zfactor_data.csvzfactors_stata.csvr   r   )maxiterrd   regr_   rC   f1f2g-C6?gMbP?)atolrtolf1bf2bolsglsg\(\?r   g+?ri   )r   r   gxjп)r   f1of2of1obf2obg
ףp=
?)r`   r   gvIh%<=)ospathabspath__file__dirnamert   r   read_csvr   rU   rp   factor_scoringr   valuesr   r
   r   _corr_factorsmodelr   )r   dir_pathcsv_pathyf_sr>   r   f_regf_bartf_olsf_glsf_reg_zf_ols_zf_gls_zf_ols2s                  r?   test_factor_scoringr     s   77??8$Dwwt$Hww||Hi1BCH
HAww||Hi1DEH
++h
C
A,C
''!'
CJJye,EEQGOS$%6%=%=D*!FFaW$c5%.&9&@&@D* e,Ee,EenGenGenGdWw.44Q78eg/55a89 JJyC%%'-0AMe,EEQGOS%%8%?%?D*!FFaW$c66*:&;&B&BD* e,Ee,EenGenGenGdWw.44Q78eg/55a89 uCIIOODFFE.rA   )'r   statsmodels.compat.pandasr   r   numpyr;   r   r   statsmodels.multivariate.factorr   numpy.testingr   r   r   r   r	   r
   r   pytestmatplotlib.pyplotpyplotpltmissing_matplotlibswitch_backendr   r   rS   r@   r\   ra   rx   markskipifr   smoker   r   r   r    rA   r?   <module>r      s1    / 	   2? ? ? #Cu BLL<<<<<<===><<<> EF F)&'t"n &/IJ' K' 'j 'jT7&
 1/ 1/k  s   C9 9DD