
    !g                        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d Zd Zej,                  j/                  d	d
dg      ej,                  j/                  d ej0                          ej2                  d       ej2                  d       ej4                          ej6                  e	j8                         ej6                  e	j8                  dd dd      g      ej,                  j/                  dddg      d                      Zej,                  j<                  ej,                  j/                  dddg      ej,                  j/                  d ej0                         dddg ej2                  d      dddg ej2                  d      dddg ej4                         dddgg      d                      Zy# e$ r dZY w xY w)    N)assert_allcloseassert_array_equalassert_equal)knockoff_regeffects)RegressionFDR_design_knockoff_equi_design_knockoff_sdpTFc            	         t         j                  j                  d       t         j                  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	       y )
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	            b/var/www/dash_apps/app1/venv/lib/python3.12/site-packages/statsmodels/stats/tests/test_knockoff.py	test_equir,      s     IINN499)D,T2E5"NNE5>2E66%''5!D
qsAaCx.C
qr12v,C
qsABw-CC4d3C#IrwwrBGGAJ7dN    c            	         t         sy t        j                  j                  d       t        j                  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
	       y )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     IINN499)D+D1E5"NNE5>2E66%''5!D
qsAaCx.C
qr12v,C
qsABw-CC4d3C#IrwwrBGGAJ7dNr-   p1   2   tester)pursuitr   )L1_wtalpha)fit_kwsmethodequisdpc                    |dk(  rt         sy t        j                  j                  d       d}t        j                  j	                  |      }t        j                  j	                  || f      }t        ||||      }t        t        |j                        |        t        t        |j                        |        |j                          y )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IINN4A
		a A
		q!f%A	q!V6	:BRXX"RVVa JJLr-   ztester,n,p,esi,  d      g      @i  r=   c                 H   | dk(  rt         sy t        j                  j                  d       d}d}d}| dk(  rt         sy d\  }}	t	        |      D ]  }
t        j                  j                  ||f      }|t        j                  t        j                  ||z  d            z  }|d	t        j                  |      z  z  }t        j                  |d d d|f   |      t        j                  j                  |      z   }t        |||      }|j                  |      }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kD  d       t!        ||dz   k  d       y )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   s    zIINN5 D J DzJC4[ 7 II1a&)	RWWRVVAaC^$$ b299T?**FF1Q$Y<'"))*:*:*:*BB1a( \\*% VVBHHN# VVBHHTUOr)* 	rCAJ 	!D)R/00 RC0bffRXX^446]Z/6=7@ 
TME4KC us{D) sZ#--t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   7? ?J
O(O. r2h'(2((*$2$$U3$2$$T2 2==?%2%%bff-%2%%bffd89A.FH$  FE?3 4 (" FE?3Rc3*Ru%sC5Rt$c34R]]_dC%	+ =5 4 =5g  Js   G GG