ó
áp7]c           @   s  d  d l  Z d  d l m Z m Z m Z d  d l Z d  d l j Z	 d  d l
 m Z d  d l m Z m Z m Z y d  d l Z e Z Wn e k
 rž e Z n Xd „  Z d „  Z e j j d d d	 g ƒ e j j d
 e j ƒ  e j d e ƒ e j d e ƒ e j ƒ  e j e	 j ƒ e j e	 j e d i d d 6d d 6ƒ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 j ƒ  d d d g e j d e ƒ d d d g e j d e ƒ d d d g e j ƒ  d d d g g ƒ d „  ƒ ƒ ƒ Z! d S(   iÿÿÿÿN(   t   assert_allcloset   assert_array_equalt   assert_equal(   t   knockoff_regeffects(   t   RegressionFDRt   _design_knockoff_equit   _design_knockoff_sdpc    	      C   s  t  j j d ƒ t  j j d d ƒ }  t |  ƒ \ } } } t  j | | f d d ƒ} t  j | j | ƒ } | d d … d d … f } | d d  … d d  … f } | d d … d d  … f } t | | d d	 d
 d	 ƒt | | t  j	 | t  j
 d ƒ ƒ d d	 d
 d	 ƒd  S(   Ni&	  t   sizei
   i   t   axisi   i    t   rtolg-Cëâ6?t   atol(   i
   i   (   t   npt   randomt   seedt   normalR   t   concatenatet   dott   TR    t   diagt   ones(	   t   exogt   exog1t   exog2t   slt   exogat   gmatt   cm1t   cm2t   cm3(    (    sD   lib/python2.7/site-packages/statsmodels/stats/tests/test_knockoff.pyt	   test_equi   s    c    	      C   s  t  s
 d  St j j d ƒ t j j d d ƒ }  t |  ƒ \ } } } t j | | f d d ƒ} t j | j | ƒ } | d d … d d … f } | d d  … d d  … f } | d d … d d  … f } t	 | | d d	 d
 d	 ƒt	 | | t j
 | t j d ƒ ƒ d d d
 d ƒd  S(   Ni&	  R   i
   i   R   i   i    R	   g-Cëâ6?R
   gñhãˆµøä>(   i
   i   (   t
   has_cvxoptR   R   R   R   R   R   R   R   R    R   R   (	   R   R   R   R   R   R   R   R   R   (    (    sD   lib/python2.7/site-packages/statsmodels/stats/tests/test_knockoff.pyt   test_sdp%   s    t   pi1   i2   t   testert   pursuitt   fit_kwsi    t   L1_wti   t   alphat   methodt   equit   sdpc         C   s¯   | d k r t  r d  St j j d ƒ d } t j j d | ƒ } t j j d | |  f ƒ } t | | | d | ƒ} t t | j ƒ |  ƒ t t | j	 ƒ |  ƒ | j
 ƒ  d  S(   NR(   i€	  iÈ   R   t   design_method(   R   R   R   R   R   R   R   t   lent   statst   fdrt   summary(   R    R!   R&   t   nt   yt   xt   kn(    (    sD   lib/python2.7/site-packages/statsmodels/stats/tests/test_knockoff.pyt   test_testers<   s    s   tester,n,p,esi,  id   i   g      @i¸  iÈ   c         C   s  |  d k r t  r d  St j j d ƒ d } d } d } |  d k rP t  rP d  Sd \ } }	 xyt | ƒ D]k}
 t j j d | | f ƒ } | t j t j | | d ƒ ƒ :} | d t j | ƒ } t j	 | d  d  … d | … f | ƒ t j j d | ƒ } t
 | | | ƒ } | j | ƒ } t j | j | k ƒ } t j | j | | k ƒ } | | t | d	 ƒ 7} |	 t j | j d | !| k ƒ 7}	 t j | j | k ƒ d	 t j | j | k ƒ } t | | k  t ƒ qi W|	 | :}	 | | :} t |	 d
 k t ƒ t | | d k  t ƒ d  S(   NR(   iâ¨  i   gš™™™™™É?i
   i    R   iÿÿÿÿi   g333333ã?gš™™™™™©?(   i    i    (   R   R   R   R   t   rangeR   t   sqrtt   sumt   arangeR   R   t	   thresholdR+   t   maxt   meanR   t   TrueR   (   R&   R!   R.   R    t   est   npost
   target_fdrt   nrepR,   t   powert   kR0   t   coeffR/   R1   t   trt   cpt   fpt   estimated_fdr(    (    sD   lib/python2.7/site-packages/statsmodels/stats/tests/test_knockoff.pyt   test_simX   s6    #;#

("   t   numpyR   t   numpy.testingR    R   R   t   pytestt   statsmodels.apit   apit   smt   statsmodels.statsR   t   krt   statsmodels.stats._knockoffR   R   R   t   cvxoptR:   R   t   ImportErrort   FalseR   R   t   markt   parametrizet   CorrelationEffectst   ForwardEffectst
   OLSEffectst   RegModelEffectst   OLSR2   t   slowRF   (    (    (    sD   lib/python2.7/site-packages/statsmodels/stats/tests/test_knockoff.pyt   <module>   s:   

				*	