
    ir                        d Z ddlZddlZddlZddlmZmZmZm	Z	m
Z
 ddlZddlmc mZ ddlmZ ddlmZ 	 ddlm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! G d de      Z" G d de      Z# G d de      Z$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*d+ Z+ G d, d-e      Z, G d. d/e      Z- G d0 d1e      Z.d2 Z/ej`                  jc                  d3d45      d6        Z2d7 Z3y# e$ r Y w xY w)8zTests for statistical power calculations

Note:
    tests for chisquare power are in test_gof.py

Created on Sat Mar 09 08:44:49 2013

Author: Josef Perktold
    N)assert_allcloseassert_almost_equalassert_array_equalassert_equalassert_raises)Holder)HypothesisTestWarningc                   V    e Zd Zd Zd Zd Zej                  j                  d        Z	y)CheckPowerMixinc                 8   t        j                   | j                        }|d= |j                  | j                         t	        | d      r| j
                  }nd}| j                         }t         |j                  di || j                  j                  |       y )Npowerdecimal   r    )
copykwdsupdate
kwds_extrahasattrr   clsr   r   res2)selfr   r   res1s       h/home/ubuntu/crypto_trading_bot/.venv/lib/python3.12/site-packages/statsmodels/stats/tests/test_power.py
test_powerzCheckPowerMixin.test_power$   sp    yy#MDOO$4#llGGxxzJDJJ..		Q    c                    | j                         }t        j                  | j                        }|d= |j                  | j                         t        | d      r| j                  }nd|v rdnd}d|dg}|D cg c]  }|j                  |       }}t        | d      r| j                  }nd} |j                  |i |}t        || j                  j                  |	       y c c}w )
Nr   
args_namesnobsnobs1effect_sizealphar   r   r   )r   r   r   r   r   r   r   popr   r   r   r   )	r   r   r   r   nobs_argargsr   ress	            r   test_positionalzCheckPowerMixin.test_positional1   s    xxzyy#MDOO$ 4&J$nF'E'8J *44#444#llGGdjj$'$'C'B 5s   8C"c                    t        j                   | j                        }|j                  | j                         | j                  D ]C  }||   }d ||<    | j	                         j
                  di |}t        ||d|dz          |||<   E y )NgMbP?z failed)rtolerr_msgr   )r   r   r   r   r   solve_powerr   )r   r   keyvalueresults        r   
test_rootszCheckPowerMixin.test_rootsK   s    yy#DOO$ 99 
	C IEDI+TXXZ++3d3FFEsYO DI
	r   c           
      `   | j                   t        j                  t        j                  fv rt	        j
                  d       t        j                         }|j                  ddd      } | j                         j                  ddt        j                  dd      t        j                  g d      |dd| j                  }|j                  ddd      } | j                         j                  dd	t        j                  g d
      t        j                  ddd      |dd| j                   y )Nzskip FTestPower plot_power      r    d   )皙?皙?333333?      ?r4   zPower of t-Test)dep_varr    r"   axtitlees)
         2   F   r5   {Gz?3    r   )r   smp
FTestPowerFTestPowerF2pytestskippltfigureadd_subplot
plot_powernparangearrayr   linspace)r   close_figuresfigr;   s       r   test_power_plotzCheckPowerMixin.test_power_plot\   s    88(8(899KK45jjl__Q1%#dhhj## 
1c"!89#
 oo
 __Q1%
 	
34D!R0	
 oo	
r   N)
__name__
__module____qualname__r   r)   r1   rI   mark
matplotlibrU   r   r   r   r   r   "   s1    
RC4" [[
 
r   r   c                       e Zd Zed        Zy)TestTTPowerOneS1c                 (   t               }d|_        d|_        d|_        d|_        d|_        d|_        d|_        || _        |j                  |j                  |j                  |j                  d| _	        i | _
        t        j                  | _        y )	Nr@   r4   皙?g4l?	two.sidedNULL#One-sample t test power calculationr"   r    r#   r   r   nd	sig_levelr   alternativenotemethodr   r   r   rF   
TTestPowerr   r   r   s     r   setup_classzTestTTPowerOneS1.setup_class   s}    
 x'
&	;66FF^^ZZ	
 ..r   NrV   rW   rX   classmethodrl   r   r   r   r\   r\          ! !r   r\   c                       e Zd Zed        Zy)TestTTPowerOneS2c                 (   t               }d|_        d|_        d|_        d|_        d|_        d|_        d|_        || _        |j                  |j                  |j                  |j                  d| _	        i | _
        t        j                  | _        y )	Nr?   r7   r^   gOg?r_   r`   ra   rb   rc   rk   s     r   rl   zTestTTPowerOneS2.setup_class   s     x '
&	;66FF^^ZZ	
 ..r   Nrm   r   r   r   rq   rq           ! !r   rq   c                       e Zd Zed        Zy)TestTTPowerOneS3c                 ,   t               }d|_        d|_        d|_        d|_        d|_        d|_        d|_        || _        |j                  |j                  |j                  |j                  d| _	        d	d
i| _
        t        j                  | _        y )Nr@   r4   r^   gk?greaterr`   ra   rb   rg   largerrc   rk   s     r   rl   zTestTTPowerOneS3.setup_class   s     x &
$	;66FF^^ZZ	
 (2..r   Nrm   r   r   r   ru   ru      ro   r   ru   c                       e Zd Zed        Zy)TestTTPowerOneS4c                 ,   t               }d|_        d|_        d|_        d|_        d|_        d|_        d|_        || _        |j                  |j                  |j                  |j                  d| _	        dd	i| _
        t        j                  | _        y )
Nr?   r^   gwoƔ?rw   r`   ra   rb   rg   rx   rc   rk   s     r   rl   zTestTTPowerOneS4.setup_class   s     x '
$	;66FF^^ZZ	
 (2..r   Nrm   r   r   r   rz   rz      ro   r   rz   c                       e Zd Zed        Zy)TestTTPowerOneS5c                 ,   t               }d|_        d|_        d|_        d|_        d|_        d|_        d|_        || _        |j                  |j                  |j                  |j                  d| _	        d	d
i| _
        t        j                  | _        y )Nr?   r7   r^   g ~x?lessr`   ra   rb   rg   smallerrc   rk   s     r   rl   zTestTTPowerOneS5.setup_class   s     x )
!	;66FF^^ZZ	
 (3..r   Nrm   r   r   r   r}   r}      rs   r   r}   c                       e Zd Zed        Zy)TestTTPowerOneS6c                 ,   t               }d|_        d|_        d|_        d|_        d|_        d|_        d|_        || _        |j                  |j                  |j                  |j                  d| _	        d	d
i| _
        t        j                  | _        y )Nr?   gɿr^   g%?r   r`   ra   rb   rg   r   rc   rk   s     r   rl   zTestTTPowerOneS6.setup_class  s     x %
!	;66FF^^ZZ	
 (3..r   Nrm   r   r   r   r   r     rs   r   r   c                       e Zd Zed        Zy)TestTTPowerTwoS1c                 *   t               }d|_        d|_        d|_        d|_        d|_        d|_        d|_        || _        |j                  |j                  |j                  |j                  dd| _	        i | _
        t        j                  | _        y )	Nr@   r4   r^   g?'Ow?r_   n is number in *each* group#Two-sample t test power calculationr"   r!   r#   r   ratior   rd   re   rf   r   rg   rh   ri   r   r   r   rF   TTestIndPowerr   rk   s     r   rl   zTestTTPowerTwoS1.setup_class,  s    
 x&
&1	;66VV^^ZZ
 ##r   Nrm   r   r   r   r   r   *      $ $r   r   c                       e Zd Zed        Zy)TestTTPowerTwoS2c                 *   t               }d|_        d|_        d|_        d|_        d|_        d|_        d|_        || _        |j                  |j                  |j                  |j                  dd	| _	        i | _
        t        j                  | _        y )
Nr?   r6   r^   g|6?r_   r   r   r4   r   r   rk   s     r   rl   zTestTTPowerTwoS2.setup_classH  s     x (
&1	;66VV^^ZZ
 ##r   Nrm   r   r   r   r   r   F  r   r   r   c                       e Zd Zed        Zy)TestTTPowerTwoS3c                 .   t               }d|_        d|_        d|_        d|_        d|_        d|_        d|_        || _        |j                  |j                  |j                  |j                  dd| _	        d	d
i| _
        t        j                  | _        y )Nr@   r4   r^   gE?rw   r   r   r   rg   rx   r   rk   s     r   rl   zTestTTPowerTwoS3.setup_classd  s     x &
$1	;66VV^^ZZ
 (2##r   Nrm   r   r   r   r   r   b  r   r   r   c                       e Zd Zed        Zy)TestTTPowerTwoS4c                 ,   t               }d|_        d|_        d|_        d|_        d|_        d|_        d|_        || _        |j                  |j                  |j                  |j                  d| _	        d	d
i| _
        t        j                  | _        y )Nr@   rC   r^   g}B_?rw   r   r   r"   r!   r#   r   rg   rx   r   rk   s     r   rl   zTestTTPowerTwoS4.setup_class  s     x '
$1	;66VV^^ZZ	
 (2##r   Nrm   r   r   r   r   r   ~  s     $ $r   r   c                       e Zd Zed        Zy)TestTTPowerTwoS5c                 .   t               }d|_        d|_        d|_        d|_        d|_        d|_        d|_        || _        |j                  |j                  |j                  |j
                  dd	| _	        d
di| _
        t        j                  | _        y )Nr?   r@   r6   r^   gۧ4?r_   t test power calculation      ?r   rg   z	two-sidedr   n1n2re   rf   r   rg   ri   r   r   r   rF   r   r   rk   s     r   rl   zTestTTPowerTwoS5.setup_class  s     x '
&066WW^^ZZ
 (5##r   Nrm   r   r   r   r   r          $ $r   r   c                       e Zd Zed        Zy)TestTTPowerTwoS6c                 .   t               }d|_        d|_        d|_        d|_        d|_        d|_        d|_        || _        |j                  |j                  |j                  |j
                  dd	| _	        d
di| _
        t        j                  | _        y )Nr?   r@   r6   r^   gSꢸ?rw   r   r   r   rg   rx   r   rk   s     r   rl   zTestTTPowerTwoS6.setup_class  s     x (
$066WW^^ZZ
 (2##r   Nrm   r   r   r   r   r     r   r   r   c                  h   d} d}d}d}t        j                  ||dz  d      }t        j                         j                  ||d      }t        j                         j	                  dddd       }d}t        ||d	       t        ||d	       t        ||d	       t        j                  d
|dz  d      }d}	t        ||	d	       t        j                         j                  d|dd      }d}	t        ||	d	       t        j                         j                  d
|dd      }d}	t        ||	d	       y )Nr4   r8   P   r^   g       @r   kGZ{h?   r   g{Gzgթ?   rC   rx   )rg   gJy ?7!n?)rF   normal_powerNormalIndPowerr   r-   r   )
sigmare   r    r#   r   r   res3res_Rnorm_pow
norm_pow_Rs
             r   test_normal_power_explicitr     s.   EADEAtcz40D%%at4D++rT , D EeR0eR0eR0tcz48H$J*b9!!#))$d)QH%J*b9 !!#))%t)RH#J*b9r   c                       e Zd Zed        Zy)TestNormalIndPower1c                 *   t               }d|_        d|_        d|_        d|_        d|_        d|_        d|_        || _        |j                  |j                  |j                  |j                  dd	| _	        i | _
        t        j                  | _        y )
Nr   r8   r^   r   r_   r`   two sample power calculationr4   r   r   rd   re   rf   r   rg   rh   ri   r   r   r   rF   r   r   rk   s     r   rl   zTestNormalIndPower1.setup_class  s     x&
&	466VV^^ZZ
 $$r   Nrm   r   r   r   r   r     s    % %r   r   c                       e Zd Zed        Zy)TestNormalIndPower2c                 .   t               }d|_        d|_        d|_        d|_        d|_        d|_        d|_        || _        |j                  |j                  |j                  |j                  dd	| _	        d
di| _
        t        j                  | _        y )NrC   r   r^   r   r   z]Difference of proportion power calculation for binomial distribution (arcsine transformation)zsame sample sizesr4   r   rg   r   )r   hrd   rf   r   rg   ri   rh   r   r   r   rF   r   r   rk   s     r   rl   zTestNormalIndPower2.setup_class  s    x '
!@ 	 (	66VV^^ZZ
 (3$$r   Nrm   r   r   r   r   r     s    % %r   r   c                       e Zd Zed        Zy)TestNormalIndPower_onesamp1c                 ,   t               }d|_        d|_        d|_        d|_        d|_        d|_        d|_        || _        |j                  |j                  |j                  |j                  d| _	        d	d
i| _
        t        j                  | _        y )N(   r8   r^   r   r_   r`   r   r   r   r   r   rk   s     r   rl   z'TestNormalIndPower_onesamp1.setup_class1  s    
 x&
&	466VV^^ZZ	
 "1$$r   Nrm   r   r   r   r   r   /  s    % %r   r   c                       e Zd Zed        Zy)TestNormalIndPower_onesamp2c                     t               }d|_        d|_        d|_        d|_        d|_        d|_        || _        |j                  |j                  |j                  |j                  d| _        dd	d
| _	        t        j                  | _        y )NrC   r   r^   r   r   zBMean power calculation for normal distribution with known variancer   r   r   )r   rg   )r   re   rd   rf   r   rg   ri   r   r   r   rF   r   r   rk   s     r   rl   z'TestNormalIndPower_onesamp2.setup_classO  s     x '
!P 	 66VV^^ZZ	
 $%Y?$$r   Nrm   r   r   r   r   r   L  s     % %r   r   c                   "    e Zd Zed        Zd Zy)TestChisquarePowerc                 F   t               }d|_        d|_        d|_        d|_        d|_        d|_        d|_        || _        |j                  |j                  |j                  |j
                  d| _	        d	|j                  d
z   i| _
        t        j                  | _        y )Nr6         r^   gޢ}ܪ?zChi squared power calculationzN is the number of observationsrb   n_binsr4   )r   wNdfrf   r   ri   rh   r   r   r   rF   GofChisquarePowerr   rk   s     r   rl   zTestChisquarePower.setup_classm  s     x(
55	66FF^^ZZ	
 #DGGaK0''r   c                 h   | j                         }g d}t        j                  | j                        }|d= |j                  | j                         |D cg c]  }||   	 }}t        | d      r| j                  }nd}t         |j                  | | j                  j                  |       y c c}w )N)r"   r    r#   r   r   r   r   r   )
r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r&   r'   r   s          r   r)   z"TestChisquarePower.test_positional  s    xxz?
yy#MDOO$%/0cS	004#llGGJDJJ-tyyP 1s   B/N)rV   rW   rX   rn   rl   r)   r   r   r   r   r   k  s    ( (0Qr   r   c                     dD ]A  } t        j                  dd|       }t        j                  ddd| d      }t        ||d	       C t        j                  d
ddd      }d}t        ||d	       t               }d|_        d|_        d|_        d|_	        d|_
        d|_        t        j                  t        j                  |j                        |j                  |j                  |j                  d      }t        ||j                  d	       t               }d|_        d|_        d|_        d|_	        d|_
        d|_        t        j                  t        j                  |j                        |j                  |j                  |j                  d      }t        ||j                  d	       t               }d|_        d|_        d|_        d|_	        d|_
        d|_        t        j                  t        j                  |j                        |j                  |j                  |j                  d      }t        ||j                  d	       y )N)rC   r^   r6   r7   r9   rC         r4   r   )r#   nccr   r         ?8d`?r>   )k_groupsAf?r   r   g\L?%Multiple regression power calculation
ףp=
?gd)~?   r6   Ōh,]#?)rF   ttest_powerftest_powerr   ftest_anova_powerr   uvf2rf   r   ri   rO   sqrt)r#   res0r   r   s       r   test_ftest_powerr     s    / 3tS%0tS!5a@D$23   sFR@DDdA. 8D DFDFDGDN#DJ9DK??
$&&$&&AD djj!48D DFDFDGDN#DJ9DK??
$&&$&&AD djj!48D DFDFDGDN"DJ9DK??
$&&$&&AD djj!4r   c                       e Zd Zed        Zy)TestFtestAnovaPowerc                 @   t               }d|_        d|_        d|_        d|_        d|_        d|_        || _        |j                  |j                  |j                  |j
                  d| _        d|j                  i| _	        t        j                  | _        d	| _        y )
Nr   r   r>   r   r   r   rb   r   r   )r   frd   kr#   r   ri   r   r   r   rF   FTestAnovaPowerr   r   rk   s     r   rl   zTestFtestAnovaPower.setup_class  s    x 

=66FFZZZZ	
 %dff-%%r   Nrm   r   r   r   r   r     s       r   r   c                   "    e Zd Zed        Zd Zy)TestFtestPowerc                 v   t               }d|_        d|_        d|_        d|_        d|_        d|_        || _        t        j                  |j                        |j                  |j                  |j                  |j
                  d| _
        i | _        g d| _        t        j                  | _        d| _        y 	Nr   r   r   r6   r   r   )r"   df_numdf_denomr#   r   )r"   r   r   r#   )r   r   r   r   rf   r   ri   r   rO   r   r   r   r   rF   rG   r   r   rk   s     r   rl   zTestFtestPower.setup_class  s    x &
=77477+ff^^ZZ
 G..r   c                 \   t        j                  t              5  t        j                         j                  ddddd        d d d        t        j                  t              5  t        j                         j                  ddddd       d d d        y # 1 sw Y   TxY w# 1 sw Y   y xY w)Nr8   r6   ?r3   )r"   r#   r   r   r       )r"   r#   r   r   junk)rI   warnsUserWarningrF   rG   r-   raises
ValueError)r   s    r   test_kwargszTestFtestPower.test_kwargs  s    \\+& 	NN((s# ) 	
 ]]:& 	NN((s# ) 	 		 	
	 	s   )B$)B"B"B+N)rV   rW   rX   rn   rl   r   r   r   r   r   r     s     6
r   r   c                       e Zd Zed        Zy)TestFtestPowerF2c                 P   t               }d|_        d|_        d|_        d|_        d|_        d|_        || _        |j                  |j                  |j                  |j                  |j
                  d| _        i | _	        g d| _
        t        j                  | _        d| _        y r   )r   r   r   r   rf   r   ri   r   r   r   r   rF   rH   r   r   rk   s     r   rl   zTestFtestPowerF2.setup_class.  s    x &
=77ff^^ZZ
 G""r   Nrm   r   r   r   r   r   ,  s     r   r   c            
         t        j                         } d}| j                  |ddd dd      }t        |dd	       | j                  d dd|dd      }t        ||d
	       t	        | j
                  d   d       t	        t        | j
                        d       ddd| j                  d<   d| j                  d<   | j                  d dd|dd      }t        ||d
	       t	        | j
                  d   d       t	        t        | j
                        dt        | j
                               t        j                  | j                  d<   | j                  d dd|dd      }t        ||d
	       t	        | j
                  d   d       t	        t        | j
                        d
       | j                  dddd       }t        |d       t        t        | j                  d ddddd       t        j                  t               5  t        j"                  t              5  | j                  d ddddd       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr6   @  rC   r4   rx   r!   r#   r   r   rg   lDt&?r   r   r   r   r3   iupplowr"   gQ?r   )r,   )r!   r#   r"   r   g{Gzt?)r!   r"   r#   r   r   rg   )rF   r   r-   r   r   cache_fit_reslenstart_bqexp	start_ttpreprrO   nanr   r   rI   r   r	   r   )nipes0pow_r=   s       r   test_power_solverr  K  sG    


C C??4t4qh  D 11=	DDx 
 
B C+""1%q)S&&'+ .1%=COOM"#'CMM- 	DDx 
 
B C+""1%q)S&&'D9J9J4KL#%66CMM- 	DDx 
 
B C+""1%q)S&&'+ 
t4Qd	KBD!
 	 
+	, 	]]:& 	OO$  		 		 		 	s$   II3II		IIz%Known failure on modern SciPy >= 0.10T)reasonstrictc            	         d} t        j                         }ddd|j                  d<   |j                  dd d| dd	
      }t	        |dd       t        |j                  d   d       t        t        |j                        d       t        j                  |j                  d<   ddlm} t        j                  |      5  |j                  dd d| dd	
       d d d        t        j                          5  t        j"                  d       |j                  dd d| dd	
      }t        |j                  d   d       t        t        |j                        d       d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr   rA   r   r   r!   r6   rC   r4   rx   r   r   r   r   r   r   )ConvergenceWarningignore)rF   r   r  r-   r   r   r  r  rO   r  r  statsmodels.tools.sm_exceptionsr  rI   r   warningscatch_warningssimplefilter)r
  r  valr  s       r   test_power_solver_warnr    s[    D



C')#6COOG
//4t4qh  C T1-""1%q)S&&'+  VVCMM'B	(	) 
t4t1( 	 	

 
	 	 	" 0h'oot4t1(  
 	S&&q)1-S**+Q/0 0
 
0 0s   >E 2A%E, E),E5c                      t        j                  ddddd        t        j                  g d      } t        j                  g d      }t        j                  d|| dd      }t	        ||| k     d       y )	Nr   皙?r^   r3   )std_alternative)rC   r^   r6   r9   r  )gGz?gffffff?r   r9   r7   r   )rF   normal_sample_size_one_tailrO   asarrayr   )alphaspowersnobs_with_zeross      r    test_normal_sample_size_one_tailr    sf     ##AsD!TJ ZZ34FZZ34F55aANOv'78!<r   )4__doc__r   r  numpyrO   numpy.testingr   r   r   r   r   rI   statsmodels.stats.powerstatsr   rF   (statsmodels.stats.tests.test_weightstatsr   r  r	   matplotlib.pyplotpyplotrK   ImportErrorr   r\   rq   ru   rz   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  rY   xfailr  r  r   r   r   <module>r*     s        % % ; A	#
R
 R
F! !6! !8! !6! !6! !8! !8$ $8$ $8$ $8$ $8$ $:$ $::D%/ %6%/ %<%/ %:%/ %>'Q 'QTB5L#/ #L(_ (V >@H A$O$0 P$0N=s  		s   E EE