
    !g0              
          d Z ddlZddlZddlmZmZ ddlZddlm	Z	 ddl
mZ ddlmZ ddlmZ ddlmZ dZd	Zd
ZdZd Z G d d      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z  G d d e      Z!ejD                  jF                  d!        Z$d" Z%d# Z& ejN                  d$ejP                  ejR                  ejT                  ejV                  ejX                  ejZ                  ej\                  g%      d&        Z/ ejN                  d$'      d(        Z0d) Z1d* Z2ejD                  jg                  d+d,      d-        Z4d. Z5y)/z
Test functions for sm.rlm
    N)assert_allcloseassert_almost_equal)stats)norms)RLM)
HuberScale            c                      ddl m}   |        }t        j                  |j                        |_        t        j                  |j
                        |_        |S )Nr   )load)statsmodels.datasets.stacklossr   npasarrayendogexog)r   datas     ^/var/www/dash_apps/app1/venv/lib/python3.12/site-packages/statsmodels/robust/tests/test_rlm.pyload_stacklossr      s9    36DDJJ'DJ

499%DIK    c                   ^    e Zd ZdZd ZeZd Zd ZeZ	d Z
d Zd Zd Zd	 ZeZd
 Zd Zd Zy)CheckRlmResultsMixinz
    res2 contains  results from Rmodelwrap or were obtained from a statistical
    packages such as R, Stata, or SAS and written to results.results_rlm

    Covariance matrices were obtained from SAS and are imported from
    results.results_rlm
    c                 v    t        | j                  j                  | j                  j                  t               y N)r   res1paramsres2	DECIMAL_4selfs    r   test_paramsz CheckRlmResultsMixin.test_params&   s"    DII,,dii.>.>	Jr   c                     t        | j                  j                  | j                  j                  | j                         y r   )r   r   bser   decimal_standarderrorsr    s    r   test_standarderrorsz(CheckRlmResultsMixin.test_standarderrors+   s'    DIIMM499== 77	9r   c                     t        | j                  d      st        j                  d       t	        | j
                  j                         | j                  j                         t               y )Nconf_intzResults from R)hasattrr   pytestskipr   r   r(   r   r    s    r   test_confidenceintervalsz-CheckRlmResultsMixin.test_confidenceintervals0   sF    tyy*-KK()DII..0$))2D2D2F%	'r   c                     t        | j                  j                  | j                  j                  | j                         y r   )r   r   scaler   decimal_scaler    s    r   
test_scalezCheckRlmResultsMixin.test_scale9   s'    DIIOOTYY__ ..	0r   c                 v    t        | j                  j                  | j                  j                  t               y r   )r   r   weightsr   r   r    s    r   test_weightsz!CheckRlmResultsMixin.test_weights=   s"    DII--tyy/@/@)Lr   c                 v    t        | j                  j                  | j                  j                  t               y r   )r   r   residr   r   r    s    r   test_residualsz#CheckRlmResultsMixin.test_residuals@   s    DIIOOTYY__iHr   c                    t        | j                  j                  j                  | j                  j                  t
               t        | j                  j                  j                  | j                  j                  t
               y r   )r   r   modeldf_modelr   r   df_residr    s    r   test_degreesz!CheckRlmResultsMixin.test_degreesC   sP    DIIOO44dii6H6H%	'DIIOO44dii6H6H%	'r   c                     t        | j                  d      st        j                  d       t	        | j
                  j                  | j                  j                  t               y )Nbcov_unscaledzNo unscaled cov matrix from SAS)r)   r   r*   r+   r   r   r=   r   r    s    r   test_bcov_unscaledz'CheckRlmResultsMixin.test_bcov_unscaledI   sA    tyy/2KK9:DII33 II33Y	@r   c                 ~   t        | j                  j                  | j                  j                  | j
                         t        | j                  j                  | j                  j                  | j
                         t        | j                  j                  | j                  j                  | j
                         y r   )r   r   bcov_scaledr   h1decimal_bcov_scaledh2h3r    s    r   test_bcov_scaledz%CheckRlmResultsMixin.test_bcov_scaledR   ss    DII11499<< 44	6DIILL$)),, 44	6DIILL$)),, 44	6r   c                     t        | j                  d      st        j                  d       t	        | j
                  j                  | j                  j                  d       y )NtvalueszNo tvalues in benchmarkg~jth?)rtol)r)   r   r*   r+   r   r   rG   r    s    r   test_tvaluesz!CheckRlmResultsMixin.test_tvaluesZ   s=    tyy),KK12		))499+<+<5Ir   c                 :   | j                   j                  }|| j                   j                  z  }t        j                  j                  t        j                  |            dz  }t        j                  j                  d      | j                   j                  z  }t        j                  ||z
  ||z   f      }t        | j                   j                  |       t        | j                   j                  |       t        | j                   j                         |       y )Nr   g?)r   r   r$   r   normsfr   absisfcolumn_stackr   rG   pvaluesr(   )r!   r   rG   rP   
half_widthr(   s         r   test_tpvaluesz"CheckRlmResultsMixin.test_tpvalues`   s     !!499==(**--w014ZZ^^E*TYY]]:
??FZ$7*9L#MNDII--w7DII--w7DII..0(;r   N)__name__
__module____qualname____doc__r"   r   r%   r&   r,   r/   r0   r3   r6   r;   r>   rB   rE   rI   rR    r   r   r   r      sZ    K '9
' M0MI'@ $6J<r   r   c                      e Zd Zed        Zd Zej                  j                  d        Z	ej                  j                  d        Z
ej                  j                  d        Zej                  j                  d        Zy)TestRlmc                 B   t               | _        t        j                  | j                  j                  d      | j                  _        t
        | _        t        | _        t        | j                  j                  | j                  j                  t        j                               }|| _        |j                         }|j                  d      j                  }|j                  d      j                  }|| _        || j                   _        || j                   _        y )NFprependMH2covH3)r   r   smadd_constantr   	DECIMAL_1r%   	DECIMAL_3r/   r   r   r   HuberTr8   fitr@   r   rC   rD   clsr8   resultsrC   rD   s        r   setup_classzTestRlm.setup_classo   s    !#uE%."%CHHNNCHHMMU\\^D	))+YY4Y ,,YY4Y ,,r   c                 (    ddl m}  |       | _        y Nr   )Huberresults.results_rlmro   r   r!   ro   s     r   setup_methodzTestRlm.setup_method       .G	r   c                 8    | j                   j                          y r   )r   summaryr    s    r   test_summaryzTestRlm.test_summary   s    		r   c                 8    | j                   j                          y r   )r   summary2r    s    r   test_summary2zTestRlm.test_summary2   s    		r   c                 d    t        | j                  j                  t        j                        sJ y r   )
isinstancer   chisqr   ndarrayr    s    r   
test_chisqzTestRlm.test_chisq   s    $))//2::666r   c                     t        | j                  j                  | j                  j                        t
        j                        sJ y r   )r|   r8   predictr   r   r   r~   r    s    r   test_predictzTestRlm.test_predict   s/    $**,,TYY-=-=>

KKKr   N)rS   rT   rU   classmethodrl   rs   r*   marksmokerw   rz   r   r   rW   r   r   rY   rY   n   s       [[  [[  [[7 7 [[L Lr   rY   c                   .     e Zd Ze fd       Zd Z xZS )
TestHampelc                    t         |           t        | _        t        | _        t        | _        t        | j                  j                  | j                  j                  t        j                               }|j                         }|j                  d      j                  }|j                  d      j                  }|| _        || j                  _        || j                  _        y Nr]   r_   r`   rb   )superrl   	DECIMAL_2r%   rf   r/   rB   r   r   r   r   r   Hampelrh   r@   r   rC   rD   rj   r8   rk   rC   rD   	__class__s        r   rl   zTestHampel.setup_class   s    %."%"+CHHNNCHHMMU\\^D))+YY4Y ,,YY4Y ,,r   c                 (    ddl m}  |       | _        y )Nr   )r   )rq   r   r   )r!   r   s     r   rs   zTestHampel.setup_method   s    /H	r   rS   rT   rU   r   rl   rs   __classcell__r   s   @r   r   r      s     r   r   c                   .     e Zd Ze fd       Zd Z xZS )TestRlmBisquarec                    t         |           t        | _        t	        | j
                  j                  | j
                  j                  t        j                               }|j                         }|j                  d      j                  }|j                  d      j                  }|| _        || j                  _        || j                  _        y r   )r   rl   re   r%   r   r   r   r   r   TukeyBiweightrh   r@   r   rC   rD   r   s        r   rl   zTestRlmBisquare.setup_class   s    %."CHHNNCHHMMU5H5H5JK))+YY4Y ,,YY4Y ,,r   c                 (    ddl m}  |       | _        y )Nr   )BiSquare)rq   r   r   )r!   r   s     r   rs   zTestRlmBisquare.setup_method   s    1J	r   r   r   s   @r   r   r      s     r   r   c                   .     e Zd Ze fd       Zd Z xZS )TestRlmAndrewsc                    t         |           t        | j                  j                  | j                  j
                  t        j                               }|j                         }|j                  d      j                  }|j                  d      j                  }|| _
        || j                  _        || j                  _        y r   )r   rl   r   r   r   r   r   
AndrewWaverh   r@   r   rC   rD   r   s        r   rl   zTestRlmAndrews.setup_class   s    CHHNNCHHMMU5E5E5GH))+YY4Y ,,YY4Y ,,r   c                 (    ddl m}  |       | _        y )Nr   )Andrews)rq   r   r   )r!   r   s     r   rs   zTestRlmAndrews.setup_method   s    0I	r   r   r   s   @r   r   r      s    	 	r   r   c                   "    e Zd Zed        Zd Zy)TestRlmHuberc                 @   t               | _        t        j                  | j                  j                  d      | j                  _        t        | j                  j                  | j                  j                  t        j                               }|j                  t                     }|j                  dt                     j                  }|j                  dt                     j                  }|| _        || j                  _        || j                  _        y )NFr[   r]   	scale_estr_   ra   r   rb   )r   r   rc   rd   r   r   r   r   rg   rh   r   r@   r   rC   rD   ri   s        r   rl   zTestRlmHuber.setup_class   s    !#uECHHNNCHHMMU\\^D))jl)3YY4:<Y8DDYY4:<Y8DDr   c                 (    ddl m}  |       | _        y )Nr   )
HuberHuber)rq   r   r   )r!   r   s     r   rs   zTestRlmHuber.setup_method   s    3L	r   NrS   rT   rU   r   rl   rs   rW   r   r   r   r      s    
 
!r   r   c                   .     e Zd Ze fd       Zd Z xZS )TestHampelHuberc                    t         |           t        | j                  j                  | j                  j
                  t        j                               }|j                  t                     }|j                  dt                     j                  }|j                  dt                     j                  }|| _        || j                  _        || j                  _        y Nr]   r   r_   r   rb   )r   rl   r   r   r   r   r   r   rh   r   r@   r   rC   rD   r   s        r   rl   zTestHampelHuber.setup_class   s    CHHNNCHHMMU\\^D))jl)3YY4:<Y8DDYY4:<Y8DDr   c                 (    ddl m}  |       | _        y )Nr   )HampelHuber)rq   r   r   )r!   r   s     r   rs   zTestHampelHuber.setup_method   s    4M	r   r   r   s   @r   r   r      s    	 	"r   r   c                   .     e Zd Ze fd       Zd Z xZS )TestRlmBisquareHuberc                    t         |           t        | j                  j                  | j                  j
                  t        j                               }|j                  t                     }|j                  dt                     j                  }|j                  dt                     j                  }|| _        || j                  _        || j                  _        y r   )r   rl   r   r   r   r   r   r   rh   r   r@   r   rC   rD   r   s        r   rl   z TestRlmBisquareHuber.setup_class   s    CHHNNCHHMMU5H5H5JK))jl)3YY4:<Y8DDYY4:<Y8DDr   c                 (    ddl m}  |       | _        y )Nr   )BisquareHuber)rq   r   r   )r!   r   s     r   rs   z!TestRlmBisquareHuber.setup_method  s    6!O	r   r   r   s   @r   r   r      s    	 	$r   r   c                   .     e Zd Ze fd       Zd Z xZS )TestRlmAndrewsHuberc                    t         |           t        | j                  j                  | j                  j
                  t        j                               }|j                  t                     }|j                  dt                     j                  }|j                  dt                     j                  }|| _        || j                  _        || j                  _        y r   )r   rl   r   r   r   r   r   r   rh   r   r@   r   rC   rD   r   s        r   rl   zTestRlmAndrewsHuber.setup_class  s    CHHNNCHHMMU5E5E5GH))jl)3YY4:<Y8DDYY4:<Y8DDr   c                 (    ddl m}  |       | _        y )Nr   )AndrewsHuber)rq   r   r   )r!   r   s     r   rs   z TestRlmAndrewsHuber.setup_method  s    5 N	r   r   r   s   @r   r   r     s    	 	#r   r   c                   "    e Zd Zed        Zd Zy)TestRlmSresidc                 8   t               | _        t        j                  | j                  j                  d      | j                  _        t
        | _        t        | _        t        | j                  j                  | j                  j                  t        j                               }|j                  d      }|j                  d      j                  }|j                  d      j                  }|| _        || j                  _        || j                  _        y )	NFr[   r]   sresidconvr_   r`   rb   )r   r   rc   rd   r   re   r%   rf   r/   r   r   r   rg   rh   r@   r   rC   rD   ri   s        r   rl   zTestRlmSresid.setup_class  s    !#uE%."%CHHNNCHHMMU\\^D)))*YY4Y ,,YY4Y ,,r   c                 (    ddl m}  |       | _        y rn   rp   rr   s     r   rs   zTestRlmSresid.setup_method/  rt   r   Nr   rW   r   r   r   r     s     r   r   c                  n    dd l mc m}  g ddddt        j                  gd}| j                  d|       y )	Nr   )r   r   
      r   r   r
   )FooBarz	Foo ~ Bar)r   )statsmodels.formula.apiformulaapir   nanrlm)smfds     r   test_missingr   4  s1     *)Aq"&&(9:AGGKaG r   c                  v   t         j                  j                  j                         } t        j                  | j
                  d      }t        | j                  |t        j                               }|j                         }g d}|j                  |      }t        |j                  |j                         y )NFr[   r]   )&~F?E}?'K10xÿgo2Cstart_params)rc   datasets	stacklossload_pandasrd   r   r   r   r   rg   rh   r   r   )r   r   r8   rk   r   	result_svs         r   test_rlm_start_valuesr   =  sz    ;;  ,,.D??499e4D

DELLN3EiikGEL		|	4IGNNI$4$45r   c                  4   t         j                  j                  j                         } t        j                  | j
                  d      }t        | j                  |t        j                               }g d}t        j                  t              5  |j                  |       d d d        t        j                  ||g      j                   }t        j                  t              5  |j                  |       d d d        y # 1 sw Y   _xY w# 1 sw Y   y xY w)NFr[   r]   )r   r   r   r   )rc   r   r   r   rd   r   r   r   r   rg   r*   raises
ValueErrorrh   r   arrayT)r   r   r8   r   s       r   test_rlm_start_values_errorsr   G  s    ;;  ,,.D??499e4D

DELLN3E7L	z	" -		|	,- 88\<89;;L	z	" -		|	,- -	- -- -s   D&DDDmodule)scoper   c                 "    | j                         S r   )param)requests    r   rK   rK   T  s    
 ==?r   )r   c                    ddl m} t        j                  j	                  d      }|j                  d      }||dz  z   }t        j                  t        j                  ||dz  f         } |||dt        j                  |      z        S )Nr   )Bunchi$?wJ)i  r   r   皙	@)r   r   const)
statsmodels.tools.toolsr   r   randomRandomStatestandard_normalrc   rd   c_	ones_like)r   r   rsr   r   s        r   perfect_fit_datar   \  ss    -			z	*Bi(D419E??255tqy12Du4bll56I0IKKr   c                 :   t        j                         5  t        j                  d       t        | j                  | j
                  |      j                         }d d d        t        j                  t        j                  g d      d       y # 1 sw Y   7xY w)Nignorer]   )r   r   r   :0yE>atol)warningscatch_warningssimplefilterr   r   r   rh   r   r   r   r   r   rK   ress      r   test_perfect_fitr   f  su    		 	 	" Oh'"((*:*?*?4HLLNO CJJ 3$?O O   ABBc                 :   t        j                         5  t        j                  d       t        | j                  | j
                  |      j                         }d d d        t        j                  t        j                  g d      d       y # 1 sw Y   7xY w)Nr   r]   )r   r   r   r   r   )r   r   r   r   r   r   rh   r   r   r   r   r   s      r   test_perfect_constr   m  su    		 	 	" Oh'"((*:*?*?4HLLNO CJJ 5DAO Or   r   )r2   coefsr   c                    t               }t        j                  |j                  d      |_        t	        |j
                  |j                  t        j                               j                         }t	        |j
                  |j                  t        j                               j                  |       }t        |j                  |j                         y )NFr[   r]   r   )r   rc   rd   r   r   r   r   rg   rh   r   r   )r   r   basealts       r   test_alt_criterionr   t  s    D		59DItzz4997;;=D
djj$))u||~
6
:
:
:
ECDKK,r   c                     t               } t        j                  | j                        | _        t        j                  | j                        | _        t        j                  | j                  d      | _        t        | j                  | j                  t        j                               }t        j                  t        d      5  |j                  d       d d d        y # 1 sw Y   y xY w)NFr[   r]   zConvergence argument unknown)matchunknownr   )r   r   r   r   r   rc   rd   r   r   rg   r*   r   r   rh   )r   mods     r   test_bad_criterionr  }  s    D

499%DIDJJ'DJ		59DI
djj$))u||~
6C	z)G	H  Y     s   C$$C-)6rV   r   numpyr   numpy.testingr   r   r*   scipyr   statsmodels.apir   rc   statsmodels.robustr   &statsmodels.robust.robust_linear_modelr   statsmodels.robust.scaler   r   rf   r   re   r   r   rY   r   r   r   r   r   r   r   r   r   r   r   r   r   fixturer   LeastSquaresrg   TrimmedMeanr   r   RamsayErK   r   r   r   parametrizer   r  rW   r   r   <module>r     s     >    $ 6 /				M< M<`$L" $LN ,g (W *!' !&"g "$$7 $$#' #$( . ! !6
- h((%*<*<ell))5+>+>'(	( hL  L@B !?@- A- r   