
    M/Pho                     F   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
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 n# e$ r Y nw xY w 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 Z0ej1        2                    d3d45          d6             Z3d7 Z4dS )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_almost_equalassert_allcloseassert_raisesassert_equalassert_warnsassert_array_equal)Holder)HypothesisTestWarningc                   J    e Zd Zd Zd Zd Zej        j        d             Z	dS )CheckPowerMixinc                    t          j         | j                  }|d= |                    | j                   t	          | d          r| j        }nd}|                                 }t           |j        di || j	        j        |           d S )Npowerdecimal   r    )
copykwdsupdate
kwds_extrahasattrr   clsr   r   res2)selfr   r   res1s       b/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/statsmodels/stats/tests/test_power.py
test_powerzCheckPowerMixin.test_power   s    y##MDO$$$4## 	lGGGxxzzJDJ....	QQQQQQ    c                    |                                  }t          j        | j                  d=                     | j                   t          | d          r| j        }ndv rdnd}d|dg}fd|D             }t          | d          r| j        }nd	} |j        |i }t          || j
        j        |
           d S )Nr   
args_namesnobsnobs1effect_sizealphac                 :    g | ]}                     |          S r   )pop.0argr   s     r   
<listcomp>z3CheckPowerMixin.test_positional.<locals>.<listcomp>=   s#    444#444r   r   r   r   )r   r   r   r   r   r   r    r   r   r   r   )r   r   r    nobs_argsr   resr   s          @r   test_positionalzCheckPowerMixin.test_positional,   s    xxzz y##MDO$$$ 4&& 	9JJ$nnFF'E'8J 54444444## 	lGGGdj$'$''C'BBBBBBr   c                    t          j         | j                  }|                    | j                   | j        D ]I}||         }d ||<    |                                 j        di |}t          ||d|dz              |||<   Jd S )NgMbP?z failed)rtolerr_msgr   )r   r   r   r   r   solve_powerr   )r   r   keyvalueresults        r   
test_rootszCheckPowerMixin.test_rootsG   s    y##DO$$$ 9 
	 
	C IEDI+TXXZZ+33d33FFEs9}MMMM DII
	 
	r   c           
      4   | j         t          j        t          j        fv rt	          j        d           t          j                    }|                    ddd          } |                                  j	        ddt          j        dd          t          j        g d          |dd| j        }|                    ddd          } |                                  j	        dd	t          j        g d
          t          j        ddd          |dd| j         d S )Nzskip FTestPower plot_power      r!   d   )皙?皙?333333?      ?r9   zPower of t-Test)dep_varr!   r#   axtitlees)
         2   F   r:   {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_plotX   s)   8(8999K4555jll__Qq###dhhjj# 5F(*	!S(9(9.0h7N7N7N.O.O%'/@	5 5
 %)O5 5 __Qq##

 	1d#%8,E,E,E#F#F*,+dAr*B*B!#2		1 	1
 !%	1 	1 	1 	1 	1r   N)
__name__
__module____qualname__r   r.   r6   rN   mark
matplotlibrZ   r   r   r   r   r      sh        
R 
R 
RC C C6  " [1 1 1 1 1r   r   c                   $    e Zd Zed             ZdS )TestTTPowerOneS1c                    t                      }d|_        d|_        d|_        d|_        d|_        d|_        d|_        || _        |j        |j        |j        |j        d| _	        i | _
        t          j        | _        d S )	NrE   r9   皙?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   rK   
TTestPowerr   r   r   s     r   setup_classzTestTTPowerOneS1.setup_class{   s|    
 xx'
&	;#'646"ndjB B.r   Nr[   r\   r]   classmethodrq   r   r   r   ra   ra   y   -        ! ! [! ! !r   ra   c                   $    e Zd Zed             ZdS )TestTTPowerOneS2c                    t                      }d|_        d|_        d|_        d|_        d|_        d|_        d|_        || _        |j        |j        |j        |j        d| _	        i | _
        t          j        | _        d S )	NrD   r<   rc   gOg?rd   re   rf   rg   rh   rp   s     r   rq   zTestTTPowerOneS2.setup_class   s~     xx '
&	;#'646"ndjB B.r   Nrr   r   r   r   rv   rv      /         ! ! [! ! !r   rv   c                   $    e Zd Zed             ZdS )TestTTPowerOneS3c                    t                      }d|_        d|_        d|_        d|_        d|_        d|_        d|_        || _        |j        |j        |j        |j        d| _	        d	d
i| _
        t          j        | _        d S )NrE   r9   rc   gk?greaterre   rf   rg   rl   largerrh   rp   s     r   rq   zTestTTPowerOneS3.setup_class   s     xx &
$	;#'646"ntzC C'2.r   Nrr   r   r   r   rz   rz      rt   r   rz   c                   $    e Zd Zed             ZdS )TestTTPowerOneS4c                    t                      }d|_        d|_        d|_        d|_        d|_        d|_        d|_        || _        |j        |j        |j        |j        d| _	        dd	i| _
        t          j        | _        d S )
NrD   rc   gwoƔ?r|   re   rf   rg   rl   r}   rh   rp   s     r   rq   zTestTTPowerOneS4.setup_class   s     xx '
$	;#'646"ntzC C'2.r   Nrr   r   r   r   r   r      rt   r   r   c                   $    e Zd Zed             ZdS )TestTTPowerOneS5c                    t                      }d|_        d|_        d|_        d|_        d|_        d|_        d|_        || _        |j        |j        |j        |j        d| _	        d	d
i| _
        t          j        | _        d S )NrD   r<   rc   g ~x?lessre   rf   rg   rl   smallerrh   rp   s     r   rq   zTestTTPowerOneS5.setup_class   s     xx )
!	;#'646"ntzC C'3.r   Nrr   r   r   r   r   r      rx   r   r   c                   $    e Zd Zed             ZdS )TestTTPowerOneS6c                    t                      }d|_        d|_        d|_        d|_        d|_        d|_        d|_        || _        |j        |j        |j        |j        d| _	        d	d
i| _
        t          j        | _        d S )NrD   gɿrc   g%?r   re   rf   rg   rl   r   rh   rp   s     r   rq   zTestTTPowerOneS6.setup_class   s     xx %
!	;#'646"ntzC C'3.r   Nrr   r   r   r   r   r      rx   r   r   c                   $    e Zd Zed             ZdS )TestTTPowerTwoS1c                    t                      }d|_        d|_        d|_        d|_        d|_        d|_        d|_        || _        |j        |j        |j        |j        dd| _	        i | _
        t          j        | _        d S )	NrE   r9   rc   g?'Ow?rd   n is number in *each* group#Two-sample t test power calculationr#   r"   r$   r   ratior	   ri   rj   rk   r   rl   rm   rn   r   r   r   rK   TTestIndPowerr   rp   s     r   rq   zTestTTPowerTwoS1.setup_class  s    
 xx&
&1	;#'6DF"ntzAO O#r   Nrr   r   r   r   r   r     -        $ $ [$ $ $r   r   c                   $    e Zd Zed             ZdS )TestTTPowerTwoS2c                    t                      }d|_        d|_        d|_        d|_        d|_        d|_        d|_        || _        |j        |j        |j        |j        dd	| _	        i | _
        t          j        | _        d S )
NrD   r;   rc   g|6?rd   r   r   r9   r   r   rp   s     r   rq   zTestTTPowerTwoS2.setup_class  s     xx (
&1	;#'6DF"ntzAO O#r   Nrr   r   r   r   r   r     r   r   r   c                   $    e Zd Zed             ZdS )TestTTPowerTwoS3c                    t                      }d|_        d|_        d|_        d|_        d|_        d|_        d|_        || _        |j        |j        |j        |j        dd| _	        d	d
i| _
        t          j        | _        d S )NrE   r9   rc   gE?r|   r   r   r   rl   r}   r   rp   s     r   rq   zTestTTPowerTwoS3.setup_class/  s     xx &
$1	;#'6DF"ndj1N N'2#r   Nrr   r   r   r   r   r   -  r   r   r   c                   $    e Zd Zed             ZdS )TestTTPowerTwoS4c                    t                      }d|_        d|_        d|_        d|_        d|_        d|_        d|_        || _        |j        |j        |j        |j        d| _	        d	d
i| _
        t          j        | _        d S )NrE   rH   rc   g}B_?r|   r   r   r#   r"   r$   r   rl   r}   r   rp   s     r   rq   zTestTTPowerTwoS4.setup_classF  s     xx '
$1	;#'6DF"ndjB B'2#r   Nrr   r   r   r   r   r   C  /         $ $ [$ $ $r   r   c                   $    e Zd Zed             ZdS )TestTTPowerTwoS5c                    t                      }d|_        d|_        d|_        d|_        d|_        d|_        d|_        || _        |j        |j        |j        |j        dd	| _	        d
di| _
        t          j        | _        d S )NrD   rE   r;   rc   gۧ4?rd   t test power calculation      ?r   rl   z	two-sidedr	   n1n2rj   rk   r   rl   rn   r   r   r   rK   r   r   rp   s     r   rq   zTestTTPowerTwoS5.setup_class]  s     xx '
&0#'6DG"ndj3P P'5#r   Nrr   r   r   r   r   r   Z  r   r   r   c                   $    e Zd Zed             ZdS )TestTTPowerTwoS6c                    t                      }d|_        d|_        d|_        d|_        d|_        d|_        d|_        || _        |j        |j        |j        |j        dd	| _	        d
di| _
        t          j        | _        d S )NrD   rE   r;   rc   gSꢸ?r|   r   r   r   rl   r}   r   rp   s     r   rq   zTestTTPowerTwoS6.setup_classt  s     xx (
$0#'6DG"ndj3P P'2#r   Nrr   r   r   r   r   r   q  r   r   r   c                     d} d}d}d}t          j        ||dz  d          }t          j                                        ||d          }t          j                                        dddd           }d}t          ||d	           t          ||d	           t          ||d	           t          j        d
|dz  d          }d}	t          ||	d	           t          j                                        d|dd          }d}	t          ||	d	           t          j                                        d
|dd          }d}	t          ||	d	           d S )Nr9   r=   P   rc   g       @r   kGZ{h?   r   g{Gzgթ?   rH   r}   )rl   gJy ?7!n?)rK   normal_powerNormalIndPowerr   r2   r   )
sigmarj   r!   r$   r   r   res3res_Rnorm_pow
norm_pow_Rs
             r   test_normal_power_explicitr     s   EADEAtBw--D%%at44D++2TY]+^^DEeR0000eR0000eR0000 tBw55H$J*b9999!##))$d6> * @ @H%J*b9999 !##))%t6> * @ @H#J*b999999r   c                   $    e Zd Zed             ZdS )TestNormalIndPower1c                    t                      }d|_        d|_        d|_        d|_        d|_        d|_        d|_        || _        |j        |j        |j        |j        dd	| _	        i | _
        t          j        | _        d S )
Nr   r=   rc   r   rd   re   two sample power calculationr9   r   r	   ri   rj   rk   r   rl   rm   rn   r   r   r   rK   r   r   rp   s     r   rq   zTestNormalIndPower1.setup_class  s     xx&
&	4#'6DF"ndj1N N$r   Nrr   r   r   r   r   r     s-        % % [% % %r   r   c                   $    e Zd Zed             ZdS )TestNormalIndPower2c                    t                      }d|_        d|_        d|_        d|_        d|_        d|_        d|_        || _        |j        |j        |j        |j        dd	| _	        d
di| _
        t          j        | _        d S )NrH   r   rc   r   r   z]Difference of proportion power calculation for binomial distribution (arcsine transformation)zsame sample sizesr9   r   rl   r   )r	   hri   rk   r   rl   rn   rm   r   r   r   rK   r   r   rp   s     r   rq   zTestNormalIndPower2.setup_class  s    xx '
!H'	#'6DF"ndj1N N'	2$r   Nrr   r   r   r   r   r     s-        % % [% % %r   r   c                   $    e Zd Zed             ZdS )TestNormalIndPower_onesamp1c                    t                      }d|_        d|_        d|_        d|_        d|_        d|_        d|_        || _        |j        |j        |j        |j        d| _	        d	d
i| _
        t          j        | _        d S )N(   r=   rc   r   rd   re   r   r   r   r   r   rp   s     r   rq   z'TestNormalIndPower_onesamp1.setup_class  s    
 xx&
&	4#'6DF"ndjB B "1$r   Nrr   r   r   r   r   r     s-        % % [% % %r   r   c                   $    e Zd Zed             ZdS )TestNormalIndPower_onesamp2c                     t                      }d|_        d|_        d|_        d|_        d|_        d|_        || _        |j        |j        |j        |j        d| _        dd	d
| _	        t          j        | _        d S )NrH   r   rc   r   r   zBMean power calculation for normal distribution with known variancer   r   r   )r   rl   )r	   rj   ri   rk   r   rl   rn   r   r   r   rK   r   r   rp   s     r   rq   z'TestNormalIndPower_onesamp2.setup_class  s     xx '
!Z#'6DF"ndjB B $%I>>$r   Nrr   r   r   r   r   r     s/         % % [% % %r   r   c                   *    e Zd Zed             Zd ZdS )TestChisquarePowerc                    t                      }d|_        d|_        d|_        d|_        d|_        d|_        d|_        || _        |j        |j        |j        |j        d| _	        d	|j        d
z   i| _
        t          j        | _        d S )Nr;         rc   gޢ}ܪ?zChi squared power calculationzN is the number of observationsrg   n_binsr9   )r	   wNdfrk   r   rn   rm   r   r   r   rK   GofChisquarePowerr   rp   s     r   rq   zTestChisquarePower.setup_class  s     xx(
55	#'646"ndjB B #DGaK0'r   c                 <   |                                  }g d}t          j        | j                  d=                     | j                   fd|D             }t          | d          r| j        }nd}t           |j        | | j	        j        |           d S )N)r#   r!   r$   r   r   c                      g | ]
}|         S r   r   r'   s     r   r*   z6TestChisquarePower.test_positional.<locals>.<listcomp>(  s    000cS	000r   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    xxzz>>>
y##MDO$$$0000Z0004## 	lGGGJDJ-tyPPPPPPr   N)r[   r\   r]   rs   rq   r.   r   r   r   r   r   
  sA        ( ( [((Q Q Q Q Qr   r   c                  >   dD ]C} t          j        dd|           }t          j        ddd| d          }t          ||d	           Dt          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	           d S )N)rH   rc   r;   r<   r>   rH         r9   r   )r$   nccr   r         ?8d`?rC   )k_groupsAf?r   r   g\L?%Multiple regression power calculation
ףp=
?gd)~?   r;   Ōh,]#?)rK   ttest_powerftest_powerr   ftest_anova_powerr	   uvf2rk   r   rn   rT   sqrt)r$   res0r   r   s       r   test_ftest_powerr   1  s    / 3 3tS%00tS!5a@@@D$22222  sFR@@@DDdA....
 88D DFDFDGDN#DJ9DK?2747++TVTV!%Q8 8 8Ddj!444488D DFDFDGDN#DJ9DK?2747++TVTV!%Q8 8 8Ddj!444488D DFDFDGDN"DJ9DK?2747++TVTV!%Q8 8 8Ddj!444444r   c                   $    e Zd Zed             ZdS )TestFtestAnovaPowerc                    t                      }d|_        d|_        d|_        d|_        d|_        d|_        || _        |j        |j        |j        |j        d| _        d|j        i| _	        t          j        | _        d	| _        d S )
Nr   r   rC   r   r   r   rg   r   r   )r	   fri   kr$   r   rn   r   r   r   rK   FTestAnovaPowerr   r   rp   s     r   rq   zTestFtestAnovaPower.setup_classw  s    xx 

=#'646"j4:? ? %df-%r   Nrr   r   r   r   r   r   u  s-          [  r   r   c                   *    e Zd Zed             Zd ZdS )TestFtestPowerc                 D   t                      }d|_        d|_        d|_        d|_        d|_        d|_        || _        t          j	        |j                  |j        |j        |j        |j        d| _
        i | _        g d| _        t          j        | _        d| _        d S 	Nr   r   r   r;   r   r   )r#   df_numdf_denomr$   r   )r#   r   r   r$   )r	   r   r   r   rk   r   rn   r   rT   r   r   r   r    rK   rL   r   r   rp   s     r   rq   zTestFtestPower.setup_class  s    xx &
=#%747#3#3tv!%$."j* *
 GGG.r   c                 x   t          j        t                    5  t          j                                        ddddd            d d d            n# 1 swxY w Y   t          j        t                    5  t          j                                        ddddd           d d d            d S # 1 swxY w Y   d S )Nr=   r;   ?r8   )r#   r$   r   r   r!      )r#   r$   r   r   junk)rN   warnsUserWarningrK   rL   r2   raises
ValueError)r   s    r   test_kwargszTestFtestPower.test_kwargs  s?   \+&& 	 	N((s# )   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	
 ]:&& 	 	N((s# )   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s#   ,AAA6,B//B36B3N)r[   r\   r]   rs   rq   r   r   r   r   r   r     s<          [.
 
 
 
 
r   r   c                   $    e Zd Zed             ZdS )TestFtestPowerF2c                     t                      }d|_        d|_        d|_        d|_        d|_        d|_        || _        |j        |j        |j        |j        |j        d| _        i | _	        g d| _
        t          j        | _        d| _        d S r   )r	   r   r   r   rk   r   rn   r   r   r   r    rK   rM   r   r   rp   s     r   rq   zTestFtestPowerF2.setup_class  s    xx &
=#'7df!%$."j* *
 GGG"r   Nrr   r   r   r   r   r     s-          [  r   r   c            
         t          j                    } d}|                     |ddd dd          }t          |dd	           |                     d dd|dd          }t          ||d
	           t	          | j        d         d           t	          t          | j                  d           ddd| j        d<   d| j        d<   |                     d dd|dd          }t          ||d
	           t	          | j        d         d           t	          t          | j                  dt          | j                             t          j        | j        d<   |                     d dd|dd          }t          ||d
	           t	          | j        d         d           t	          t          | j                  d
           |                     dddd           }t          |d           t          t          | j        d ddddd           t          j        t                     5  t          j        t                    5  |                     d ddddd           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr;   @  rH   r9   r}   r"   r$   r   r   rl   lDt&?r   r   r   r   r8   iupplowr#   gQ?r   )r1   )r"   r$   r#   r   g{Gzt?)r"   r#   r$   r   r   rl   )rK   r   r2   r   r   cache_fit_reslenstart_bqexp	start_ttpreprrT   nanr   r   rN   r   r
   r   )nipes0pow_rB   s       r   test_power_solverr    s`    


C C??3d$d!'/  1 1D 11====	TT%- 
 
/ 
/BC++++"1%q)))S&''+++ .1%=%=COM"#'CM- 	TT%- 
 
/ 
/BC++++"1%q)))S&''D9J4K4KLLLL#%6CM- 	TT%- 
 
/ 
/BC++++"1%q)))S&''+++ 
t4Qd	K	KBD!!!
 *cot4tQH> > > > 
+	,	, H H]:&& 	H 	HOO$AT"'qh  H H H	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	HH H H H H H H H H H H H H H H H H Hs6   #I==I%I=%I)	)I=,I)	-I==JJz%Known failure on modern SciPy >= 0.10T)reasonstrictc            
         d} t          j                    }ddd|j        d<   |                    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        dd d| dd	
           t          j                    5  t          j        d           |                    dd d| dd	
          }t          |j        d         d           t          t          |j                  d           d d d            d S # 1 swxY w Y   d S )Nr  rF   r  r  r"   r;   rH   r9   r}   r  r  r   r   r   r   )ConvergenceWarningignore)rK   r   r
  r2   r   r   r  r	  rT   r  r  statsmodels.tools.sm_exceptionsr  r   warningscatch_warningssimplefilter)r  r  valr  s       r   test_power_solver_warnr    s    D



C')#66COG
//#TT&.  0 0C T1----"1%q)))S&''+++  VCM'BBBBBB#S_cDxI I I I
 
	 	"	" 0 0h'''oocTQ*2  4 4S&q)1---S*++Q///0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0s   A-EEEc                      t          j        ddddd            t          j        g d          } t          j        g d          }t          j        d|| dd          }t	          ||| k             d           d S )	Nr   皙?rc   r8   )std_alternative)rH   rc   r;   r>   r  )gGz?gffffff?r   r>   r<   r   )rK   normal_sample_size_one_tailrT   asarrayr   )alphaspowersnobs_with_zeross      r    test_normal_sample_size_one_tailr%  0  s     #AsD!TJJJJ Z33344FZ33344F5aANNOv'78!<<<<<r   )5__doc__r   r  numpyrT   numpy.testingr   r   r   r   r   r   rN   statsmodels.stats.powerstatsr   rK   (statsmodels.stats.tests.test_weightstatsr	   r  r
   matplotlib.pyplotpyplotrP   ImportErrorr   ra   rv   rz   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r^   xfailr  r%  r   r   r   <module>r0     s         K K K K K K K K K K K K K K K K  % % % % % % % % % ; ; ; ; ; ; A A A A A A	####### 	 	 	D	M1 M1 M1 M1 M1 M1 M1 M1x! ! ! ! ! ! ! !,! ! ! ! ! ! ! !.! ! ! ! ! ! ! !,! ! ! ! ! ! ! !,! ! ! ! ! ! ! !.! ! ! ! ! ! ! !0$ $ $ $ $ $ $ $,$ $ $ $ $ $ $ $,$ $ $ $ $ $ $ $,$ $ $ $ $ $ $ $.$ $ $ $ $ $ $ $.$ $ $ $ $ $ $ $2 :  :  :D% % % % %/ % % %*% % % % %/ % % %.% % % % %/ % % %0% % % % %/ % % %4#Q #Q #Q #Q #Q #Q #Q #QNA5 A5 A5H    /   F$ $ $ $ $_ $ $ $N       8.H .H .Hd A$OO0 0 PO0D= = = = =s   A   AA