
    !g1                        d dl Zd dlmZ d dlmZ d dlmZ  e       Zej                  j                  Z	 eej                  j                  d      Zej                   eej                  d      cZZ G d d      Z G d	 d
      Z G d d      Z G d d      Z G d d      Z G d d      Z G d d      Z G d d      Z G d d      Z G d d      Z G d d      Z G d d      Zy)    N)load_pandas)OaxacaBlinder)add_constantF)prependc                   "    e Zd Zed        Zd Zy)
TestOaxacac                 8    t        t        t        d      | _        y )N   r   endogexogmodelclss    `/var/www/dash_apps/app1/venv/lib/python3.12/site-packages/statsmodels/stats/tests/test_oaxaca.pysetup_classzTestOaxaca.setup_class   s    !%q1	    c                    t         j                  j                  d       t        j                  g d      }t        j                  g d      }t        j                  g d      }| j                  j                         j                  \  }}}}| j                  j                         j                  \  }}	}| j                  j                  d      j                  \  }
}}t         j                  j                  ||d   d       t         j                  j                  ||d   d       t         j                  j                  ||d   d       t         j                  j                  ||d   d       t         j                  j                  ||d   d       t         j                  j                  |	|d   d       t         j                  j                  ||d   d       t         j                  j                  |
|d   d       t         j                  j                  ||d   d       t         j                  j                  ||d   d       y )	Nr   d]Fc@-t@g	R@ rmr   gClY`@gzNz;@)Gh@g93Lm%P@gLBx@Tr
         )nprandomseedarrayr   
three_foldparamstwo_foldstdtestingassert_almost_equal)selfstata_resultsstata_results_pooledstata_results_stdendowcoefintergapunexpexp	endow_varcoef_var	inter_vars                r   test_resultszTestOaxaca.test_results   s   
		q!JK!xx(FGHH%HI"&**"7"7"9"@"@tUC**--/66sC)-)>)>t)D)H)H&	8Y


&&sM!,<a@


&&umA.>B


&&t]1-=qA


&&umA.>B


&&s,@,CQG


&&s,@,CQG


&&u.B1.EqI


&&y2CA2FJ


&&x1B11EqI


&&y2CA2FJr   N__name__
__module____qualname__classmethodr   r4    r   r   r   r      s    2 2Kr   r   c                   "    e Zd Zed        Zd Zy)TestOaxacaNoSwapc                 <    t        t        t        dd      | _        y )Nr
   Fswapr   r   s    r   r   zTestOaxacaNoSwap.setup_class3   s    !%qu=	r   c                    t        j                  g d      }t        j                  g d      }| j                  j                         j                  \  }}}}| j                  j                         j                  \  }}}t         j                  j                  ||d   d       t         j                  j                  ||d   d       t         j                  j                  ||d   d       t         j                  j                  ||d   d       t         j                  j                  ||d   d       t         j                  j                  ||d   d       t         j                  j                  ||d   d       y N)d]FcgTg]C_d@r   )rB   gClY`gzNz;r   r
   r   r   r   r    r   r!   r"   r#   r%   r&   	r'   r(   r)   r+   r,   r-   r.   r/   r0   s	            r   r4   zTestOaxacaNoSwap.test_results7       !LM!xx(IJ"&**"7"7"9"@"@tUC**--/66sC


&&sM!,<a@


&&umA.>B


&&t]1-=qA


&&umA.>B


&&s,@,CQG


&&s,@,CQG


&&u.B1.EqIr   Nr5   r:   r   r   r<   r<   2   s    > >Jr   r<   c                   "    e Zd Zed        Zd Zy)TestOaxacaPandasc                 8    t        t        t        d      | _        y )NOWNRENTr   pd_endogpd_exogr   r   s    r   r   zTestOaxacaPandas.setup_classG   s    !(GY?	r   c                    t        j                  g d      }t        j                  g d      }| j                  j                         j                  \  }}}}| j                  j                         j                  \  }}}t         j                  j                  ||d   d       t         j                  j                  ||d   d       t         j                  j                  ||d   d       t         j                  j                  ||d   d       t         j                  j                  ||d   d       t         j                  j                  ||d   d       t         j                  j                  ||d   d       y Nr   r   r   r
   r   r   rC   rD   s	            r   r4   zTestOaxacaPandas.test_resultsK       !JK!xx(FG"&**"7"7"9"@"@tUC**--/66sC


&&sM!,<a@


&&umA.>B


&&t]1-=qA


&&umA.>B


&&s,@,CQG


&&s,@,CQG


&&u.B1.EqIr   Nr5   r:   r   r   rG   rG   F   s    @ @Jr   rG   c                   "    e Zd Zed        Zd Zy)TestOaxacaPandasNoSwapc                 <    t        t        t        dd      | _        y )NrI   Fr>   rJ   r   s    r   r   z"TestOaxacaPandasNoSwap.setup_class[   s    !(GYUK	r   c                    t        j                  g d      }t        j                  g d      }| j                  j                         j                  \  }}}}| j                  j                         j                  \  }}}t         j                  j                  ||d   d       t         j                  j                  ||d   d       t         j                  j                  ||d   d       t         j                  j                  ||d   d       t         j                  j                  ||d   d       t         j                  j                  ||d   d       t         j                  j                  ||d   d       y rA   rC   rD   s	            r   r4   z#TestOaxacaPandasNoSwap.test_results_   rE   r   Nr5   r:   r   r   rQ   rQ   Z   s    L LJr   rQ   c                   "    e Zd Zed        Zd Zy)TestOaxacaNoConstPassedc                     t        t        j                  j                  t        j                  j                  dd      | _        y )Nr
   Fhasconstr   	pandas_dfr   valuesr   r   r   s    r   r   z#TestOaxacaNoConstPassed.setup_classo   s+    !OO""INN$9$91u
	r   c                    t        j                  g d      }t        j                  g d      }| j                  j                         j                  \  }}}}| j                  j                         j                  \  }}}t         j                  j                  ||d   d       t         j                  j                  ||d   d       t         j                  j                  ||d   d       t         j                  j                  ||d   d       t         j                  j                  ||d   d       t         j                  j                  ||d   d       t         j                  j                  ||d   d       y rN   rC   rD   s	            r   r4   z$TestOaxacaNoConstPassed.test_resultsu   rO   r   Nr5   r:   r   r   rU   rU   n       
 

Jr   rU   c                   "    e Zd Zed        Zd Zy)TestOaxacaNoSwapNoConstPassedc                     t        t        j                  j                  t        j                  j                  ddd      | _        y )Nr
   FrX   r?   rY   r   s    r   r   z)TestOaxacaNoSwapNoConstPassed.setup_class   s1    !OO""NN!!
	r   c                    t        j                  g d      }t        j                  g d      }| j                  j                         j                  \  }}}}| j                  j                         j                  \  }}}t         j                  j                  ||d   d       t         j                  j                  ||d   d       t         j                  j                  ||d   d       t         j                  j                  ||d   d       t         j                  j                  ||d   d       t         j                  j                  ||d   d       t         j                  j                  ||d   d       y rA   rC   rD   s	            r   r4   z*TestOaxacaNoSwapNoConstPassed.test_results   rE   r   Nr5   r:   r   r   r_   r_          
 
Jr   r_   c                   "    e Zd Zed        Zd Zy)TestOaxacaPandasNoConstPassedc                 d    t        t        j                  t        j                  dd      | _        y )NrI   FrW   r   rZ   r   r   r   r   s    r   r   z)TestOaxacaPandasNoConstPassed.setup_class   s    !OOY^^Y
	r   c                    t        j                  g d      }t        j                  g d      }| j                  j                         j                  \  }}}}| j                  j                         j                  \  }}}t         j                  j                  ||d   d       t         j                  j                  ||d   d       t         j                  j                  ||d   d       t         j                  j                  ||d   d       t         j                  j                  ||d   d       t         j                  j                  ||d   d       t         j                  j                  ||d   d       y rN   rC   rD   s	            r   r4   z*TestOaxacaPandasNoConstPassed.test_results   rO   r   Nr5   r:   r   r   re   re      r]   r   re   c                   "    e Zd Zed        Zd Zy)#TestOaxacaPandasNoSwapNoConstPassedc                 f    t        t        j                  t        j                  ddd      | _        y )NrI   Fra   rg   r   s    r   r   z/TestOaxacaPandasNoSwapNoConstPassed.setup_class   s%    !OONN
	r   c                    t        j                  g d      }t        j                  g d      }| j                  j                         j                  \  }}}}| j                  j                         j                  \  }}}t         j                  j                  ||d   d       t         j                  j                  ||d   d       t         j                  j                  ||d   d       t         j                  j                  ||d   d       t         j                  j                  ||d   d       t         j                  j                  ||d   d       t         j                  j                  ||d   d       y rA   rC   rD   s	            r   r4   z0TestOaxacaPandasNoSwapNoConstPassed.test_results   rE   r   Nr5   r:   r   r   rj   rj      rc   r   rj   c                   "    e Zd Zed        Zd Zy)TestOneModelc                     t         j                  j                  d       t        t        j
                  t        j                  dd      j                  ddd      | _        y )	Nr   rI   FrW   Tself_submittedr   two_fold_typesubmitted_weight)	r   r   r   r   rZ   r   r   r#   	one_modelr   s    r   r   zTestOneModel.setup_class   sC    
		q%OOY^^Y

(4'7!(
L 	r   c                 .   | j                   j                  \  }}}| j                   j                  \  }}t        j                  g d      }t        j                  ddg      }t        j
                  j                  ||d   d       t        j
                  j                  ||d   d       t        j
                  j                  ||d   d       t        j
                  j                  ||d   d       t        j
                  j                  ||d   d       y )N)g~k	R@g~oӟT@3c@gA	3m%P@g/Q@r   r
   r   r   )rt   r"   r$   r   r    r%   r&   )r'   r/   r0   r.   	unexp_stdexp_stdone_params_stata_resultsone_std_stata_resultss           r   r4   zTestOneModel.test_results   s    ..//sC!^^//	7#%88,K#L  "(H)= >


&&u.Fq.I1M


&&s,DQ,GK


&&s,DQ,GK


&&y2G2JAN


&&w0Ea0H!Lr   Nr5   r:   r   r   rn   rn      s    M MMr   rn   c                   "    e Zd Zed        Zd Zy)TestZeroModelc                     t         j                  j                  d       t        t        j
                  t        j                  dd      j                  ddd      | _        y )Nr   rI   FrW   Trp   rq   )	r   r   r   r   rZ   r   r   r#   
zero_modelr   s    r   r   zTestZeroModel.setup_class   sC    
		q&OOY^^Y

(4'7!(
L 	r   c                 .   | j                   j                  \  }}}| j                   j                  \  }}t        j                  g d      }t        j                  ddg      }t        j
                  j                  ||d   d       t        j
                  j                  ||d   d       t        j
                  j                  ||d   d       t        j
                  j                  ||d   d       t        j
                  j                  ||d   d       y )N)g]C_dr   rv   g>yX5@r   r   r
   r   r   )r~   r"   r$   r   r    r%   r&   )r'   r/   r0   r.   rw   rx   zero_params_stata_resultszero_std_stata_resultss           r   r4   zTestZeroModel.test_results   s    //00sC!__00	7$&HH-M$N!!#8Y*?!@


&&u.G.JAN


&&s,Ea,H!L


&&s,Ea,H!L


&&y2H2KQO


&&w0Fq0I1Mr   Nr5   r:   r   r   r|   r|      s    M MNr   r|   c                   "    e Zd Zed        Zd Zy)TestOmegaModelc                     t         j                  j                  d       t        t        j
                  t        j                  dd      j                  dd      | _        y )Nr   rI   FrW   Tnuemark)rr   )	r   r   r   r   rZ   r   r   r#   omega_modelr   s    r   r   zTestOmegaModel.setup_class   s@    
		q'OOY^^Y

(4y(
1 	r   c                 .   | j                   j                  \  }}}| j                   j                  \  }}t        j                  g d      }t        j                  ddg      }t        j
                  j                  ||d   d       t        j
                  j                  ||d   d       t        j
                  j                  ||d   d       t        j
                  j                  ||d   d       t        j
                  j                  ||d   d       y )N)g<1P3@g`9ga@rv   g}͍M@gC H@r   r
   r   r   )r   r"   r$   r   r    r%   r&   )r'   r/   r0   r.   rw   rx   nue_params_stata_resultsnue_std_stata_resultss           r   r4   zTestOmegaModel.test_results  s    **11sC!--11	7#%88,L#M  "(H)= >


&&u.Fq.I1M


&&s,DQ,GK


&&s,DQ,GK


&&y2G2JAN


&&w0Ea0H!Lr   Nr5   r:   r   r   r   r      s    2 2Mr   r   c                   "    e Zd Zed        Zd Zy)TestPooledModelc                     t         j                  j                  d       t        t        j
                  t        j                  dd      j                  d      | _        y )Nr   rI   FrW   T)	r   r   r   r   rZ   r   r   r#   pooled_modelr   s    r   r   zTestPooledModel.setup_class  s<    
		q(OOY^^Y

(4. 	r   c                 .   | j                   j                  \  }}}| j                   j                  \  }}t        j                  g d      }t        j                  ddg      }t        j
                  j                  ||d   d       t        j
                  j                  ||d   d       t        j
                  j                  ||d   d       t        j
                  j                  ||d   d       t        j
                  j                  ||d   d       y )N)gvX;@g
Y`@rv   g{)<hMV@g'
bNM@r   r
   r   r   )r   r"   r$   r   r    r%   r&   )r'   r/   r0   r.   rw   rx   pool_params_stata_resultspool_std_stata_resultss           r   r4   zTestPooledModel.test_results  s    ++22sC!..22	7$&HH.%
! "$9i*@!A


&&u.G.JAN


&&s,Ea,H!L


&&s,Ea,H!L


&&y2H2KQO


&&w0Fq0I1Mr   Nr5   r:   r   r   r   r     s     Nr   r   )numpyr   statsmodels.datasets.ccard.datar   statsmodels.stats.oaxacar   statsmodels.tools.toolsr   rZ   r   r[   r   rK   rL   r   r<   rG   rQ   rU   r_   re   rj   rn   r|   r   r   r:   r   r   <module>r      s     7 2 0M	INN))59OO\NNE& '
K K6J J(J J(J J(J J,J J4J J,J J4M M,N N,M M,N Nr   