
    !gRV                     R   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jL                  jO                  dg d      d        Z( G d d      Z) G d d      Z* G d d      Z+d Z,y)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       y )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	            `/var/www/dash_apps/app1/venv/lib/python3.12/site-packages/statsmodels/stats/tests/test_oneway.pytest_oneway_effectsizer3      s    	A
C
CD	q3*D+6
8B &a#s4@Ebggen,Jf%N

FF+,IB	/E((.wGJW=EJJM9t#3'BEKK8    c                     d} g d}d}d}t        |||dd      }t        j                  |      }d}d	}|| z  }||||| d
}ddlm}	 d}
d}|j                         }|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       y )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	OB	BEEH_Fv "D 8GFIIKEg(%(AAwV,BV, 88JDDL	5%wQ	OB	BD(%(AGFAwU+BV,r4   c                     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       y )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   s    'N2G*2G(3I'-D"FC


c

3CBGGCFFO%5EBCHHn59CHH0u=CJJ 0u=!&3*C@E!!%#+Sz:EEJJd3EJJd3ELL)$7BGGEHH%t$7r4   c                  T   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	       y )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

3CCHHd/CJJT2))&3*CHEEJJ' 2>EOOi%;%Hr4   center)medianmeantrimmedc                 H   t         j                  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	       y )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BDD#E*
!AqD'&E$')CCAqD.CQT/r4   c                   (    e Zd Zed        Zd Zd Zy)TestOnewayEquivalencc                 :   g d}g d}g d}g d}d}||||fD cg c]  }t        j                  |       }}t        j                  |D cg c]  }t        |       c}      }t        j                  |      }	t        j                  |D cg c]  }|j                          c}      }
t        j                  |D cg c]  }|j	                  d       c}      }|| _        |
| _        || _        || _        || _	        |	| _
        y c c}w c c}w c c}w c c}w )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@   ry   ddof)r$   r&   lenrq   stddatarF   r,   stdsrE   	nobs_mean)clsy0y1y2y3rE   yiarrs_wr,   r   rF   r   s               r2   setup_classz TestOnewayEquivalenc.setup_class   s    0@& ,.B+;<R"**R.<<zzV4r3r745GGDM	

7"BGGI78zzF;b266q6>;<	! =47;s   D	DD>Dc           	         | j                   }| j                  }| j                  }| j                  }d}t	        ||dz  |d      }|j
                  }t        |||j                         ||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       y )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    

yyyy==UD!GT7CNN(Hdhhj#)-5=? 	

F7SVVaW% 	6/ C-57

F7SVVaW%r4   c           	      t   | j                   }| j                  }| j                  }| j                  }|dz  }d}t	        |||dd      }|j
                  }t        |||j                         ||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        |||j                         |d dd      }
t        |
dd       |j                         }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       y )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
   

yyyy==aUE4.35(488:s)-5=? 	

F7gV< 	U3 C-57

F6gV<

F6 -VXtS-1WW6f51'S$((*19d$4<> 	d/ueT9EWWR[RUH-wwvx(9JKL'c619d$4<> 	f51t%0c8,'Avv19d$48: 	f51r4   N)__name__
__module____qualname__classmethodr   r   r   rA   r4   r2   r   r      s    " "2&052r4   r   c                   4    e Zd Zed        Zd Zd Zd Zd Zy)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 	cg c]  }	t        |	       c}	      }
t        j                  |
      }t        j                  |D 	cg c]  }	|	j	                          c}	      }t        j                  |D 	cg c]  }	|	j                  d	       c}	      }|| _        |||g| _        || _        |
| _	        || _
        || _        || _        y c c}	w c c}	w c c}	w )
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   ry   r   )r$   rD   r&   r   rq   r   r   data_transformedrF   r,   r   rE   r   )r   yt0yt1yt2r   r   r   rE   r   r   r,   r   rF   r   s                 r2   r   zTestOnewayScale.setup_class  s;   hh ' ( hh 1 2hh , - XX / 0XX A BXX 5 6 B|zzT2r3r723GGDM	

5"BGGI56zzD9b266q6>9: #S#	! 359s   %E,&E1E6c                     d}ddg}d}t        | j                  d      }t        |j                  |d       t        |j                  |d       t        |j
                  |j                  g|       y )	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*  sb     %	()	%499d3 	W59yu=cll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	       y )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  sN   yy $	!$$T'(/4SJW59	> %	#W$$T')/4SJW59	>$
 %	G	#$$T'&/4SJW59	>+ %	# 	 !5>>4(bG%0ie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                         y )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                 2    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    yy D	7%##D8.3CI

G%8yu=#C	71%###Dh.3CI

G%8yu=#XE:%D	7##D.6sL

G%8yu=SVVR C	7##D.E368 	

G%8yu=# ##D1.8NDIIy9

DKKe<t~~EB(r4   c                 t   | 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                         y )
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    yy **4Y235?A "$))S)D

DKKe<t~~EB(**4T235?A "$))S$?

DKKe<t~~EB(r4   N)	r   r   r   r   r   r   r   r   r   rA   r4   r2   r   r   	  s+    " "<@,5\2)h)r4   r   c                   "    e Zd Zed        Zd Zy)TestOnewayOLSc                    g d}g d}g d}g d}dx| _         }||||gx| _        }t        j                  |D cg c]  }t	        |       c}      x| _        }t        j                  t        j                  |      |      }	|	d d d f   t        j                  |      k(  j                  t        j                        | _
        t        j                  |      | _        y c c}w )Nr   r   r   r   r   )r<   r   r$   r&   r   r,   repeatarangeastypeint64exconcatenatey)
r   r   r   r   r   kr   r   r,   groupss
             r2   r   zTestOnewayOLS.setup_class  s    0@& qr2r**4**%="c"g%=>>4299Q<.D/RYYq\199"((Ct$ &>s   Cc           	      |   | j                   }t        | j                  | j                        j	                         }|j
                  j                  }t        j                  |      dd   }d|d d df<   t        j                  |j                  d         }|j                  |d      }|j                  |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/        j0                  t        j2                  |      |||d      }t/        j4                  t        j2                  |      |||d       }t#        ||d       |j                   dz  }t7        ||j                   |      }|j                  |||z   fd      }t        ||||	d d      }t#        ||j$                  |j                  z  d       t        ||||	d d      }t9        |j                  d         D ]0  }t        ||||dz    |||dz    |	d d      }t#        ||   |d       2 y )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   MMdffdgg&**,## 66!9QR=.1HHW]]1%& wt499bkk""$)'..'1e/34Ar||bii7eD"7>>7Aw(,D:E2))'..'--*.))WF		6##BGGFOXvu()+,,RWWY-?67DB
%8 ^^d*
"7GNNJG""GQY#7"E-j'1.3$dL		6#3#3fmm#C"	$ .j'1.3$eM	w}}Q'( 	?A/
GAA<N01!a!ee$6;=G IaL'>		?r4   N)r   r   r   r   r   r  rA   r4   r2   r   r     s    % %&6?r4   r   c                  ~   d} d}t        j                  g d      |z  }t        j                  g d      dz  }t        j                  g d      }|j                         }d}g d}d	}t         j                  j	                  d
       t        j                  |||||d|d      }	|	j                  dk  j                  d      |z  }
t        |
g dd       g }|D ]"  }t        ||||      }|j                  |       $ t        ||       }|D cg c]  }t        |||| d dd       }}t        |g dd       y c c}w )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   rX   r   )g[#qp?g?N0?gso?r   )r$   rD   r   rz   seedrV   !simulate_power_equivalence_onewayr   r   r   appendr   r   )r<   k_replr,   rF   rG   rI   r   opt_varr!  res_mcfrac_reject	es_alt_liuvrH   r   es_r   s                    r2   test_simulate_equivalencer-    sF    HF88$%.DHH]#d*EHH\"EXXZF
C(GDIINN622tSDC3F ==D(--a047KK!3%@ I ueT2>
 #x(F &/0! %VVh4t 0D 0 D8uE	0s   D:)-__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>r9     s     7  3 ' ' & &1 1 1 1 =F F9,$-N8@I, #@A
0 B
0i2 i2Xf) f)RL? L?^"Fr4   