o
    `^hE                     @   sR   d dl Z d dlZd dlZd dlmZ d dlmZ d dlm	Z	m
Z
 G dd dZdS )    N)assert_allclose)stats)_pvalue_dunnettDunnettResultc                   @   s  e Zd Zg dg dg dddgdggZg dZg dZg d	Zg d
Zg dZg dZ	g dg dgZ
g dZg dZeeeedZee
eedZeeee	eedZg dg dgZg dZddgZddgZddgZddgZddgZd d!gd"d#ggZd$d%gZd&d'gZeeeedZeeeedZeeeeeedZg d(g d)g d*gZg d+Zg d,Z g d-Z!g d.Z"g d/Z#g d0Z$g d1g d2gZ%g d3Z&g d4Z'ee!e#e"dZ(ee%e'e&dZ)eeee$e(e)dZ*g d5g d6gZ+g d7Z,d8d9gZ-d:d;gZ.d<d=gZ/d>d?gZ0d@dAgZ1dBdCgdDdEggZ2dFdGgZ3dHdIgZ4ee.e0e/dZ5ee2e4e3dZ6ee+e,e1e5e6dZ7e8j9:dJdKdLdMdNdOdPdQdRdSdTdUdVdWgdXdYgdZfd[d\d]d^d_d`dadbdSdTdUdcddgdXdYgdefgdfdg Z;e8j9:dheeee	feeeefeee e$fe+e,e-e1fgdidj Z<e8j9:dkg dldmdn Z=e8j9:dodpdqdrgfdZdrdqgfdedqdqgfgdsdt Z>e8j9:dueee*e7ge8j9:dkg dvdwdx Z?e8j9:dkg dldydz Z@d{d| ZAd}d~ ZBe8j9Cde8j9:dg ddd ZDdS )TestDunnett)      8@      ;@g     @@      @@      <@      3@g     B@      ?@      B@r         A@      C@r	   r   r	   )	      :@r   r         9@      =@g     =@     0@r   g      F@)r   r   r   r         4@r
   )@      2@      .@r         0@g      1@r         ,@r   r   r   r   r   r   r         6@r         5@r         $@r   g      &@g      "@r   r        1@r   g      /@g      -@r   r   r   g     6@r   g     8@r   r   g     2@r   g     :@      *@r   r   r   r   r
   r   r   r   r   r   r   g      7@r   r   r   r   r   r   r   r   r   r	   r
   r   )gCRݓ>gG!ɬ?g0[wT?@ޫV&?gۅ:?)-C6?geI)?g
pU?r   gi?)r   gmFA?gd;O?g9x&?gφ3x?)   r    g1%?g`|?r   )g @g>yX5M@gezFw?gQH?g:ǀ?)g#t@gX?gw퉥 g@Rr'g')gg!O$/@gj
s+@g"4P*@g@RrI-@g9@)gS@g.Ĩf?gbHgڨ%g61#)g@y.@g 4r*@gy.ꕯ(@g*@g]f7@)twosidedlessgreater)samplescontrol	statisticpvaluescis)gQ#@g!@gQ@gQ"@)g)@g\(\#@gRQ(@gffffff"@g%@)g@g      !@g@g{Gz @gGz#@gp=
ף @g?gw?gE&?g$_w?g8n?gǥ&g?gHV?gqt?g-l?ǧ@g,CgSE/:?g(s@g=pF]@gQglvm?gЬ̺$@g}Q@)7   @   r*   )r)   1   4   )2   ,   )   )r)   /   0   )g&S?g{?gX2ı.?)g4?gZՒr?gڧ1?)gr4?g(?gnŨk?)gAJi?gŬC9?gT?)g vй@g$~?g&lscz)gv:?gX~ gX~.)gI,A?5@gX~(@g$8@)gB8@g_cg/1+)ga33@gO7f2%@g=m@)gffffff@g@g      @g333333@)gffffff@g333333@g@g@g       @)333333@g      @g      @g@g	@g?g[ A?g(D!T?g77',?gMbX?g=,Ԛ?g_Fj?g )"*?gGz?g}iƢgQ2Ng`lg{Ug[?gxk|?g쑿Wg!%-L$gH0K?gC7v?z1rho, n_groups, df, statistic, pvalue, alternative)      ?r    
   g(\?皙?r#   )r3      r4   gQ@r5   r#   )r3         gףp=
?r5   r#   )r3      r8   gp=
ף@r5   r#   )r3         g(\
@{Gz?r#   )r3      r;   g{Gz@r<   r#   )r3   r7   <   gQ@r<   r#   )r3   r:   r>   (\@r<   r#   r3   r:   r>   r?   gGz@r<   r5   r#   )r3   r    r4   gףp=
@r5   	two-sided)r3   r6   r4   g{Gz@r5   r@   )r3   r7   r8   g(\@r5   r@   )r3   r6      g(\@r5   r@   )r3   r:   r;   gGz@r<   r@   )r3   r=   r;   gRQ@r<   r@   )r3   r7   r>   r2   r<   r@   )r3   r:   r>   Q	@r<   r@   rB   gffffff@r@   c           	      C   sV   t jd}t ||f|}t |d t |}t|||||d}t||dd d S )Nl	   <~(zh.W)| r    )rhodfr&   alternativerng{Gzt?atol)nprandomdefault_rngfullfill_diagonalarrayr   r   )	selfrC   n_groupsrD   r&   pvaluerE   rF   res rT   ^/home/air/shanriGPT/back/venv/lib/python3.10/site-packages/scipy/stats/tests/test_multicomp.pytest_critical_values   s   
z TestDunnett.test_critical_valuesz#samples, control, pvalue, statisticc                 C   sR   t jd}tj|||d}t|tsJ t|j|dd t|j	|ddd d S )Nl	   suVP}v*d r%   rF   g-C6
?)rtolr<   r   rX   rI   )
rJ   rK   rL   r   dunnett
isinstancer   r   r&   rR   )rP   r$   r%   rR   r&   rF   rS   rT   rT   rU   
test_basic   s
   
zTestDunnett.test_basicrE   )r@   r"   r#   c                 C   s   t jd}tdD ]7}|jdddd}|jdddd}tj||||d}tj|||d}t|j	|j	d	d
d t|j
|j
d	d
d q
d S )N	   Qyp^\j.sU r4   d   r4   size)r%   rE   random_state)rE   gMbP?h㈵>rY   )rJ   rK   rL   rangeintegersr   rZ   	ttest_indr   r&   rR   )rP   rE   rF   _sampler%   rS   refrT   rT   rU   test_ttest_ind   s   zTestDunnett.test_ttest_indzalternative, pvaluer"   r   r    c           	      C   s  t jd}|jdddd}|jdddd}|jdd	dd}tj|||||d
}t|j|dd | }|dkrft 	|j
 sBJ d|jd   k rPdk sSJ  J d|jd   k radk sdJ  J d S |dkrd|j
d   k rxdk s{J  J d|j
d   k rdk sJ  J t |j sJ d S |dkrd|j
d   k rdk sJ  J d|j
d   k rdk sJ  J d|jd   k rdk sJ  J d|jd   k rdk sJ  J d S d S )Nr]   r   rA   r`   ra   P   r_         r%   rE   rF   gHz>rH   r"   r^   ir>   r    r#   r@   )rJ   rK   rL   rf   r   rZ   r   rR   confidence_intervalisneginflowallhighisposinf)	rP   rE   rR   rF   sample_lessr%   sample_greaterrS   cirT   rT   rU   test_alternatives   s2   	"&""""""zTestDunnett.test_alternativescaser"   r#   r@   c                 C   s&  t jd}|d }|d }dddd}|d |d	d
 }tj||||d}t|j|ddd |d ||  }	|dkrC|	t jg}	n
|dkrMt j |	g}	|j	d u sTJ |j
d u s[J |jdd}
t|
j|	d ddd t|
j|	d ddd |j	|
u s~J |j
dksJ |jdd}||
u sJ d S )N	   ><Fl&\z]	a# r$   r%   r"   r#   r!   r{   r'   - ro   rG   r   rY   r(   gffffff?confidence_levelr   rd   r    )rJ   rK   rL   replacer   rZ   r   rR   inf_ci_ci_clrp   rr   rt   )rP   rz   rE   rF   r$   r%   alternativesp_refrS   ci_refrx   ci_rT   rT   rU   test_against_R_multicomp_glht&  s2   
z)TestDunnett.test_against_R_multicomp_glhtc                 C   s   t jd}tj| j| j||d}t|}d|v sJ d|v s"J |dkr4d|v s,J d|v s2J d S |dkrFd	|v s>J d
|v sDJ d S d	|vsLJ d|v sRJ d S )Nr|   ro   z(Sample 2 - Control)z95.0%r"   z-infz19.r#   r   z-13.z21.)rJ   rK   rL   r   rZ   	samples_3	control_3str)rP   rE   rF   rS   res_strrT   rT   rU   test_strF  s    
zTestDunnett.test_strc                 C   sf   t jd}tj| j| j|d}d}tjt	|d |j
dd W d    d S 1 s,w   Y  d S )Nr|   rW   z7Computation of the confidence interval did not convergematchrd   )tol)rJ   rK   rL   r   rZ   r   r   pytestwarnsUserWarning
_allowance)rP   rF   rS   msgrT   rT   rU   test_warnings^  s   
"zTestDunnett.test_warningsc                 C   s  | j | j}}tjtdd tj||dd W d    n1 s"w   Y  t|}|d g|d< tjtdd tj|d|i W d    n1 sMw   Y  t|}|g}tjtdd tj|d|i W d    n1 stw   Y  t|}g |d< tjtd	d tj|d|i W d    n1 sw   Y  g }tjtd	d tj|d|i W d    n1 sw   Y  tj|d|i}tjtd
d |j	dd W d    d S 1 sw   Y  d S )Nzalternative must ber   bob)r%   rE   r   zmust be 1D arraysr%   r    zat least 1 observationzConfidence level mustr6   r   )
r   r   r   raises
ValueErrorr   rZ   copydeepcopyrp   )rP   r$   r%   samples_control_rS   rT   rT   rU   test_raisesh  s6   


"zTestDunnett.test_raisesz$ignore:Computation of the confidence	n_samples)r    r7   r6   c                 C   s   t jd}|j|dfd}|jdd}tj|||d}|jj|fks&J |jj|fks/J |	 }|j
j|fks<J |jj|fksEJ d S )Nl   V=0(Lr4   ra   rW   )rJ   rK   rL   normalr   rZ   r&   shaperR   rp   rr   rt   )rP   r   rF   r$   r%   rS   rx   rT   rT   rU   test_shapes  s   zTestDunnett.test_shapesN)E__name__
__module____qualname__	samples_1	control_1pvalue_1p_1_twosidedp_1_greaterp_1_lessstatistic_1ci_1_twosidedci_1_greater	ci_1_lessdict	pvalues_1cis_1case_1	samples_2	control_2pvalue_2p_2_twosidedp_2_greaterp_2_lessstatistic_2ci_2_twosidedci_2_greater	ci_2_less	pvalues_2cis_2case_2r   r   pvalue_3p_3_twosidedp_3_greaterp_3_lessstatistic_3ci_3_twosidedci_3_greater	ci_3_less	pvalues_3cis_3case_3	samples_4	control_4pvalue_4p_4_twosidedp_4_greaterp_4_lessstatistic_4ci_4_twosidedci_4_greater	ci_4_less	pvalues_4cis_4case_4r   markparametrizerV   r\   rk   ry   r   r   r   r   filterwarningsr   rT   rT   rT   rU   r      s   C






		







"r   )r   numpyrJ   r   numpy.testingr   scipyr   scipy.stats._multicompr   r   r   rT   rT   rT   rU   <module>   s    