
    "g"                        d dl mZ d dlmZ d dlZ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 d dlmZ d dlmZ d dlmZ d d	lmZ d
Z G d d      Z G d de      Z G d de      Zd Zd Z d Z!d Z"d Z#d Z$d Z%d Z&d Z'y)    )assert_series_equal)StringION)cpunish)loadload_pandas)ols)make_hypotheses_matrices)add_constant)assert_equal3TOTEMP ~ GNPDEFL + GNP + UNEMP + ARMED + POP + YEARc                   l    e Zd Zed        Zd Zd Zd Zd Ze	j                  j                  d        Zy)CheckFormulaOLSc                 "    t               | _        y N)r   data)clss    c/var/www/dash_apps/app1/venv/lib/python3.12/site-packages/statsmodels/formula/tests/test_formula.pysetup_classzCheckFormulaOLS.setup_class   s    6    c                 :    | j                   j                  dk(  sJ y )NTOTEMP)modelendog_namesselfs    r   test_endog_namesz CheckFormulaOLS.test_endog_names   s    zz%%111r   c                 >    | j                   j                  g dk(  sJ y )N)	InterceptGNPDEFLGNPUNEMPARMEDPOPYEAR)r   
exog_namesr   s    r   test_exog_nameszCheckFormulaOLS.test_exog_names   s'    zz$$ )J J 	J Jr   c                     t        j                  | j                  j                  t	        | j
                  j                  d             y )NT)prepend)nptr   r   exogr
   r   r   s    r   test_designzCheckFormulaOLS.test_design#   s-    %diinndC	Er   c                     t        j                  | j                  j                  | j                  j                         y r   )r)   r   r   endogr   r   s    r   
test_endogzCheckFormulaOLS.test_endog'   s$    ))499??;r   c                     t        j                         5  t        j                  dd       | j                  j	                         j                          d d d        y # 1 sw Y   y xY w)Nignorez!kurtosistest only valid for n>=20)warningscatch_warningsfilterwarningsr   fitsummaryr   s    r   test_summaryzCheckFormulaOLS.test_summary*   sN    $$& 	'##H$GIJJNN$$&	' 	' 	's   ?AA&N)__name__
__module____qualname__classmethodr   r   r&   r+   r.   pytestmarksmoker6    r   r   r   r      sH     2JE< [[' 'r   r   c                   (     e Zd Ze fd       Z xZS )TestFormulaPandasc                 t    t               j                  }t        t        |      | _        t
        |           y r   )r   r   r   longley_formular   superr   )r   r   	__class__s     r   r   zTestFormulaPandas.setup_class3   s)    }!!.	r   r7   r8   r9   r:   r   __classcell__rD   s   @r   r@   r@   2        r   r@   c                   (     e Zd Ze fd       Z xZS )TestFormulaDictc                     t               j                  j                         D ci c]  \  }}||j                          }}}t	        t
        |      | _        t        | !          y c c}}w r   )	r   r   itemstolistr   rB   r   rC   r   )r   kvr   rD   s       r   r   zTestFormulaDict.setup_class;   sT    *5-*<*<*B*B*DE$!Q188:EE.	 Fs   A)rE   rG   s   @r   rJ   rJ   :   rH   r   rJ   c                  (   d} t               j                  }t        | |      j                         }d}t	        ||      }|j
                  }|j                  }t        j                  |g dg dg dgd       t        j                  |dgdgd	gg       y )
Nr   z-(GNPDEFL = GNP), (UNEMP = 2), (YEAR/1829 = 1))r      r   r   r   r   )r   r   r   rQ   r   r   r   )r   r   r   r   r   r   ghqA?   r      rQ   )
r   r   r   r4   r	   coefs	constantsr)   assert_almost_equalassert_array_equal)formuladtaresultstest_formulaLCRQs          r   
test_testsr`   B   s    CG
-

C'3##%GBL	!'<	8B
A
AA 6 5 ; =>?A 1sQC!o.r   c                      t        d      } ddlm}  ||       } t        d|       j	                         }t        |j                  j                  | j                         y )Na  "type","income","education","prestige"
"accountant","prof",62,86,82
"pilot","prof",72,76,83
"architect","prof",75,92,90
"author","prof",55,90,76
"chemist","prof",64,86,90
"minister","prof",21,84,87
"professor","prof",64,93,93
"dentist","prof",80,100,90
"reporter","wc",67,87,52
"engineer","prof",72,86,88
"undertaker","prof",42,74,57
"lawyer","prof",76,98,89
"physician","prof",76,97,97
"welfare.worker","prof",41,84,59
"teacher","prof",48,91,73
"conductor","wc",76,34,38
"contractor","prof",53,45,76
"factory.owner","prof",60,56,81
"store.manager","prof",42,44,45
"banker","prof",78,82,92
"bookkeeper","wc",29,72,39
"mail.carrier","wc",48,55,34
"insurance.agent","wc",55,71,41
"store.clerk","wc",29,50,16
"carpenter","bc",21,23,33
"electrician","bc",47,39,53
"RR.engineer","bc",81,28,67
"machinist","bc",36,32,57
"auto.repairman","bc",22,22,26
"plumber","bc",44,25,29
"gas.stn.attendant","bc",15,29,10
"coal.miner","bc",7,7,15
"streetcar.motorman","bc",42,26,19
"taxi.driver","bc",9,19,10
"truck.driver","bc",21,15,13
"machine.operator","bc",21,20,24
"barber","bc",16,26,20
"bartender","bc",16,28,7
"shoe.shiner","bc",9,17,3
"cook","bc",14,22,16
"soda.clerk","bc",12,30,6
"watchman","bc",17,25,11
"janitor","bc",7,20,8
"policeman","bc",34,47,41
"waiter","bc",8,32,10r   )read_csvzprestige ~ income + education)r   pandasrb   r   r4   r   fittedvaluesindex)rZ   rb   r   s      r   test_formula_labelsrf   P   sR      -+ -,C\  
3-C/599;E##))3995r   c                     ddl m}  d}t               }t               j                  }t	        ||      j                         }t        j                  |j                  j                  |j                  |j                        d       y )Nr   )logzQTOTEMP ~ log(GNPDEFL) + log(GNP) + UNEMP + ARMED +
                    POP + YEARrS   )numpyrh   r   r   r   r4   r)   rW   rd   valuespredictr*   )rh   rY   r   rZ   r[   s        r   test_formula_predictrl      sc    "G=D
-

C'3##%GG0077#OODII6;r   c                  V   t        j                  g dg ddg d      } t        d|       j                         }|j	                  |       }t        j
                  g dg d      }t        ||       |j	                  | j                        }t        ||       |j	                  t        j
                  g dg dd            }t        j
                  g dg d      }t        ||       |j	                  dg di      }t        j
                  g dg d	      }t        ||d
       y )NrQ   rT      )yx)   ro   rQ   re   y ~ x)g      ?g       @g      @rq   )re   name)r   rQ   rT   Fcheck_index_type)pd	DataFramer   r4   rk   Seriesr   rq   )r   r[   resultexpecteds       r   test_formula_predict_seriesr}      s    <<ii8	JD'4 $$&G__T"FyyY7H)__TVV$F)__RYYy	LMFyyY7H)__c9-.FyyY7H5Ar   c                      G d dt               } t        j                         j                  } | |      }t	        d|      j                         }|j                  |      }t        j                  |j                  |       t        j                         j                  }t        j                  |j                  d<    | |      }t        j                         j                  j                  |_        t	        d|      j                         }|j                  |      }t        |j                  |       t        t        |      dz   t        t        j                         j                               y )Nc                       e Zd Zd Zd Zy)&test_patsy_lazy_dict.<locals>.LazyDictc                     || _         y r   r   )r   r   s     r   __init__z/test_patsy_lazy_dict.<locals>.LazyDict.__init__   s	    DIr   c                 F    t        j                  | j                  |         S r   )nparrayr   )r   keys     r   __missing__z2test_patsy_lazy_dict.<locals>.LazyDict.__missing__   s    88DIIcN++r   N)r7   r8   r9   r   r   r>   r   r   LazyDictr      s    		,r   r   EXECUTIONS ~ SOUTH + INCOMEr   r   INCOMErQ   )dictr   r   r   r   r4   rk   r)   assert_allcloserd   r   nanlocre   r   len)r   r   resres2s       r   test_patsy_lazy_dictr      s   ,4 ,  %%DD>D
+$
7
;
;
=C;;tD(($/ %%DFFDHH[D>D$$&++11DJ
+$
7
;
;
=C;;tD!!4(TQG$7$7$9$>$> ?@r   c                     t        j                         j                  } t        j                  | j
                  d<   t        d|       j                         }|j                  |       }t        |j                  |dd         t        j                         j                  } d | j
                  d<   | j                  d      } t        j                  d      5 }t        j                  d	       |j                  |       }d
t        |d   j                         v sJ dt        |d   j                         v sJ 	 d d d        t        |j                  |d       y # 1 sw Y   "xY w)Nr   r   r   rQ   Frs   T)recordalwaysValueWarningrR   znan values have been droppedrv   )r   r   r   r   r   r   r   r4   rk   r   rd   
to_recordsr1   r2   simplefilterreprmessage)r   r   r   ws       r   test_patsy_missing_datar      s%    %%DFFDHH[
+$
7
;
;
=C;;tD!!48,  %%D DHH[???'D		 	 	- Eh'{{4 aemm!4444-aemm1DDDD	E !!4%@E Es   AEE c                     t        j                  ddgddgddggddg	      } t        d
|       }|j                         }t        j
                  }t        j                  |      5  |j                  dg       d d d        y # 1 sw Y   y xY w)Nro   gQ?
   gQ?   gQ?BSA
AbsorbancecolumnszAbsorbance ~ BSAr   g      ?)	rx   ry   r   r4   patsy
PatsyErrorr;   raisesrk   )dfr   r4   errors       r   test_predict_nondataframer      s    	5zB;U<$l3
5B ",E
))+CE	u	 TF  s   %BB
c                  $   t        j                  g dg dd      } t        j                  dg dig      }t	        d||       }d|j
                  v sJ t        j                  t              5  t	        dd	|        d d d        y # 1 sw Y   y xY w)
Nrn   )rT         )rq   rp   z)ro   r   	   z	y ~ x + z)eval_envr   rt   env)	rx   ry   r   EvalEnvironmentr   r%   r;   r   	TypeError)r   r   r   s      r   test_formula_environmentr      s|    	II6	7B


#y!1 2
3Cc3E%"""""	y	! .Ge"-. . .s   .BBc                  J   t         j                  j                  d      } t        j                  | ddg      }|j
                  d d }t        d|      j                         }|j
                  dd  d   }|j                  |      }|j                  j                  d   dk(  sJ y )	N)i  rT   rp   rq   r   i  rt   )rY   r   r   )r   randomstandard_normalrx   ry   ilocr   r4   get_predictionpredicted_meanshape)rq   	data_fullr   r   oos
predictions         r    test_formula_predict_series_exogr      s    
		!!),AQc
3I>>$3D
gD
)
-
-
/C
..
s
#C##C(J$$**1-444r   )(statsmodels.compat.pandasr   ior   r1   ri   r   numpy.testingtestingr)   rc   rx   r   r;   statsmodels.datasetsr   statsmodels.datasets.longleyr   r   statsmodels.formula.apir    statsmodels.formula.formulatoolsr	   statsmodels.toolsr
   statsmodels.tools.testingr   rB   r   r@   rJ   r`   rf   rl   r}   r   r   r   r   r   r>   r   r   <module>r      s    9        ( : ' E * 2G' '8 o /46n	;B(A6A,.5r   