
    !g                     j    d dl Zd dlmZ d dlZd dlmZ d dlmZ d dl	m
c mZ d dlmZ  G d d      Zy)    N)assert_almost_equal)get_rdataset)IGNORED_EXCEPTIONS)HypothesisTestWarningc                   d    e Zd Zed        Zd Zd Zd Zd Zd Z	d Z
d Zd	 Zd
 Zd Zd Zd Zy)TestDistDependenceMeasuresc                    t         j                  j                  d       t        j                  t	        dd            j                  d      | _        | j                  t        j                  | j                        z   | _        d| _	        d| _
        d| _        d| _        d	| _        d
| _        d| _        d| _        d| _        y)a  
        Values were obtained via the R `energy` package.

        R code:
        ------
        > dcov.test(x, y, R=200)

            dCov independence test (permutation test)

        data:  index 1, replicates 200
        nV^2 = 45829, p-value = 0.004975
        sample estimates:
            dCov
        47.86925

        > DCOR(x, y)
        $dCov
        [1] 47.86925

        $dCor
        [1] 0.9999704

        $dVarX
        [1] 47.28702

        $dVarY
        [1] 48.46151
              e   )      g,?g%CG@g"DG@gscz;H@g8d`t?i  g?6@gWJ@gBr?N)nprandomseedarrayrangereshapexlogydcor_expdcov_exp
dvar_x_exp
dvar_y_exppval_emp_exptest_stat_emp_expS_exptest_stat_asym_exppval_asym_exp)clss    q/var/www/dash_apps/app1/venv/lib/python3.12/site-packages/statsmodels/stats/tests/test_dist_dependant_measures.pysetup_classz&TestDistDependenceMeasures.setup_class   s    < 			qq#'//8suu% !!# %
 	!*#    c                     t        j                  t        d      5  t        j                  | j
                  d dd d f   | j                         d d d        y # 1 sw Y   y xY w)Nzsame number of observationsmatch   pytestraises
ValueErrorddmdistance_covariance_testr   r   selfs    r"   test_input_validation_nobsz5TestDistDependenceMeasures.test_input_validation_nobs=   sN    ]]:-JK 	@((A?	@ 	@ 	@s   4AA"c                     t        j                  t        d      5  t        j                  | j
                  | j                  d       d d d        y # 1 sw Y   y xY w)NzUnknown 'method' parameterr&   
wrong_namemethodr)   r/   s    r"   $test_input_validation_unknown_methodz?TestDistDependenceMeasures.test_input_validation_unknown_methodA   sD    ]]:-IJ 	N((M	N 	N 	Ns   -AAc                     t        j                  | j                  | j                  d      \  }}}|dk(  sJ t	        || j
                  d       t	        || j                  d       y )Nasymr4      r
   )r-   r.   r   r   r   r   r    r0   	statisticpvalr5   s       r"    test_statistic_value_asym_methodz;TestDistDependenceMeasures.test_statistic_value_asym_methodE   s\    "%">">FFDFF6#+	4 It'>'>BD$"4"4a8r$   c                 *   t        j                  t              5  t        j                  | j
                  | j                  d      \  }}}d d d        dk(  sJ t        | j                  d       t        | j                  d       y # 1 sw Y   ?xY w)Nempr4   r   r
   )
r*   warnsr   r-   r.   r   r   r   r   r   r:   s       r"   test_statistic_value_emp_methodz:TestDistDependenceMeasures.test_statistic_value_emp_methodM   s|    \\/0 	&)&B&Bu'#ItV	
 It'='=qAD$"3"3Q7	 	s   1B		Bc                 &   d}t        j                  t        |      5  t        j                  | j
                  | j                  dd      \  }}}t        || j                  d       t        || j                  d       d d d        y # 1 sw Y   y xY w)Nz)The asymptotic approximation will be usedr&   r?      )r5   Br   r
   )
r*   r@   UserWarningr-   r.   r   r   r   r   r    )r0   
match_textr;   r<   _s        r"   test_fallback_to_asym_methodz7TestDistDependenceMeasures.test_fallback_to_asym_methodX   sx    @
\\+Z8 	=!$!=!=u"ItQ  	4+A+A1Ed&8&8!<	= 	= 	=s   A BBc                 H   t        j                  t        j                  | j                  t
              t        j                  | j                  t
                    }t        |j                  | j                  d       t        |j                  | j                  d       t        |j                  | j                  d       t        |j                  | j                  d       t        |j                   | j"                  d       t        |j$                  | j&                  d       y )Ndtyper   r9   )r-   distance_statisticsr   asarrayr   floatr   r   test_statisticr   distance_correlationr   distance_covariancer   dvar_xr   dvar_yr   Sr   )r0   statss     r"   test_statistics_for_2d_inputz7TestDistDependenceMeasures.test_statistics_for_2d_inputa   s    ''JJtvvU+JJtvvU+

 	E00$2H2H!LE66qIE55t}}aHELL$//1=ELL$//1=EGGTZZ3r$   c                    t        j                  t        dd      t              }|t        j                  |      z   }t        j                  ||      }t        |j                  dd       t        |j                  dd       t        |j                  dd       t        |j                  d	d       t        |j                  d
d       t        |j                  dd       y )Nr      rJ   g#x@r   gi'?r9   g?*bn@g[f@gMo5@g8dH@)r   r   r   rN   r   r-   rL   r   rO   rP   rQ   rR   rS   rT   )r0   r   r   rU   s       r"   test_statistics_for_1d_inputz7TestDistDependenceMeasures.test_statistics_for_1d_inputn   s    HHU1b\/q	M''1- 	E00)Q?E66	1EE55y!DELL)Q7ELL)Q7EGGY2r$   c                    	 t        d      j                  j                  ddddf   }t        j                  dd t              }t        j                  |dd t              }t        j                  ||      }t        |j                  dd       t        |j                  d	d       t        |j                  d
d       t        |j                  dd       t        |j                   dd       t        |j"                  dd       t        j$                  ||d      \  }}}t        |dd       |dk(  sJ y# t        $ r t	        j
                  d       Y .w xY w)a  
        R code example from the `energy` package documentation for
        `energy::distance_covariance.test`:

        > x <- iris[1:50, 1:4]
        > y <- iris[51:100, 1:4]
        > set.seed(1)
        > dcov.test(x, y, R=200)

            dCov independence test (permutation test)

        data:  index 1, replicates 200
        nV^2 = 0.5254, p-value = 0.9552
        sample estimates:
             dCov
        0.1025087
        irisNr9   3Failed with HTTPError or URLError, these are random2   rJ   d   gU0*?gK`I?g3>?g/\?g;w?gtp[?   rD   r?   )r   datavaluesr   r*   skipr   rM   rN   r-   rL   r   rO   rP   rQ   rR   rS   rT   r.   )r0   r[   r   r   rU   rO   rG   r5   s           r"    test_results_on_the_iris_datasetz;TestDistDependenceMeasures.test_results_on_the_iris_dataset|   s$   $	O',,33ArrE:D JJtCRy.JJtBs|51''1-E00&!<E66	1EE55y!DELL)Q7ELL)Q7EGGXq1$'$@$@A$M!6NFA6% " 	OKKMN	Os   (D7 7EEc                    	 t        d      j                  j                  ddddf   }t        j                  dd t              }t        j                  |dd t              }t        j                  ||      }t        t        j                  |j                        dd	       t        |j                  d
d       t        |j                  dd       t        |j                   dd       t        |j"                  dd       t        |j$                  dd	       t        j&                  ||d      \  }}}t        t        j                  |      dd	       |dk(  sJ y# t        $ r t	        j
                  d       Y Tw xY w)ag  
        R code:
        ------

        > data("quakes")
        > x = quakes[1:50, 1:3]
        > y = quakes[51:100, 1:3]
        > dcov.test(x, y, R=200)

            dCov independence test (permutation test)

        data:  index 1, replicates 200
        nV^2 = 45046, p-value = 0.4577
        sample estimates:
            dCov
        30.01526
        quakesNr
   r\   r]   rJ   r^   i  r   gb]A>?r9   gP>@g8EGrEe@g9vqb@i)  r_   r`   r?   )r   ra   rb   r   r*   rc   r   rM   rN   r-   rL   r   roundrO   rP   rQ   rR   rS   rT   r.   )r0   rf   r   r   rU   rO   rG   r5   s           r"   "test_results_on_the_quakes_datasetz=TestDistDependenceMeasures.test_results_on_the_quakes_dataset   s6   $	O!(+00772A2>F JJvcr{%0JJvb~U3''1-BHHU%9%9:E1EE66	1EE55xCELL(A6ELL(A6EGGUA.$'$@$@A$M!6BHH^4eQ?% " 	OKKMN	Os   (E E?>E?c                     t        t        j                  | j                  | j                        | j
                  d       y Nr9   )r   r-   rP   r   r   r   r/   s    r"   	test_dcorz$TestDistDependenceMeasures.test_dcor   s*    C44TVVTVVD MM1	.r$   c                     t        t        j                  | j                  | j                        | j
                  d       y rj   )r   r-   rQ   r   r   r   r/   s    r"   	test_dcovz$TestDistDependenceMeasures.test_dcov   s*    C33DFFDFFC MM1	.r$   c                 l    t        t        j                  | j                        | j                  d       y rj   )r   r-   distance_variancer   r   r/   s    r"   	test_dvarz$TestDistDependenceMeasures.test_dvar   s$    C11$&&9 OOQ	0r$   N)__name__
__module____qualname__classmethodr#   r1   r6   r=   rA   rH   rV   rY   rd   rh   rk   rm   rp    r$   r"   r   r      sU    .$ .$`@N9	8=43&P&P..0r$   r   )numpyr   numpy.testingr   r*   statsmodels.datasetsr   %statsmodels.datasets.tests.test_utilsr   *statsmodels.stats.dist_dependence_measuresrU   dist_dependence_measuresr-   statsmodels.tools.sm_exceptionsr   r   ru   r$   r"   <module>r}      s)     -  - D 8 8 AK0 K0r$   