
    M/PhRV                     j   d Z ddlZddlmZmZ ddlZddlmZ ddl	m
c mZ ddlm
c mZ ddlmZmZmZmZmZmZmZmZmZmZmZmZ ddlmZ ddlmZm Z m!Z! d Z"d	 Z#d
 Z$d Z%ej&        '                    dg d          d             Z( G d d          Z) G d d          Z* G d d          Z+d Z,dS )zM
Created on Wed Mar 18 17:45:51 2020

Author: Josef Perktold
License: BSD-3

    N)assert_allcloseassert_equal)OLS)confint_effectsize_onewayconfint_noncentralityeffectsize_onewayanova_onewayanova_genericequivalence_onewayequivalence_oneway_genericpower_equivalence_oneway_power_equivalence_oneway_empf2_to_wellekfstat_to_wellekwellek_to_f2)scale_transform)wald_test_noncent_genericwald_test_noncent_offset_constraintc                     d} d}d}d}t          | ||fdd          }t          | ||fd          }|j        t          j        d	          z  }d
dg}t          j        ddg          }t          ||d           t          |j        |d           t          ||d           t          |j        dz  ||z  d           t          |j        |d           d S )N      L   P   皙?z	two-sided)alphaalternativer   gUUUUUU?gׁsF?g?gj+?gMbH@@-C6?atolgiUMu?   )	r   r   ci_fnpsqrtasarrayr   ci_f_correctedci_nc)	Fdf1df2nobscici_es
ci_steigerres_ci_steiger	res_ci_ncs	            c/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/statsmodels/stats/tests/test_oneway.pytest_oneway_effectsizer3      s   	A
C
CD	q3*D+6
8 
8 
8B &a#s4@@@Ebgenn,Jf%N
FF+,,IB	////E(.wGGGGJW====EJM9t#3'BBBBEK888888    c                  J   d} g d}d}d}t          |||dd          }t          j        |          }d}d	}|| z  }||||| d
}ddlm}	 d}
d}|                                }|d=   |	            j        di |}t          ||
d           t          ||d           t          j        g d          }||d<   t          |||dd          }t          j        |          }||d<     |	            j        di |}d}
d}t          ||
d           t          ||d           d S )Nr   )g{G~@g=
ףp@gQI@ga:@   equalr   )use_varddof_betweenr   g?)effect_sizer,   r   powerk_groups)FTestAnovaPowergH}8g?gS?r;   r   r    a2U0*C?)   	   r@   r,   r:   g鷯?gzG?g{Gzt? )	r   r$   r%   statsmodels.stats.powerr=   copyr;   r   array)n_groupsmeansvars_r,   esr   r;   nobs_tkwdsr=   res_powres_eskwds_ps                 r2   test_effectsize_powerrO   2   s   H$$$EED	5%wQ	O	O	OB	BEEH_Fv " "D 877777GFIIKKEg((%((AAwV,,,,BV,,,, 8JJJDDL	5%wQ	O	O	OB	BD((%((AGFAwU++++BV,,,,,,r4   c                  t   d} d}d}d}d}d}d}d}d	\  }}	}
t          j        ||	|
f          }t          t          j        |j                  |d
           t          |j        | d
           t          |j        |d
           t          |j        |d
           t          ||	|
fd          }t          j        ||	z  |	|
f          }t          |j        |d           t          |j        |d           t          |j        |d           t          t          j        |j                  |d           d S )Ng0b?)gޯ}?g{2d?gC!V?)g5K?g?gQ6?)g\C?gI?g.?)g?g@)gfffffF@r   #   vIh%<=rtol皙?r   g-C6*?)
smo_fstat2effectsizer   r$   r%   f2eta2eps2omega2r   )Eta_Sq_partialCI_eta2Epsilon_Sq_partialCI_eps2Omega_Sq_partial	CI_omega2Cohens_f_partialCI_ff_statr*   r+   fesr(   r.   s                 r2   test_effectsize_fstatrf   Y   sV    'N2G*2G(3I'-D"FC

c

3
3CBGCFOO%5EBBBBCHn59999CH0u====CJ 0u====!&3*C@@@E!%#+Sz::EEJd3333EJd3333EL)$7777BGEH%%t$777777r4   c                  J   d} d}d}d}d}d}d\  }}}t          j        |||f          }	t          |	j        | d	           t          |	j        |d
	           t          j        |||fd          }
t          |
j        ||fd	           t          |
j        ||fd	           d S )Ng|i?g_`?gퟲa?g,)?gb8?g!?)ghh@r"   (   rR   rS   g{Gz?rU   r   r   g?)rV   rW   r   rY   r[   r   	ci_omega2)rY   lb_eta2ub_eta2r[   	lb_omega2	ub_omega2rd   r*   r+   re   r.   s              r2   test_effectsize_fstat_statarn   y   s    
 D G GF"I"I /FC

c

3
3CCHd////CJT2222)&3*CHHHEEJ' 2>>>>EOi%;%HHHHHHr4   center)medianmeantrimmedc                 x   t           j                            dd          }t          || ddd          }t          |j        | ddd          }t          |j        |d	           t          |d d df         | dd
          }t          ||d d df         d	           t          ||dd d f         d	           d S )Nr   r   abs皙?r   )ro   	transform	trim_fracaxis   rR   rS   )ro   rv   rw   )r$   randomrandnr   Tr   )ro   xxtxttxt0s        r2   test_scale_transformr      s    
	1A	6Uc
! 
! 
!B
!#f " " "CBD#E****
!AAAqD'&E$') ) )CCAAAqD....CQT//////r4   c                   0    e Zd Zed             Zd Zd ZdS )TestOnewayEquivalencc                 z   g d}g d}g d}g d}d}d ||||fD             }t          j        d |D                       }t          j        |          }t          j        d |D                       }	t          j        d	 |D                       }
|| _        |	| _        || _        |
| _        || _        || _        d S )
N
gZd;\@gZd;Y@gtU@gZd;OmY@gxW@g${Z@g\(W@gKV@g-吏Y@gK7Y@gmY@g}Y@gbX9X@gx~Z@g㥛 V@gd;OY@gv_Z@g|?5^X@gT㥛ĈW@gMbX@gsh|WV@gVZ@g/$6U@gZd;Y@gF]@gvY@g/$IW@gK7A[@gq=
ףX@gQ@V@g[@gL7A`T@g-Y@gw/Y@g?5^IZ@g4Y@gQY@gZd;Y@gQNW@gW@gOnY@g     W@gK7AZ@g9vX@g(\X@g(\X@gB`"Z@gNbX9,W@gvGW@gd;OX@   c                 6    g | ]}t          j        |          S rA   )r$   r&   .0yis     r2   
<listcomp>z4TestOnewayEquivalenc.setup_class.<locals>.<listcomp>   s     <<<R"*R..<<<r4   c                 ,    g | ]}t          |          S rA   lenr   s     r2   r   z4TestOnewayEquivalenc.setup_class.<locals>.<listcomp>   s    444r3r77444r4   c                 6    g | ]}|                                 S rA   rq   r   s     r2   r   z4TestOnewayEquivalenc.setup_class.<locals>.<listcomp>   s     777"BGGII777r4   c                 :    g | ]}|                     d           S ry   )ddofstdr   s     r2   r   z4TestOnewayEquivalenc.setup_class.<locals>.<listcomp>   s$    ;;;b266q6>>;;;r4   )	r$   r&   rq   datarF   r,   stdsrE   	nobs_mean)clsy0y1y2y3rE   arrs_wr,   r   rF   r   s              r2   setup_classz TestOnewayEquivalenc.setup_class   s   0 0 0@ @ @  & & & <<BB+;<<<z44V44455GDMM	
7777788z;;F;;;<<	!r4   c           	         | j         }| j        }| j        }| j        }d}t	          ||dz  |d          }|j        }t          |||                                ||j        dd          }t          |j
        dd	
           t          |j        ddg           t          |dd
           t          | j        |dd          }t          |j
        dd	
           t          |j        ddg           d S )N      ?r"   r7   r8   r   wellekr   margin_typegSt$?MbP?r    r   .   g3?r>   r8   r   )rF   r,   r   rE   r
   	statisticr   sumdfr   pvaluer   r   r   )	selfrF   r,   r   rE   epsres0fress	            r2   test_equivalence_equalz+TestOnewayEquivalenc.test_equivalence_equal   s
   
yy=UD!GT7CCCN(Hdhhjj#)-5=? ? ? 	
F7777SVaW%%% 	6//// C-57 7 7
F7777SVaW%%%%%r4   c           	         | j         }| j        }| j        }| j        }|dz  }d}t	          |||dd          }|j        }t          |||                                ||j        dd          }	t          |	j
        d	d
           t          |	j        ddgd           t          |dd           t          | j        |dd          }	t          |	j
        d	d           t          |	j        ddgd           t          |	j        dd           t          |||||j                  }
t          |
dd           t          |||                                |d dd          }
t          |
dd           |                                }t!          |||d          }t#          j        |          }t'          |dz  |          }t#          j        t)          ||||z                      }t          ||||d dd          }
t          |
dd           t          ||d           t+          ||          }t          |dz  |||d dd          }
t          |
dd           d S )Nr"   r   unequalF)r8   welch_correctionr   r   r   gI+?r   r    g      @ge`TR6@r>   gK46?y&1|?r   r   gj+?rE   r   r   r   rR   r   rX   )rF   r,   r   rE   r
   r   r   r   r   r   r   r   r   rd   r   r   r   r$   r%   r   r   r   )r   rF   r,   r   rE   rG   r   r   rd   r   pow_rI   rH   es_w0es_wmargins                   r2   test_equivalence_welchz+TestOnewayEquivalenc.test_equivalence_welch   s   
yy=aUE4.35 5 5(488::s)-5=? ? ? 	
F7777gV<<<< 	U3333 C-57 7 7
F6666gV<<<<
F6666 -VXtS-1W6 6f51111'S$((**19d$4<> > > 	d////ueT9EEEWR[[RUH--wvx(9JKKLL'c619d$4<> > > 	f51111t%0000c8,,'Avv19d$48: : : 	f5111111r4   N)__name__
__module____qualname__classmethodr   r   r   rA   r4   r2   r   r      sK        " " ["2& & &052 52 52 52 52r4   r   c                   <    e Zd Zed             Zd Zd Zd Zd ZdS )TestOnewayScalec                 `   t          j        g d          }t          j        g d          }t          j        g d          }t          j        g d          }t          j        g d          }t          j        g d          }d}|||g}t          j        d |D                       }	t          j        |	          }
t          j        d	 |D                       }t          j        d
 |D                       }|| _        |||g| _        || _        |	| _        || _        || _	        |
| _
        d S )N)g     Y@g      t@        g     Z@g     h@g      i@g      @      4@g     [@g      `@g      @     ]@g     Ps@)r   g      ?g     l@g     @T@g     U@r   g     S@g     f@g     E@g      (@g     V@     @Z@g      [@r   r   g      "@)g     @@g     `r@g     `@g      k@g     T@r   g     @Q@r   r   g     O@g     X@g     `c@g     S@g     R@)g     @|@g     P@g     P@g     {@g     @v@g     @g     p@g     @g     @g     P@     @g     0{@g     n@)     @r   g     0@g     }@g     |@     Ȅ@g     0}@g     v@g     h@g     @g     |@g     X@     p@r   r   g     Ȁ@)g     @g     |@g     @g     @g     @g     Ȋ@g     @g      @g     @g     @r   g     @g     @g     ؉@r   c                 ,    g | ]}t          |          S rA   r   r   s     r2   r   z/TestOnewayScale.setup_class.<locals>.<listcomp>  s    222r3r77222r4   c                 6    g | ]}|                                 S rA   r   r   s     r2   r   z/TestOnewayScale.setup_class.<locals>.<listcomp>   s     555"BGGII555r4   c                 :    g | ]}|                     d           S r   r   r   s     r2   r   z/TestOnewayScale.setup_class.<locals>.<listcomp>!  s$    999b266q6>>999r4   )r$   rD   r&   rq   r   data_transformedrF   r,   r   rE   r   )r   yt0yt1yt2r   r   r   rE   r   r,   r   rF   r   s                r2   r   zTestOnewayScale.setup_class  s   h ' ' ' ( ( h 1 1 1 2 2h , , , - - X / / / 0 0X A A A B BX 5 5 5 6 6 B|z22T22233GDMM	
5555566z99D999:: #S#	!r4   c                     d}ddg}d}t          | j        d          }t          |j        |d           t          |j        |d           t          |j        |j        g|           d S )	Ngk#Io@r"   gqk?@gO=L@g?bfr   rR   rS   )r	   r   r   pvalue2r   df_num2df_denom)r   r   	parameterp_valuer   s        r2   
test_meanszTestOnewayScale.test_means*  s|     %	()	%49d333 	W59999yu====cl3Y?????r4   c                    | j         }d}d}t          j        |dddd          }t          |j        |d	           t          |j        |d	           d
}d}ddg}t          j        |dddd          }t          |j        |d	           t          |j        |d	           t          |j        |           d}ddg}d}t          j        |dddd          }t          |j        |d	           t          |j        |d	           t          |j        |           d}d}ddlm}  |j	        | \  }}	t          |	|d	           t          ||d	           d S )Ng>b?g47?r7   rp   rt   ru   methodro   rv   trim_frac_meanrR   rS   gS\?g@P,r?r"   rh   rr   gH[C?gHxBX`?rq   gǫ(@gY(jG?r   )stats)
r   rV   test_scale_onewayr   r   r   r   scipyr   bartlett)
r   r   r   r   r   r   r   r   statpvs
             r2   test_levenezTestOnewayScale.test_levene9  s   y $	!$T'(/4SJ J JW59999	>>>> %	#W$T')/4SJ J JW59999	>>>>$$$
 %	G	#$T'&/4SJ J JW59999	>>>>+++ %	# 	 !5>4(bG%0000ie444444r4   c                    | j         }d\  }}d}t          j        |dddd          }t          |j        |d	           t          |j        |d	           t          |j        |           d
\  }}d}d}d}t          j        |dddd          }t          |j        |d	           t          |j        |d	           t          |j        |           t          |j        |d	           t          |j        |           d\  }}d}t          j        |dddd          }t          |j        |d	           t          |j        |d	           t          |j        |           d\  }}d}t          j        |ddd d          }t          |j        |d	           t          |j        |d	           t          |j        |           t          j        |dddd          }t          | j         d          }t          |j        |j        d	           t          |j        |j        d	           t          |j        |j                   d S )N)gɚG?g}%?)       @g+\ \g8@r   rp   rt   ru   r   rR   rS   )gr q?g#P/?)gM?#ޖa>@g
vټO?)r"   r   r   )gQ7?g9vv?)r   g      D@r7   rq   square)gv\n?gx7YC?c                 0    t          j        | | z            S )N)r$   log)r}   s    r2   <lambda>z.TestOnewayScale.test_options.<locals>.<lambda>  s    q1u r4   r   identityr   )r   rV   r   r   r   r   r   r   r+   r   r	   )	r   r   r   r   r   r   p_value2r+   res2s	            r2   test_optionszTestOnewayScale.test_optionsg  s    y D	7%#D8.3CI I I
G%8888yu====###C	71%##Dh.3CI I I
G%8888yu====###XE::::%%%D	7#D.6sL L L
G%8888yu====SVR   C	7#D.E.E368 8 8 	
G%8888yu====### #D1.8N N NDIy999
DKe<<<<t~EBBBB(((((r4   c                    | j         }t          j        |dddd          }t          | j         dd          }t	          |j        |j        d           t	          |j        |j        d           t	          |j        |j                   t          j        |dd	dd          }t          | j         dd	          }t	          |j        |j        d           t	          |j        |j        d           t	          |j        |j                   d S )
Nr   r   r   r   )r   ro   rv   r   rR   rS   r   )r   rV   equivalence_scale_onewayr   r   r   r   r   )r   r   r   r   s       r2   test_equivalencez TestOnewayScale.test_equivalence  s   y *4Y235?A A A "$)S)DDD
DKe<<<<t~EBBBB(((*4T235?A A A "$)S$???
DKe<<<<t~EBBBB(((((r4   N)	r   r   r   r   r   r   r   r   r   rA   r4   r2   r   r   	  sn        " " ["<@ @ @,5 ,5 ,5\2) 2) 2)h) ) ) ) )r4   r   c                   *    e Zd Zed             Zd ZdS )TestOnewayOLSc                    g d}g d}g d}g d}dx| _         }||||gx| _        }t          j        d |D                       x| _        }t          j        t          j        |          |          }|d d d f         t          j        |          k                        t          j                  | _	        t          j
        |          | _        d S )Nr   r   r   r   r   c                 ,    g | ]}t          |          S rA   r   r   s     r2   r   z-TestOnewayOLS.setup_class.<locals>.<listcomp>  s    %=%=%="c"gg%=%=%=r4   )r<   r   r$   r&   r,   repeatarangeastypeint64exconcatenatey)	r   r   r   r   r   kr   r,   groupss	            r2   r   zTestOnewayOLS.setup_class  s    0 0 0@ @ @  & & & qr2r**4*%=%=%=%=%=>>>429Q<<..D/RYq\\199"(CCt$$r4   c           	      d   | j         }t          | j        | j                                                  }|j        j        }t          j        |          dd           }d|d d df<   t          j	        |j
        d                   }|                    |d          }|j        |j        }}|                                }	t          |j        |||	d d          }
t#          |
|j        |j        z  d           t'          |j        |||d d          }t#          ||
d           |
|z  }t)          j        |j        |j        | j        d	          }t#          ||d           d
}t/          j        t          j        |          |||d          }t/          j        t          j        |          |||d           }t#          ||d           |j        dz  }t7          ||j        |          }|                    |||z   fd          }t          ||||	d d          }t#          ||j        |j        z  d           t          ||||	d d          }t9          |j
        d                   D ]E}t          ||||dz            |||dz            |	d d          }t#          ||         |d           Fd S )Nry   r   T)scalar)diffjointrR   rS   r7   r   r   )ncc)r<   r   g      ?F)r<   r   r  r   fitmodelr,   r$   eyezerosshape	wald_testdf_numr   
cov_paramsr   paramsr   r   r   rV   r   scalesmpwrftest_powerr%   ftest_anova_powerr   range)r   r  res_olsrI   c_equalvwtr  r   cov_pnc_wtnc_wt2es_ols	es_onewayr   pow_ols
pow_oneway
params_altv_offwt_off	nc_wt_off	nc_wt_vecinc_wt_is                           r2   test_ols_noncentralityz$TestOnewayOLS.test_ols_noncentrality  s   Mdfdg&&**,,# 6!99QRR=.1HW]1%&& wt449bk""$$)'.'1e/34A A Ar|bi7eDDDD"7>7Aw(,D: : :E2222)'.'-*.)WF F F		6666#BGFOOXvu()+ + +,RWY-?-?67DB B B
%8888 ^d*
"7GNJGG""GQY#7"EE-j'1.3$dL L L		6#3fm#C"	$ 	$ 	$ 	$ .j'1.3$eM M M	w}Q'(( 	? 	?A/
GAAI<N01!a!e)e$6;= = =G IaL'>>>>>		? 	?r4   N)r   r   r   r   r   r)  rA   r4   r2   r   r     s<        % % [%&6? 6? 6? 6? 6?r4   r   c            
         dd} t          j        g d          | z  }t          j        g d          dz  }t          j        g d          }|                                d}g d}d	}t           j                            d
           t          j        |||||d|d          }|j        dk                        d          |z  }t          |g dd           g }	|D ]*}
t          ||||
          }|	
                    |           +t          |          fd|	D             }t          |g dd           d S )Nr   
   )r+  r6      r?   )r   r   ry   gQ?)ry   r"   r   r   g r?)r   r7   r   d   i rU   r   )rG   k_mcrw   options_varr   r   r   )g(\?g
ףp=
?gQ?r   r    r   c                 <    g | ]}t          |d dd          S )Nr   rX   r   )r   )r   es_r<   r   rI   s     r2   r   z-test_simulate_equivalence.<locals>.<listcomp>  sH     0 0 0! %VVh4t   0 0 0r4   )g[#qp?g?N0?gso?r   )r$   rD   r   rz   seedrV   !simulate_power_equivalence_onewayr   r   r   appendr   )k_replr,   rF   rG   r   opt_varr/  res_mcfrac_reject	es_alt_liuvrH   r   r<   r   rI   s                @@@r2   test_simulate_equivalencer<    s    HF8$$$%%.DH]]]##d*EH\\\""EXXZZF
C(((GDINN62tSDC3 3 3F =D(--a0047KK!3!3!3%@@@@ I  ueT2>>> #x((F0 0 0 0 0 0%.0 0 0D D888uEEEEEEr4   )-__doc__numpyr$   numpy.testingr   r   pytest#statsmodels.regression.linear_modelr   rB   r   r;   r  statsmodels.stats.onewayonewayrV   r   r   r   r	   r
   r   r   r   r   r   r   r    statsmodels.stats.robust_comparer   statsmodels.stats.contrastr   r   r   r3   rO   rf   rn   markparametrizer   r   r   r   r<  rA   r4   r2   <module>rH     s        7 7 7 7 7 7 7 7  3 3 3 3 3 3 ' ' ' ' ' ' ' ' ' & & & & & & & & &1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 = < < < < <F F F F F F F F F F9 9 9,$- $- $-N8 8 8@I I I, #@#@#@AA
0 
0 BA
0i2 i2 i2 i2 i2 i2 i2 i2Xf) f) f) f) f) f) f) f)RL? L? L? L? L? L? L? L?^"F "F "F "F "Fr4   