
    M/Ph                     ~   d dl Zd dlmZmZmZ d dlZd dlmZ	 d dl
mZ d dlmZmZmZ 	 d dlZdZn# e$ r dZY nw xY wd Zd Zej                            d	d
dg          ej                            d ej                     ej        d           ej        d           ej                     ej        e	j                   ej        e	j        dd dd          g          ej                            dddg          d                                     Zej        j        ej                            dddg          ej                            d ej                    dddg ej        d          dddg ej        d          dddg ej                    dddgg          d                                     ZdS )    N)assert_allcloseassert_array_equalassert_equal)knockoff_regeffects)RegressionFDR_design_knockoff_equi_design_knockoff_sdpTFc            	         t           j                            d           t           j                            d          } t	          |           \  }}}t          j        ||fd          }t          j        |j        |          }|ddddf         }|dd dd f         }|dddd f         }t          ||dd	           t          ||z
  t          j	        |t          j
        d          z            dd	           d S )
N&	  
      size   axisr   r   -C6?rtolatol)nprandomseednormalr   concatenatedotTr   diagones	exogexog1exog2slexogagmatcm1cm2cm3s	            e/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/statsmodels/stats/tests/test_knockoff.py	test_equir,      s     INN49))D,T22E5"NE5>222E6%'5!!D
qsAaCx.C
qrr122v,C
qsABBw-CC4d3333C#IrwrBGAJJ77dNNNNNN    c            	         t           sd S t          j                            d           t          j                            d          } t          |           \  }}}t          j        ||fd          }t          j        |j        |          }|ddddf         }|dd dd f         }|dddd f         }t          ||dd	           t          ||z
  t          j
        |t          j        d          z            d
d
	           d S )Nr   r   r   r   r   r   r   r   r   gh㈵>)
has_cvxoptr   r   r   r   r	   r   r   r   r   r   r    r!   s	            r+   test_sdpr0   %   s	     INN49))D+D11E5"NE5>222E6%'5!!D
qsAaCx.C
qrr122v,C
qsABBw-CC4d3333C#IrwrBGAJJ77dNNNNNNr-   p1   2   tester)pursuitr   )L1_wtalpha)fit_kwsmethodequisdpc                    |dk    r	t           sd S t          j                            d           d}t          j                            |          }t          j                            || f          }t          ||||          }t          t          |j                  |            t          t          |j	                  |            |
                                 d S )Nr;   i	     r   )design_method)r/   r   r   r   r   r   r   lenstatsfdrsummary)r1   r4   r9   nyxkns          r+   test_testersrG   <   s     zINN4A
	a  A
	q!f%%A	q!V6	:	:	:BRX"""RVa   JJLLLLLr-   ztester,n,p,esi,  d      g      @i  r=   c                 p   | dk    r	t           sd S t          j                            d           d}d}d}| dk    r	t           sd S d\  }}	t	          |          D ]}
t          j                            ||f          }|t          j        t          j        ||z  d                    z  }|d	t          j        |          z  z  }t          j	        |d d d|f         |          t          j                            |          z   }t          |||          }|                    |          }t          j        |j        |k              }t          j        |j        |d          |k              }||t          |d
          z  z  }|	t          j        |j        d|         |k              z  }	t          j        |j        | k              d
t          j        |j        |k              z   z  }t          ||k     d           |	|z  }	||z  }t!          |	dk    d           t!          ||dz   k     d           d S )Nr;   i     g?r   )r   r   r   r   r   Tg333333?g?)r/   r   r   r   ranger   sqrtsumaranger   r   	thresholdr@   maxmeanr   r   )r9   r4   rC   r1   esnpos
target_fdrnreprA   powerkrE   coeffrD   rF   trcpfpestimated_fdrs                      r+   test_simr_   X   s2    zINN5 D J DzJC4[[ 7 7 I1a&))	RWRVAaC^^$$$ b29T??**F1QQQ$Y<''")*:*:*:*B*BB1a(( \\*%% VBHN## VBHTUUOr)** 	rCAJJ 	!D&)R/000 RC00bfRX^4446]Z/6666	TME4KC us{D))) sZ#--t44444r-   ) numpyr   numpy.testingr   r   r   pyteststatsmodels.apiapismstatsmodels.statsr   krstatsmodels.stats._knockoffr   r   r	   cvxoptr/   ImportErrorr,   r0   markparametrizeCorrelationEffectsForwardEffects
OLSEffectsRegModelEffectsOLSrG   slowr_    r-   r+   <module>rt      s       K K K K K K K K K K        7 7 7 7 7 7? ? ? ? ? ? ? ? ? ?MMMJJ   JJJO O O(O O O. r2h''(2(**$2$U333$2$T222 2=??%2%bf--%2%bfd89A.F.FH H H$   FE?33  43  ('" FE?33Rc3*Ru%%%sC5Rt$$$c34R]__dC%	+  =5 =5  43 =5 =5 =5s   1 ;;