
    M/Ph0              
          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j"        j#        d!             Z$d" Z%d# Z& ej'        d$ej(        ej)        ej*        ej+        ej,        ej-        ej.        g%          d&             Z/ ej'        d$'          d(             Z0d) Z1d* Z2ej"        3                    d+d,          d-             Z4d. Z5dS )/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     a/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/statsmodels/robust/tests/test_rlm.pyload_stacklossr      sJ    333333466DDJ''DJ
49%%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dS )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                 Z    t          | j        j        | j        j        t                     d S N)r   res1paramsres2	DECIMAL_4selfs    r   test_paramsz CheckRlmResultsMixin.test_params&   s$    DI,di.>	JJJJJr   c                 Z    t          | j        j        | j        j        | j                   d S r   )r   r   bser   decimal_standarderrorsr    s    r   test_standarderrorsz(CheckRlmResultsMixin.test_standarderrors+   s0    DIM49= 7	9 	9 	9 	9 	9r   c                     t          | j        d          st          j        d           t	          | j                                        | j                                        t                     d S )Nconf_intzResults from R)hasattrr   pytestskipr   r   r(   r   r    s    r   test_confidenceintervalsz-CheckRlmResultsMixin.test_confidenceintervals0   sf    ty*-- 	*K()))DI..00$)2D2D2F2F%	' 	' 	' 	' 	'r   c                 Z    t          | j        j        | j        j        | j                   d S r   )r   r   scaler   decimal_scaler    s    r   
test_scalezCheckRlmResultsMixin.test_scale9   s0    DIOTY_ .	0 	0 	0 	0 	0r   c                 Z    t          | j        j        | j        j        t                     d S r   )r   r   weightsr   r   r    s    r   test_weightsz!CheckRlmResultsMixin.test_weights=   s$    DI-ty/@)LLLLLr   c                 Z    t          | j        j        | j        j        t                     d S r   )r   r   residr   r   r    s    r   test_residualsz#CheckRlmResultsMixin.test_residuals@   s"    DIOTY_iHHHHHr   c                     t          | j        j        j        | j        j        t
                     t          | j        j        j        | j        j        t
                     d S r   )r   r   modeldf_modelr   r   df_residr    s    r   test_degreesz!CheckRlmResultsMixin.test_degreesC   sV    DIO4di6H%	' 	' 	'DIO4di6H%	' 	' 	' 	' 	'r   c                     t          | j        d          st          j        d           t	          | j        j        | j        j        t                     d S )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   sY    ty/22 	;K9:::DI3 I3Y	@ 	@ 	@ 	@ 	@r   c                    t          | j        j        | j        j        | j                   t          | j        j        | j        j        | j                   t          | j        j        | j        j        | j                   d S r   )r   r   bcov_scaledr   h1decimal_bcov_scaledh2h3r    s    r   test_bcov_scaledz%CheckRlmResultsMixin.test_bcov_scaledR   sy    DI149< 4	6 	6 	6DIL$), 4	6 	6 	6DIL$), 4	6 	6 	6 	6 	6r   c                     t          | j        d          st          j        d           t	          | j        j        | j        j        d           d S )NtvalueszNo tvalues in benchmarkg~jth?)rtol)r)   r   r*   r+   r   r   rG   r    s    r   test_tvaluesz!CheckRlmResultsMixin.test_tvaluesZ   sL    ty),, 	3K1222	)49+<5IIIIIIr   c                    | j         j        }|| j         j        z  }t          j                            t          j        |                    dz  }t          j                            d          | j         j        z  }t          j	        ||z
  ||z   f          }t          | j         j        |           t          | j         j        |           t          | j                                         |           d S )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     !49=(*--w0014Z^^E**TY]:
?FZ$7*9L#MNNDI-w777DI-w777DI..0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      s         K K K '9 9 9
' ' ' M0 0 0M M MI I I' ' '@ @ @ $6 6 6J J 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dS )TestRlmc                    t                      | _        t          j        | j        j        d          | j        _        t
          | _        t          | _        t          | j        j
        | j        j        t          j                              }|| _        |                                }|                    d          j        }|                    d          j        }|| _        || j        _        || j        _        d S )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EE%."%CHNCHMU\^^DDD	))++YY4Y  ,YY4Y  ,r   c                 0    ddl m}  |            | _        d S Nr   )Huberresults.results_rlmro   r   r!   ro   s     r   setup_methodzTestRlm.setup_method   %    ......EGG			r   c                 8    | j                                          d S r   )r   summaryr    s    r   test_summaryzTestRlm.test_summary   s    	r   c                 8    | j                                          d S r   )r   summary2r    s    r   test_summary2zTestRlm.test_summary2   s    	r   c                 R    t          | j        j        t          j                  sJ d S r   )
isinstancer   chisqr   ndarrayr    s    r   
test_chisqzTestRlm.test_chisq   s$    $)/2:6666666r   c                     t          | j                            | j        j                  t
          j                  sJ d S r   )r|   r8   predictr   r   r   r~   r    s    r   test_predictzTestRlm.test_predict   s5    $*,,TY-=>>
KKKKKKKr   N)rS   rT   rU   classmethodrl   rs   r*   marksmokerw   rz   r   r   rW   r   r   rY   rY   n   s          [    [   [   [7 7 7 [L L L L Lr   rY   c                   4     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                              }|                                }|                    d          j        }|                    d          j        }|| _        || j        _        || j        _        d S 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    %."%"+CHNCHMU\^^DDD))++YY4Y  ,YY4Y  ,r   c                 0    ddl m}  |            | _        d S )Nr   )r   )rq   r   r   )r!   r   s     r   rs   zTestHampel.setup_method   s%    //////FHH			r   rS   rT   rU   r   rl   rs   __classcell__r   s   @r   r   r      sQ            [      r   r   c                   4     e Zd Ze fd            Zd Z xZS )TestRlmBisquarec                    t                                                       t          | _        t	          | j        j        | j        j        t          j	                              }|
                                }|
                    d          j        }|
                    d          j        }|| _        || j        _        || j        _        d S r   )r   rl   re   r%   r   r   r   r   r   TukeyBiweightrh   r@   r   rC   rD   r   s        r   rl   zTestRlmBisquare.setup_class   s    %."CHNCHMU5H5J5JKKK))++YY4Y  ,YY4Y  ,r   c                 0    ddl m}  |            | _        d S )Nr   )BiSquare)rq   r   r   )r!   r   s     r   rs   zTestRlmBisquare.setup_method   s%    111111HJJ			r   r   r   s   @r   r   r      sQ            [      r   r   c                   4     e Zd Ze fd            Zd Z xZS )TestRlmAndrewsc                    t                                                       t          | j        j        | j        j        t          j                              }|                                }|                    d          j	        }|                    d          j	        }|| _
        || j
        _        || j
        _        d S r   )r   rl   r   r   r   r   r   
AndrewWaverh   r@   r   rC   rD   r   s        r   rl   zTestRlmAndrews.setup_class   s    CHNCHMU5E5G5GHHH))++YY4Y  ,YY4Y  ,r   c                 0    ddl m}  |            | _        d S )Nr   )Andrews)rq   r   r   )r!   r   s     r   rs   zTestRlmAndrews.setup_method   s%    000000GII			r   r   r   s   @r   r   r      sQ        	 	 	 	 [	      r   r   c                   *    e Zd Zed             Zd ZdS )TestRlmHuberc                    t                      | _        t          j        | j        j        d          | j        _        t          | j        j        | j        j        t          j                              }|	                    t                                }|	                    dt                                j        }|	                    dt                                j        }|| _        || j        _        || j        _        d S )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EECHNCHMU\^^DDD))jll)33YY4:<<Y88DYY4:<<Y88Dr   c                 0    ddl m}  |            | _        d S )Nr   )
HuberHuber)rq   r   r   )r!   r   s     r   rs   zTestRlmHuber.setup_method   s%    333333JLL			r   NrS   rT   rU   r   rl   rs   rW   r   r   r   r      s<        
 
 [
! ! ! ! !r   r   c                   4     e Zd Ze fd            Zd Z xZS )TestHampelHuberc                    t                                                       t          | j        j        | j        j        t          j                              }|                    t                                }|                    dt                                j
        }|                    dt                                j
        }|| _        || j        _        || j        _        d S 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    CHNCHMU\^^DDD))jll)33YY4:<<Y88DYY4:<<Y88Dr   c                 0    ddl m}  |            | _        d S )Nr   )HampelHuber)rq   r   r   )r!   r   s     r   rs   zTestHampelHuber.setup_method   s%    444444KMM			r   r   r   s   @r   r   r      sQ        	 	 	 	 [	" " " " " " "r   r   c                   4     e Zd Ze fd            Zd Z xZS )TestRlmBisquareHuberc                    t                                                       t          | j        j        | j        j        t          j                              }|                    t                                }|                    dt                                j
        }|                    dt                                j
        }|| _        || j        _        || j        _        d S r   )r   rl   r   r   r   r   r   r   rh   r   r@   r   rC   rD   r   s        r   rl   z TestRlmBisquareHuber.setup_class   s    CHNCHMU5H5J5JKKK))jll)33YY4:<<Y88DYY4:<<Y88Dr   c                 0    ddl m}  |            | _        d S )Nr   )BisquareHuber)rq   r   r   )r!   r   s     r   rs   z!TestRlmBisquareHuber.setup_method  s%    666666!MOO			r   r   r   s   @r   r   r      sQ        	 	 	 	 [	$ $ $ $ $ $ $r   r   c                   4     e Zd Ze fd            Zd Z xZS )TestRlmAndrewsHuberc                    t                                                       t          | j        j        | j        j        t          j                              }|                    t                                }|                    dt                                j
        }|                    dt                                j
        }|| _        || j        _        || j        _        d S r   )r   rl   r   r   r   r   r   r   rh   r   r@   r   rC   rD   r   s        r   rl   zTestRlmAndrewsHuber.setup_class  s    CHNCHMU5E5G5GHHH))jll)33YY4:<<Y88DYY4:<<Y88Dr   c                 0    ddl m}  |            | _        d S )Nr   )AndrewsHuber)rq   r   r   )r!   r   s     r   rs   z TestRlmAndrewsHuber.setup_method  s%    555555 LNN			r   r   r   s   @r   r   r     sQ        	 	 	 	 [	# # # # # # #r   r   c                   *    e Zd Zed             Zd ZdS )TestRlmSresidc                    t                      | _        t          j        | j        j        d          | j        _        t
          | _        t          | _        t          | j        j
        | j        j        t          j                              }|                    d          }|                    d          j        }|                    d          j        }|| _        || j        _        || j        _        d S )	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EE%."%CHNCHMU\^^DDD)))**YY4Y  ,YY4Y  ,r   c                 0    ddl m}  |            | _        d S rn   rp   rr   s     r   rs   zTestRlmSresid.setup_method/  rt   r   Nr   rW   r   r   r   r     s<          [    r   r   c                  p    dd l mc m}  g ddddt          j        gd}|                     d|           d S )	Nr   )r   r   
      r   r   r
   )FooBarz	Foo ~ Bar)r   )statsmodels.formula.apiformulaapir   nanrlm)smfds     r   test_missingr   4  sW     *))))))))Aq"&(9::AGGKaG     r   c                  b   t           j        j                                        } t          j        | j        d          }t          | j        |t          j	                              }|
                                }g d}|
                    |          }t          |j        |j                   d S )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   =  s    ; ,,..D?49e444D
DELNN333EiikkGEEEL		|	44IGNI$455555r   c                  .   t           j        j                                        } t          j        | j        d          }t          | j        |t          j	                              }g d}t          j        t                    5  |                    |           d d d            n# 1 swxY w Y   t          j        ||g          j        }t          j        t                    5  |                    |           d d d            d S # 1 swxY w Y   d S )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  so   ; ,,..D?49e444D
DELNN333E777L	z	"	" - -		|	,,,- - - - - - - - - - - - - - - 8\<899;L	z	"	" - -		|	,,,- - - - - - - - - - - - - - - - - -s$   B''B+.B+&D

DDmodule)scoper   c                 *    |                                  S r   )param)requests    r   rK   rK   T  s    
 ==??r   )r   c                    ddl m} t          j                            d          }|                    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   \  s    ------			z	*	*Bi((D419E?25tqy122D5u4bl56I6I0IKKKKr   c                 6   t          j                    5  t          j        d           t          | j        | j        |                                          }d d d            n# 1 swxY w Y   t          |j        t          j
        g d          d           d S )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  s    		 	"	" O Oh'''"(*:*?4HHHLLNNO O O O O O O O O O O O O O O CJ 3 3$??????   AA##A'*A'c                 6   t          j                    5  t          j        d           t          | j        | j        |                                          }d d d            n# 1 swxY w Y   t          |j        t          j
        g d          d           d S )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  s    		 	"	" O Oh'''"(*:*?4HHHLLNNO O O O O O O O O O O O O O O CJ 5 5DAAAAAAr   r   )r2   coefsr   c                    t                      }t          j        |j        d          |_        t	          |j        |j        t          j                                                              }t	          |j        |j        t          j                                                  |           }t          |j
        |j
                   d S )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999DItz49777;;==D
dj$)u|~~
6
6
6
:
:
:
E
ECDK,,,,,r   c                     t                      } t          j        | j                  | _        t          j        | j                  | _        t          j        | j        d          | _        t          | j        | j        t          j	                              }t          j        t          d          5  |                    d           d d d            d S # 1 swxY w Y   d S )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
49%%DIDJ''DJ	5999DI
dj$)u|~~
6
6
6C	z)G	H	H	H    Y                                   s   3C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 6 6 6 6 6 / / / / / /				  M< M< M< M< M< M< M< M<`$L $L $L $L $L" $L $L $LN       ,    g   (    W   *! ! ! ! !' ! ! !&" " " " "g " " "$$ $ $ $ $7 $ $ $$# # # # #' # # #$    (   . ! ! !6 6 6
- 
- 
- h(%*<el)5+>'( ( ( 	( ( hL L  L@ @ @B B B !?@@- - A@-         r   